タイニー番組ナビゲータ本体
Revisión | 0bfdfd27b6bc570a7029a2fd4b491d186b585d3e (tree) |
---|---|
Tiempo | 2014-01-20 17:55:24 |
Autor | peeweedee <peeweedee@user...> |
Commiter | peeweedee |
BWT650対応α版
@@ -10,8 +10,9 @@ | ||
10 | 10 | 2chの番ナビスレ:http://toro.2ch.net/test/read.cgi/av/1352223253/ |
11 | 11 | ★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★ |
12 | 12 | |
13 | -3.22.12β+1.5.12(2013-12-XX) | |
13 | +3.22.12β+1.5.12(2014-01-XX) | |
14 | 14 | ■変更点 |
15 | + ・(レコーダ対応[DIGA BWT650]) 追加(>>673.) | |
15 | 16 | ・(新聞形式)番組枠内テキストの描画を、LineBreakMeasurerからdrawGlyphVectorに変更。それに伴い番組詳細の描画行数制限を廃止 |
16 | 17 | ■バグ修正 |
17 | 18 | ・(新聞形式)現在時刻表示、日跨りがおきたときに表示が05:00の座標へ移動しない問題を修正(>>649.) |
@@ -0,0 +1,20 @@ | ||
1 | +# 2013/03/15 23:19 | |
2 | +"NHK総合","地上D 011","011:e" | |
3 | +"NHK Eテレ","地上D 021","021:e" | |
4 | +"日本テレビ","地上D 041","041:e" | |
5 | +"TBSテレビ","地上D 061","061:e" | |
6 | +"フジテレビ","地上D 081","081:e" | |
7 | +"テレビ朝日","地上D 051","051:e" | |
8 | +"テレビ東京","地上D 071","071:e" | |
9 | +"TOKYO MX","地上D 091","091:e" | |
10 | +"ちばテレビ","地上D 031","031:e" | |
11 | +"BS日テレ","BS 141","141:4" | |
12 | +"BS朝日","BS 151","151:4" | |
13 | +"BS-TBS","BS 161","161:4" | |
14 | +"BSジャパン","BS 171","171:4" | |
15 | +"BSフジ","BS 181","181:4" | |
16 | +"WOWOW","BS 191","191:4" | |
17 | +"BSイレブン","BS 211","211:4" | |
18 | +"e2)Ch.333 アニメシアターX(AT-X)","CS2 333","333:7" | |
19 | +"NHK BS1","BS 101","101:4" | |
20 | +"NHK BSプレミアム","BS 103","103:4" |
@@ -159,8 +159,9 @@ public class Server extends Thread { | ||
159 | 159 | ma = Pattern.compile("/([^/]+\\.(cgi|htm|css|png))").matcher(location); |
160 | 160 | if (ma.find()) { |
161 | 161 | file = ma.group(1); |
162 | - if ( ma.group(1).equals("dvdr_ctrl.cgi") || /*ma.group(1).equals("reserve_list.cgi") ||*/ ma.group(1).equals("dispframe.cgi") ) { | |
162 | + if ( ma.group(1).equals("dvdr_ctrl.cgi") || ma.group(1).equals("reserve_list.cgi") || ma.group(1).equals("dispframe.cgi") ) { | |
163 | 163 | String ps = new String(c); |
164 | + ps = ps.replaceAll("(cCMD_[A-Z]+\\.[xy]=)\\d+", "$1"); | |
164 | 165 | filename = folder+File.separator+ma.group(1)+"."+ps; |
165 | 166 | if ( ps.contains("cCMD_") ) { |
166 | 167 | int a = ps.indexOf("cCMD_"); |
@@ -103,10 +103,10 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR | ||
103 | 103 | private static final String MISS_HDR = "★★DIGAが追跡に失敗★★ "; |
104 | 104 | private static final String MISS_TITLE = "★★番組詳細を取得しなおしてください★★"; |
105 | 105 | |
106 | - private static final int RETCODE_SUCCESS = 0; | |
107 | -// private static final int RETCODE_BUSY = -1; | |
108 | -// private static final int RETCODE_REDO = -2; | |
109 | - private static final int RETCODE_FATAL = -99; | |
106 | + protected static final int RETCODE_SUCCESS = 0; | |
107 | +// protected static final int RETCODE_BUSY = -1; | |
108 | +// protectede static final int RETCODE_REDO = -2; | |
109 | + protected static final int RETCODE_FATAL = -99; | |
110 | 110 | |
111 | 111 | private static final int DIGAEVID_NONE = 0; |
112 | 112 | private static final int DIGAEVID_CANNOTFOLLOW = 0xFFFE; |
@@ -1286,188 +1286,208 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR | ||
1286 | 1286 | return n; |
1287 | 1287 | } |
1288 | 1288 | |
1289 | - private int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) { | |
1290 | - | |
1289 | + /** | |
1290 | + * 予約全エントリを通しての処理 | |
1291 | + */ | |
1292 | + protected int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) { | |
1291 | 1293 | // 予約詳細を作る |
1292 | 1294 | Matcher ma = Pattern.compile("<tr class=\".*?\">(.+?)</tr>",Pattern.DOTALL).matcher(response); |
1293 | 1295 | while ( ma.find() ) { |
1294 | - | |
1295 | - ReserveList reqr = new ReserveList(); | |
1296 | - | |
1297 | - // 予約内容の部分を切り出す | |
1298 | - String id = null; | |
1299 | - String date = null; | |
1300 | - int wday = 0; | |
1301 | - String channel = null; | |
1302 | - String ch_name = null; | |
1303 | - String ahh = null; | |
1304 | - String amm = null; | |
1305 | - String zhh = null; | |
1306 | - String zmm = null; | |
1307 | - String rec_min = null; | |
1308 | - String rec_mode = null; | |
1309 | - | |
1310 | - boolean pursues = false; | |
1311 | - boolean exec = true; | |
1312 | - boolean tunershort = false; | |
1313 | - String rec_type = ITEM_REC_TYPE_PROG; | |
1314 | - | |
1315 | - boolean repeat_everyday = false; | |
1316 | - boolean repeat_mon2fri = false; | |
1317 | - boolean repeat_mon2sat = false; | |
1318 | - boolean repeat_wday = false; | |
1319 | - boolean repeat_none = false; | |
1296 | + _getDigaReserveProg(newReserveList, ma.group(1)); | |
1297 | + } | |
1298 | + return(RETCODE_SUCCESS); | |
1299 | + } | |
1300 | + | |
1301 | + /** | |
1302 | + * 予約1エントリずつの処理 | |
1303 | + */ | |
1304 | + protected int _getDigaReserveProg(ArrayList<ReserveList> newReserveList, String progdata) { | |
1305 | + | |
1306 | + ReserveList reqr = new ReserveList(); | |
1307 | + | |
1308 | + // 予約内容の部分を切り出す | |
1309 | + String id = null; | |
1310 | + String date = null; | |
1311 | + int wday = 0; | |
1312 | + String channel = null; | |
1313 | + String ch_name = null; | |
1314 | + String ahh = null; | |
1315 | + String amm = null; | |
1316 | + String zhh = null; | |
1317 | + String zmm = null; | |
1318 | + String rec_min = null; | |
1319 | + String rec_mode = null; | |
1320 | + | |
1321 | + boolean pursues = false; | |
1322 | + boolean exec = true; | |
1323 | + boolean tunershort = false; | |
1324 | + String rec_type = ITEM_REC_TYPE_PROG; | |
1325 | + | |
1326 | + boolean repeat_everyday = false; | |
1327 | + boolean repeat_mon2fri = false; | |
1328 | + boolean repeat_mon2sat = false; | |
1329 | + boolean repeat_wday = false; | |
1330 | + boolean repeat_none = false; | |
1320 | 1331 | |
1321 | - Matcher mb = Pattern.compile("<td(.*?)</td>",Pattern.DOTALL).matcher(ma.group(1)); | |
1322 | - Matcher mc = null; | |
1323 | - for ( int i=0; mb.find(); i++ ) { | |
1324 | - switch (i) { | |
1325 | - case 0: // 予約ID | |
1326 | - mc = Pattern.compile("\\?ANC_RSVLSTNO=(\\d+)&",Pattern.DOTALL).matcher(mb.group(1)); | |
1327 | - if ( mc.find() ) { | |
1328 | - id = mc.group(1); | |
1332 | + Matcher mb = Pattern.compile("<td(.*?)</td>",Pattern.DOTALL).matcher(progdata); | |
1333 | + Matcher mc = null; | |
1334 | + for ( int i=0; mb.find(); i++ ) { | |
1335 | + switch (i) { | |
1336 | + case 0: // 予約ID | |
1337 | + mc = Pattern.compile("\\?ANC_RSVLSTNO=(\\d+)&",Pattern.DOTALL).matcher(mb.group(1)); | |
1338 | + if ( mc.find() ) { | |
1339 | + id = mc.group(1); | |
1340 | + } | |
1341 | + break; | |
1342 | + case 2: // 日付 | |
1343 | + mc = Pattern.compile(">\\s*(\\d+)/(\\d+)\\((.)\\)",Pattern.DOTALL).matcher(mb.group(1)); | |
1344 | + if ( mc.find() ) { | |
1345 | + wday = CommonUtils.getWday(mc.group(3)); | |
1346 | + date = CommonUtils.getDateByMD(Integer.valueOf(mc.group(1)), Integer.valueOf(mc.group(2)), wday, true); | |
1347 | + } | |
1348 | + break; | |
1349 | + case 3: // CH | |
1350 | + mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1)); | |
1351 | + if ( mc.find() ) { | |
1352 | + String recChName = CommonUtils.unEscape(mc.group(1)).trim(); | |
1353 | + channel = cc.getCH_REC2CODE(recChName); | |
1354 | + if ( channel != null ) { | |
1355 | + ch_name = cc.getCH_CODE2WEB(channel); | |
1329 | 1356 | } |
1330 | - break; | |
1331 | - case 2: // 日付 | |
1332 | - mc = Pattern.compile(">\\s*(\\d+)/(\\d+)\\((.)\\)",Pattern.DOTALL).matcher(mb.group(1)); | |
1333 | - if ( mc.find() ) { | |
1334 | - wday = CommonUtils.getWday(mc.group(3)); | |
1335 | - date = CommonUtils.getDateByMD(Integer.valueOf(mc.group(1)), Integer.valueOf(mc.group(2)), wday, true); | |
1357 | + else { | |
1358 | + ch_name = recChName; | |
1336 | 1359 | } |
1337 | - break; | |
1338 | - case 3: // CH | |
1339 | - mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1)); | |
1340 | - if ( mc.find() ) { | |
1341 | - String recChName = CommonUtils.unEscape(mc.group(1)).trim(); | |
1342 | - channel = cc.getCH_REC2CODE(recChName); | |
1343 | - if ( channel != null ) { | |
1344 | - ch_name = cc.getCH_CODE2WEB(channel); | |
1345 | - } | |
1360 | + } | |
1361 | + break; | |
1362 | + case 4: // 時刻 | |
1363 | + mc = Pattern.compile(">\\s*(\\d+):(\\d+)~((\\d+):(\\d+)|未定)",Pattern.DOTALL).matcher(mb.group(1)); | |
1364 | + if ( mc.find() ) { | |
1365 | + if ( mc.group(4) == null ) { | |
1366 | + // 終了時刻='未定(fefe)'の場合はcopyattributes()で過去情報から補完するか、または2時間後に仮置き | |
1367 | + System.out.println(DBGID+"終了時刻がみつかりません"); | |
1368 | + String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),"00:00"); | |
1369 | + ahh = db[0]; | |
1370 | + amm = db[1]; | |
1346 | 1371 | } |
1347 | - break; | |
1348 | - case 4: // 時刻 | |
1349 | - mc = Pattern.compile(">\\s*(\\d+):(\\d+)~((\\d+):(\\d+)|未定)",Pattern.DOTALL).matcher(mb.group(1)); | |
1350 | - if ( mc.find() ) { | |
1351 | - if ( mc.group(4) == null ) { | |
1352 | - // 終了時刻='未定(fefe)'の場合はcopyattributes()で過去情報から補完するか、または2時間後に仮置き | |
1353 | - System.out.println(DBGID+"終了時刻がみつかりません"); | |
1354 | - String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),"00:00"); | |
1355 | - ahh = db[0]; | |
1356 | - amm = db[1]; | |
1357 | - } | |
1358 | - else { | |
1359 | - String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),mc.group(4)+":"+mc.group(5)); | |
1360 | - ahh = db[0]; | |
1361 | - amm = db[1]; | |
1362 | - zhh = db[2]; | |
1363 | - zmm = db[3]; | |
1364 | - rec_min = db[4]; | |
1365 | - } | |
1372 | + else { | |
1373 | + String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),mc.group(4)+":"+mc.group(5)); | |
1374 | + ahh = db[0]; | |
1375 | + amm = db[1]; | |
1376 | + zhh = db[2]; | |
1377 | + zmm = db[3]; | |
1378 | + rec_min = db[4]; | |
1366 | 1379 | } |
1367 | - break; | |
1368 | - case 5: // 録画モード | |
1369 | - mc = Pattern.compile(">\\s*(.+?)\\s*<").matcher(mb.group(1)); | |
1380 | + } | |
1381 | + break; | |
1382 | + case 5: // 録画モード | |
1383 | + mc = Pattern.compile(">\\s*([^<]+?)\\s*<",Pattern.DOTALL).matcher(mb.group(1)); | |
1384 | + if ( mc.find() ) { | |
1385 | + rec_mode = CommonUtils.unEscape(mc.group(1)).trim().replaceFirst("\\(HDD\\)", ""); | |
1386 | + } | |
1387 | + else { | |
1388 | + // BWT650 | |
1389 | + mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1)); | |
1370 | 1390 | if ( mc.find() ) { |
1371 | 1391 | rec_mode = CommonUtils.unEscape(mc.group(1)).trim().replaceFirst("\\(HDD\\)", ""); |
1372 | 1392 | } |
1373 | - break; | |
1374 | - case 6: // 補足情報 | |
1375 | - if ( mb.group(1).contains("毎日") ) { | |
1376 | - repeat_everyday = true; | |
1377 | - } | |
1378 | - else if ( mb.group(1).contains("月金") ) { | |
1379 | - repeat_mon2fri = true; | |
1380 | - } | |
1381 | - else if ( mb.group(1).contains("月土") ) { | |
1382 | - repeat_mon2sat = true; | |
1383 | - } | |
1384 | - else if ( mb.group(1).contains("毎週") || mb.group(1).contains("曜日指定") ) { | |
1385 | - repeat_wday = true; | |
1386 | - } | |
1387 | - else { | |
1388 | - repeat_none = true; | |
1389 | - } | |
1390 | - | |
1391 | - if ( mb.group(1).contains("実行切") ) { | |
1392 | - exec = false; | |
1393 | - } | |
1394 | - if ( mb.group(1).contains("重複") ) { | |
1395 | - tunershort = true; | |
1396 | - } | |
1397 | - if ( mb.group(1).contains("番組予約") ) { | |
1398 | - pursues = true; | |
1399 | - rec_type = ITEM_REC_TYPE_EPG; | |
1400 | - } | |
1401 | - break; | |
1402 | 1393 | } |
1394 | + break; | |
1395 | + case 6: // 補足情報 | |
1396 | + if ( mb.group(1).contains("毎日") ) { | |
1397 | + repeat_everyday = true; | |
1398 | + } | |
1399 | + else if ( mb.group(1).contains("月金") ) { | |
1400 | + repeat_mon2fri = true; | |
1401 | + } | |
1402 | + else if ( mb.group(1).contains("月土") ) { | |
1403 | + repeat_mon2sat = true; | |
1404 | + } | |
1405 | + else if ( mb.group(1).contains("毎週") || mb.group(1).contains("曜日指定") ) { | |
1406 | + repeat_wday = true; | |
1407 | + } | |
1408 | + else { | |
1409 | + repeat_none = true; | |
1410 | + } | |
1411 | + | |
1412 | + if ( mb.group(1).contains("実行切") ) { | |
1413 | + exec = false; | |
1414 | + } | |
1415 | + if ( mb.group(1).contains("重複") ) { | |
1416 | + tunershort = true; | |
1417 | + } | |
1418 | + if ( mb.group(1).contains("番組予約") ) { | |
1419 | + pursues = true; | |
1420 | + rec_type = ITEM_REC_TYPE_EPG; | |
1421 | + } | |
1422 | + break; | |
1403 | 1423 | } |
1404 | - | |
1405 | - // 予約情報更新 | |
1406 | - reqr.setId(id); | |
1407 | - | |
1408 | - reqr.setAhh(ahh); | |
1409 | - reqr.setAmm(amm); | |
1410 | - | |
1411 | - reqr.setZhh(zhh); | |
1412 | - reqr.setZmm(zmm); | |
1413 | - reqr.setRec_min(rec_min); | |
1414 | - | |
1415 | - if ( repeat_everyday ) { | |
1416 | - // 毎日 | |
1417 | - reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_EVERYDAY]); | |
1418 | - reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_EVERYDAY); | |
1419 | - } | |
1420 | - else if ( repeat_mon2sat ) { | |
1421 | - // 毎月~土 | |
1422 | - reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2SAT]); | |
1423 | - reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2SAT); | |
1424 | - } | |
1425 | - else if ( repeat_mon2fri ) { | |
1426 | - // 毎月~金 | |
1427 | - reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2FRI]); | |
1428 | - reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2FRI); | |
1429 | - } | |
1430 | - else if ( repeat_wday && wday > 0 ) { | |
1431 | - // 毎週 | |
1432 | - reqr.setRec_pattern(HDDRecorder.RPTPTN[wday-1]); | |
1433 | - reqr.setRec_pattern_id(wday-1); | |
1434 | - } | |
1435 | - else { | |
1436 | - // 単日 | |
1437 | - reqr.setRec_pattern(date); | |
1438 | - reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_BYDATE); | |
1439 | - } | |
1440 | - if ( zhh != null && zmm != null ) { | |
1441 | - reqr.setRec_nextdate(CommonUtils.getNextDate(reqr)); | |
1442 | - getStartEndDateTime(reqr); | |
1443 | - } | |
1444 | - else { | |
1445 | - // 終了時刻="未定"の場合(setRec_nextdateとかは↓の中で) | |
1446 | - setAttributesDiga(reqr,null); | |
1447 | - } | |
1448 | - | |
1449 | - if ( pursues && ! repeat_none ) { | |
1450 | - reqr.setAutoreserved(true); | |
1451 | - } | |
1452 | - | |
1453 | - reqr.setRec_mode(rec_mode); | |
1454 | - reqr.setTitle(MISS_TITLE); | |
1455 | - reqr.setTitlePop(""); | |
1456 | - reqr.setChannel(channel); | |
1457 | - reqr.setCh_name(ch_name); | |
1458 | - | |
1459 | - reqr.setPursues(pursues); | |
1460 | - reqr.setExec(exec); | |
1461 | - reqr.setContentId(null); | |
1462 | - reqr.setRec_audio(rec_type); | |
1424 | + } | |
1425 | + | |
1426 | + // 予約情報更新 | |
1427 | + reqr.setId(id); | |
1428 | + | |
1429 | + reqr.setAhh(ahh); | |
1430 | + reqr.setAmm(amm); | |
1431 | + | |
1432 | + reqr.setZhh(zhh); | |
1433 | + reqr.setZmm(zmm); | |
1434 | + reqr.setRec_min(rec_min); | |
1435 | + | |
1436 | + if ( repeat_everyday ) { | |
1437 | + // 毎日 | |
1438 | + reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_EVERYDAY]); | |
1439 | + reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_EVERYDAY); | |
1440 | + } | |
1441 | + else if ( repeat_mon2sat ) { | |
1442 | + // 毎月~土 | |
1443 | + reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2SAT]); | |
1444 | + reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2SAT); | |
1445 | + } | |
1446 | + else if ( repeat_mon2fri ) { | |
1447 | + // 毎月~金 | |
1448 | + reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2FRI]); | |
1449 | + reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2FRI); | |
1450 | + } | |
1451 | + else if ( repeat_wday && wday > 0 ) { | |
1452 | + // 毎週 | |
1453 | + reqr.setRec_pattern(HDDRecorder.RPTPTN[wday-1]); | |
1454 | + reqr.setRec_pattern_id(wday-1); | |
1455 | + } | |
1456 | + else { | |
1457 | + // 単日 | |
1458 | + reqr.setRec_pattern(date); | |
1459 | + reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_BYDATE); | |
1460 | + } | |
1461 | + if ( zhh != null && zmm != null ) { | |
1462 | + reqr.setRec_nextdate(CommonUtils.getNextDate(reqr)); | |
1463 | + getStartEndDateTime(reqr); | |
1464 | + } | |
1465 | + else { | |
1466 | + // 終了時刻="未定"の場合(setRec_nextdateとかは↓の中で) | |
1467 | + setAttributesDiga(reqr,null); | |
1468 | + } | |
1469 | + | |
1470 | + if ( pursues && ! repeat_none ) { | |
1471 | + reqr.setAutoreserved(true); | |
1472 | + } | |
1473 | + | |
1474 | + reqr.setRec_mode(rec_mode); | |
1475 | + reqr.setTitle(MISS_TITLE); | |
1476 | + reqr.setTitlePop(""); | |
1477 | + reqr.setChannel(channel); | |
1478 | + reqr.setCh_name(ch_name); | |
1479 | + | |
1480 | + reqr.setPursues(pursues); | |
1481 | + reqr.setExec(exec); | |
1482 | + reqr.setContentId(null); | |
1483 | + reqr.setRec_audio(rec_type); | |
1463 | 1484 | |
1464 | - reqr.setTunershort(tunershort); | |
1485 | + reqr.setTunershort(tunershort); | |
1465 | 1486 | |
1466 | - // 予約情報を保存 | |
1467 | - newReserveList.add(reqr); | |
1468 | - } | |
1487 | + // 予約情報を保存 | |
1488 | + newReserveList.add(reqr); | |
1469 | 1489 | |
1470 | - return(RETCODE_SUCCESS); | |
1490 | + return 0; | |
1471 | 1491 | } |
1472 | 1492 | |
1473 | 1493 | /******************************************************************************* |
@@ -1763,7 +1783,7 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR | ||
1763 | 1783 | } |
1764 | 1784 | |
1765 | 1785 | /******************************************************************************* |
1766 | - * 予約のタイトル一覧を取得する。詳細は{@link #getDigaReserveDetail}で。 | |
1786 | + * 録画結果の一覧を取得する | |
1767 | 1787 | ******************************************************************************/ |
1768 | 1788 | |
1769 | 1789 | private int getDigaRecordedList(ArrayList<RecordedInfo> newRecordedList) { |
@@ -0,0 +1,59 @@ | ||
1 | +package tainavi; | |
2 | + | |
3 | +import java.util.ArrayList; | |
4 | +import java.util.HashMap; | |
5 | +import java.util.regex.Matcher; | |
6 | +import java.util.regex.Pattern; | |
7 | + | |
8 | + | |
9 | +/* | |
10 | + * | |
11 | + */ | |
12 | + | |
13 | +public class PlugIn_RecDIGA_DMR_BWT650 extends PlugIn_RecDIGA_DMR_BZT720 implements HDDRecorder,Cloneable { | |
14 | + | |
15 | + @Override | |
16 | + public PlugIn_RecDIGA_DMR_BWT650 clone() { | |
17 | + return (PlugIn_RecDIGA_DMR_BWT650) super.clone(); | |
18 | + } | |
19 | + | |
20 | + /* 必須コード - ここから */ | |
21 | + | |
22 | + // 種族の特性 | |
23 | + @Override | |
24 | + public String getRecorderId() { return "DIGA DMR-BWT650"; } | |
25 | + @Override | |
26 | + public RecType getType() { return RecType.RECORDER; } | |
27 | + | |
28 | + @Override | |
29 | + protected int get_com_try_count() { return 5; } | |
30 | + | |
31 | + public PlugIn_RecDIGA_DMR_BWT650() { | |
32 | + super(); | |
33 | + this.setTunerNum(3); | |
34 | + } | |
35 | + | |
36 | + /* | |
37 | + * 公開メソッド | |
38 | + */ | |
39 | + | |
40 | + /* | |
41 | + * 非公開メソッド | |
42 | + */ | |
43 | + | |
44 | + /** | |
45 | + * 予約全エントリを通しての処理 | |
46 | + */ | |
47 | + @Override | |
48 | + protected int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) { | |
49 | + // 予約詳細を作る | |
50 | + Matcher mx = Pattern.compile("<table class=\"reclist\">.+?<tbody>(.+?)</tbody>",Pattern.DOTALL).matcher(response); | |
51 | + if ( mx.find() ) { | |
52 | + Matcher ma = Pattern.compile("<tr>(.+?)</tr>",Pattern.DOTALL).matcher(mx.group(1)); | |
53 | + while ( ma.find() ) { | |
54 | + _getDigaReserveProg(newReserveList, ma.group(1)); | |
55 | + } | |
56 | + } | |
57 | + return(RETCODE_SUCCESS); | |
58 | + } | |
59 | +} |
@@ -5,7 +5,7 @@ import java.util.regex.Pattern; | ||
5 | 5 | |
6 | 6 | |
7 | 7 | public class VersionInfo { |
8 | - private static final String Version = "タイニー番組ナビゲータ 3.22.11β"; | |
8 | + private static final String Version = "タイニー番組ナビゲータ 3.22.12β"; | |
9 | 9 | |
10 | 10 | private static final String OSname = System.getProperty("os.name"); |
11 | 11 | private static final String OSvers = System.getProperty("os.version"); |