OSDN Git Service

BWT650対応α版
authorpeeweedee <peeweedee@users.sourceforge.jp>
Mon, 20 Jan 2014 08:55:24 +0000 (17:55 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Mon, 20 Jan 2014 08:55:24 +0000 (17:55 +0900)
TinyBannavi/05_history.txt
TinyBannavi/env/RdChannelCode.dat.DIGA DMR-BWT650 [new file with mode: 0644]
TinyBannavi/src/niseRD/Server.java
TinyBannavi/src/tainavi/PlugIn_RecDIGA_DMR_BWT2100.java
TinyBannavi/src/tainavi/PlugIn_RecDIGA_DMR_BWT650.java [new file with mode: 0644]
TinyBannavi/src/tainavi/VersionInfo.java

index 4825653..e3ca92f 100644 (file)
@@ -10,8 +10,9 @@
 2chの番ナビスレ:http://toro.2ch.net/test/read.cgi/av/1352223253/\r
 ★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\r
 \r
-3.22.12β+1.5.12(2013-12-XX)\r
+3.22.12β+1.5.12(2014-01-XX)\r
 ■変更点\r
+ ・(レコーダ対応[DIGA BWT650]) 追加(>>673.)\r
  ・(新聞形式)番組枠内テキストの描画を、LineBreakMeasurerからdrawGlyphVectorに変更。それに伴い番組詳細の描画行数制限を廃止\r
 ■バグ修正\r
  ・(新聞形式)現在時刻表示、日跨りがおきたときに表示が05:00の座標へ移動しない問題を修正(>>649.)\r
diff --git a/TinyBannavi/env/RdChannelCode.dat.DIGA DMR-BWT650 b/TinyBannavi/env/RdChannelCode.dat.DIGA DMR-BWT650
new file mode 100644 (file)
index 0000000..61e08c3
--- /dev/null
@@ -0,0 +1,20 @@
+# 2013/03/15 23:19
+"NHK総合","地上D 011","011:e"
+"NHK Eテレ","地上D 021","021:e"
+"日本テレビ","地上D 041","041:e"
+"TBSテレビ","地上D 061","061:e"
+"フジテレビ","地上D 081","081:e"
+"テレビ朝日","地上D 051","051:e"
+"テレビ東京","地上D 071","071:e"
+"TOKYO MX","地上D 091","091:e"
+"ちばテレビ","地上D 031","031:e"
+"BS日テレ","BS 141","141:4"
+"BS朝日","BS 151","151:4"
+"BS-TBS","BS 161","161:4"
+"BSジャパン","BS 171","171:4"
+"BSフジ","BS 181","181:4"
+"WOWOW","BS 191","191:4"
+"BSイレブン","BS 211","211:4"
+"e2)Ch.333 アニメシアターX(AT-X)","CS2 333","333:7"
+"NHK BS1","BS 101","101:4"
+"NHK BSプレミアム","BS 103","103:4"
index a17fab4..2b15a5a 100644 (file)
@@ -159,8 +159,9 @@ public class Server extends Thread {
                                        ma = Pattern.compile("/([^/]+\\.(cgi|htm|css|png))").matcher(location);\r
                                        if (ma.find()) {\r
                                                file = ma.group(1);\r
-                                               if ( ma.group(1).equals("dvdr_ctrl.cgi") || /*ma.group(1).equals("reserve_list.cgi") ||*/ ma.group(1).equals("dispframe.cgi") ) {\r
+                                               if ( ma.group(1).equals("dvdr_ctrl.cgi") || ma.group(1).equals("reserve_list.cgi") || ma.group(1).equals("dispframe.cgi") ) {\r
                                                        String ps = new String(c);\r
+                                                       ps = ps.replaceAll("(cCMD_[A-Z]+\\.[xy]=)\\d+", "$1");\r
                                                        filename = folder+File.separator+ma.group(1)+"."+ps;\r
                                                        if ( ps.contains("cCMD_") ) {\r
                                                                int a = ps.indexOf("cCMD_");\r
index 2283a20..5081eb5 100644 (file)
@@ -103,10 +103,10 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR
        private static final String MISS_HDR = "★★DIGAが追跡に失敗★★ ";\r
        private static final String MISS_TITLE = "★★番組詳細を取得しなおしてください★★";\r
 \r
-       private static final int RETCODE_SUCCESS = 0;\r
-//     private static final int RETCODE_BUSY = -1;\r
-//     private static final int RETCODE_REDO = -2;\r
-       private static final int RETCODE_FATAL = -99;\r
+       protected static final int RETCODE_SUCCESS = 0;\r
+//     protected static final int RETCODE_BUSY = -1;\r
+//     protectede static final int RETCODE_REDO = -2;\r
+       protected static final int RETCODE_FATAL = -99;\r
        \r
        private static final int DIGAEVID_NONE = 0;\r
        private static final int DIGAEVID_CANNOTFOLLOW = 0xFFFE;\r
@@ -1286,188 +1286,208 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR
                return n;\r
        }\r
        \r
-       private int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) {\r
-               \r
+       /**\r
+        * 予約全エントリを通しての処理\r
+        */\r
+       protected int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) {\r
                // 予約詳細を作る\r
                Matcher ma = Pattern.compile("<tr class=\".*?\">(.+?)</tr>",Pattern.DOTALL).matcher(response);\r
                while ( ma.find() ) {\r
-                       \r
-                       ReserveList reqr = new ReserveList();\r
-                       \r
-                       // 予約内容の部分を切り出す\r
-                       String id = null;\r
-                       String date = null;\r
-                       int wday = 0;\r
-                       String channel = null;\r
-                       String ch_name = null;\r
-                       String ahh = null;\r
-                       String amm = null;\r
-                       String zhh = null;\r
-                       String zmm = null;\r
-                       String rec_min = null;\r
-                       String rec_mode = null;\r
-                       \r
-                       boolean pursues = false;\r
-                       boolean exec = true;\r
-                       boolean tunershort = false;\r
-                       String rec_type = ITEM_REC_TYPE_PROG;\r
-                       \r
-                       boolean repeat_everyday = false;\r
-                       boolean repeat_mon2fri = false;\r
-                       boolean repeat_mon2sat = false;\r
-                       boolean repeat_wday = false;\r
-                       boolean repeat_none = false;\r
+                       _getDigaReserveProg(newReserveList, ma.group(1));\r
+               }\r
+               return(RETCODE_SUCCESS);\r
+       }\r
+       \r
+       /**\r
+        * 予約1エントリずつの処理\r
+        */\r
+       protected int _getDigaReserveProg(ArrayList<ReserveList> newReserveList, String progdata) {\r
+               \r
+               ReserveList reqr = new ReserveList();\r
+               \r
+               // 予約内容の部分を切り出す\r
+               String id = null;\r
+               String date = null;\r
+               int wday = 0;\r
+               String channel = null;\r
+               String ch_name = null;\r
+               String ahh = null;\r
+               String amm = null;\r
+               String zhh = null;\r
+               String zmm = null;\r
+               String rec_min = null;\r
+               String rec_mode = null;\r
+               \r
+               boolean pursues = false;\r
+               boolean exec = true;\r
+               boolean tunershort = false;\r
+               String rec_type = ITEM_REC_TYPE_PROG;\r
+               \r
+               boolean repeat_everyday = false;\r
+               boolean repeat_mon2fri = false;\r
+               boolean repeat_mon2sat = false;\r
+               boolean repeat_wday = false;\r
+               boolean repeat_none = false;\r
 \r
-                       Matcher mb = Pattern.compile("<td(.*?)</td>",Pattern.DOTALL).matcher(ma.group(1));\r
-                       Matcher mc = null;\r
-                       for ( int i=0; mb.find(); i++ ) {\r
-                               switch (i) {\r
-                               case 0:         // 予約ID\r
-                                       mc = Pattern.compile("\\?ANC_RSVLSTNO=(\\d+)&",Pattern.DOTALL).matcher(mb.group(1));\r
-                                       if ( mc.find() ) {\r
-                                               id = mc.group(1);\r
+               Matcher mb = Pattern.compile("<td(.*?)</td>",Pattern.DOTALL).matcher(progdata);\r
+               Matcher mc = null;\r
+               for ( int i=0; mb.find(); i++ ) {\r
+                       switch (i) {\r
+                       case 0:         // 予約ID\r
+                               mc = Pattern.compile("\\?ANC_RSVLSTNO=(\\d+)&",Pattern.DOTALL).matcher(mb.group(1));\r
+                               if ( mc.find() ) {\r
+                                       id = mc.group(1);\r
+                               }\r
+                               break;\r
+                       case 2:         // 日付\r
+                               mc = Pattern.compile(">\\s*(\\d+)/(\\d+)\\((.)\\)",Pattern.DOTALL).matcher(mb.group(1));\r
+                               if ( mc.find() ) {\r
+                                       wday = CommonUtils.getWday(mc.group(3));\r
+                                       date = CommonUtils.getDateByMD(Integer.valueOf(mc.group(1)), Integer.valueOf(mc.group(2)), wday, true);\r
+                               }\r
+                               break;\r
+                       case 3:         // CH\r
+                               mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1));\r
+                               if ( mc.find() ) {\r
+                                       String recChName = CommonUtils.unEscape(mc.group(1)).trim();\r
+                                       channel = cc.getCH_REC2CODE(recChName);\r
+                                       if ( channel != null ) {\r
+                                               ch_name = cc.getCH_CODE2WEB(channel);\r
                                        }\r
-                                       break;\r
-                               case 2:         // 日付\r
-                                       mc = Pattern.compile(">\\s*(\\d+)/(\\d+)\\((.)\\)",Pattern.DOTALL).matcher(mb.group(1));\r
-                                       if ( mc.find() ) {\r
-                                               wday = CommonUtils.getWday(mc.group(3));\r
-                                               date = CommonUtils.getDateByMD(Integer.valueOf(mc.group(1)), Integer.valueOf(mc.group(2)), wday, true);\r
+                                       else {\r
+                                               ch_name = recChName;\r
                                        }\r
-                                       break;\r
-                               case 3:         // CH\r
-                                       mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1));\r
-                                       if ( mc.find() ) {\r
-                                               String recChName = CommonUtils.unEscape(mc.group(1)).trim();\r
-                                               channel = cc.getCH_REC2CODE(recChName);\r
-                                               if ( channel != null ) {\r
-                                                       ch_name = cc.getCH_CODE2WEB(channel);\r
-                                               }\r
+                               }\r
+                               break;\r
+                       case 4:         // 時刻\r
+                               mc = Pattern.compile(">\\s*(\\d+):(\\d+)~((\\d+):(\\d+)|未定)",Pattern.DOTALL).matcher(mb.group(1));\r
+                               if ( mc.find() ) {\r
+                                       if ( mc.group(4) == null ) {\r
+                                               // 終了時刻='未定(fefe)'の場合はcopyattributes()で過去情報から補完するか、または2時間後に仮置き\r
+                                               System.out.println(DBGID+"終了時刻がみつかりません");\r
+                                               String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),"00:00");\r
+                                               ahh = db[0];\r
+                                               amm = db[1];\r
                                        }\r
-                                       break;\r
-                               case 4:         // 時刻\r
-                                       mc = Pattern.compile(">\\s*(\\d+):(\\d+)~((\\d+):(\\d+)|未定)",Pattern.DOTALL).matcher(mb.group(1));\r
-                                       if ( mc.find() ) {\r
-                                               if ( mc.group(4) == null ) {\r
-                                                       // 終了時刻='未定(fefe)'の場合はcopyattributes()で過去情報から補完するか、または2時間後に仮置き\r
-                                                       System.out.println(DBGID+"終了時刻がみつかりません");\r
-                                                       String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),"00:00");\r
-                                                       ahh = db[0];\r
-                                                       amm = db[1];\r
-                                               }\r
-                                               else {\r
-                                                       String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),mc.group(4)+":"+mc.group(5));\r
-                                                       ahh = db[0];\r
-                                                       amm = db[1];\r
-                                                       zhh = db[2];\r
-                                                       zmm = db[3];\r
-                                                       rec_min = db[4];\r
-                                               }\r
+                                       else {\r
+                                               String[] db = _hhmm2hhmm_min(mc.group(1)+":"+mc.group(2),mc.group(4)+":"+mc.group(5));\r
+                                               ahh = db[0];\r
+                                               amm = db[1];\r
+                                               zhh = db[2];\r
+                                               zmm = db[3];\r
+                                               rec_min = db[4];\r
                                        }\r
-                                       break;\r
-                               case 5:         // 録画モード\r
-                                       mc = Pattern.compile(">\\s*(.+?)\\s*<").matcher(mb.group(1));\r
+                               }\r
+                               break;\r
+                       case 5:         // 録画モード\r
+                               mc = Pattern.compile(">\\s*([^<]+?)\\s*<",Pattern.DOTALL).matcher(mb.group(1));\r
+                               if ( mc.find() ) {\r
+                                       rec_mode = CommonUtils.unEscape(mc.group(1)).trim().replaceFirst("\\(HDD\\)", "");\r
+                               }\r
+                               else {\r
+                                       // BWT650\r
+                                       mc = Pattern.compile(">\\s*(.+?)\\s*$",Pattern.DOTALL).matcher(mb.group(1));\r
                                        if ( mc.find() ) {\r
                                                rec_mode = CommonUtils.unEscape(mc.group(1)).trim().replaceFirst("\\(HDD\\)", "");\r
                                        }\r
-                                       break;\r
-                               case 6:         // 補足情報\r
-                                       if ( mb.group(1).contains("毎日") ) {\r
-                                               repeat_everyday = true;\r
-                                       }\r
-                                       else if ( mb.group(1).contains("月金") ) {\r
-                                               repeat_mon2fri = true;\r
-                                       }\r
-                                       else if ( mb.group(1).contains("月土") ) {\r
-                                               repeat_mon2sat = true;\r
-                                       }\r
-                                       else if ( mb.group(1).contains("毎週") || mb.group(1).contains("曜日指定") ) {\r
-                                               repeat_wday = true;\r
-                                       }\r
-                                       else {\r
-                                               repeat_none = true;\r
-                                       }\r
-                                       \r
-                                       if ( mb.group(1).contains("実行切") ) {\r
-                                               exec = false;\r
-                                       }\r
-                                       if ( mb.group(1).contains("重複") ) {\r
-                                               tunershort = true;\r
-                                       }\r
-                                       if ( mb.group(1).contains("番組予約") ) {\r
-                                               pursues = true;\r
-                                               rec_type = ITEM_REC_TYPE_EPG;\r
-                                       }\r
-                                       break;\r
                                }\r
+                               break;\r
+                       case 6:         // 補足情報\r
+                               if ( mb.group(1).contains("毎日") ) {\r
+                                       repeat_everyday = true;\r
+                               }\r
+                               else if ( mb.group(1).contains("月金") ) {\r
+                                       repeat_mon2fri = true;\r
+                               }\r
+                               else if ( mb.group(1).contains("月土") ) {\r
+                                       repeat_mon2sat = true;\r
+                               }\r
+                               else if ( mb.group(1).contains("毎週") || mb.group(1).contains("曜日指定") ) {\r
+                                       repeat_wday = true;\r
+                               }\r
+                               else {\r
+                                       repeat_none = true;\r
+                               }\r
+                               \r
+                               if ( mb.group(1).contains("実行切") ) {\r
+                                       exec = false;\r
+                               }\r
+                               if ( mb.group(1).contains("重複") ) {\r
+                                       tunershort = true;\r
+                               }\r
+                               if ( mb.group(1).contains("番組予約") ) {\r
+                                       pursues = true;\r
+                                       rec_type = ITEM_REC_TYPE_EPG;\r
+                               }\r
+                               break;\r
                        }\r
-                       \r
-                       // 予約情報更新\r
-                       reqr.setId(id);\r
-                       \r
-                       reqr.setAhh(ahh);\r
-                       reqr.setAmm(amm);\r
-                       \r
-                       reqr.setZhh(zhh);\r
-                       reqr.setZmm(zmm);\r
-                       reqr.setRec_min(rec_min);\r
-                       \r
-                       if ( repeat_everyday ) {\r
-                               // 毎日\r
-                               reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_EVERYDAY]);\r
-                               reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_EVERYDAY);\r
-                       }\r
-                       else if ( repeat_mon2sat ) {\r
-                               // 毎月~土\r
-                               reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2SAT]);\r
-                               reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2SAT);\r
-                       }\r
-                       else if ( repeat_mon2fri ) {\r
-                               // 毎月~金\r
-                               reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2FRI]);\r
-                               reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2FRI);\r
-                       }\r
-                       else if ( repeat_wday && wday > 0 ) {\r
-                               // 毎週\r
-                               reqr.setRec_pattern(HDDRecorder.RPTPTN[wday-1]);\r
-                               reqr.setRec_pattern_id(wday-1);\r
-                       }\r
-                       else {\r
-                               // 単日\r
-                               reqr.setRec_pattern(date);\r
-                               reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_BYDATE);\r
-                       }\r
-                       if ( zhh != null && zmm != null ) {\r
-                               reqr.setRec_nextdate(CommonUtils.getNextDate(reqr));\r
-                               getStartEndDateTime(reqr);\r
-                       }\r
-                       else {\r
-                               // 終了時刻="未定"の場合(setRec_nextdateとかは↓の中で)\r
-                               setAttributesDiga(reqr,null);\r
-                       }\r
-                       \r
-                       if ( pursues && ! repeat_none ) {\r
-                               reqr.setAutoreserved(true);\r
-                       }\r
-                       \r
-                       reqr.setRec_mode(rec_mode);\r
-                       reqr.setTitle(MISS_TITLE);\r
-                       reqr.setTitlePop("");\r
-                       reqr.setChannel(channel);\r
-                       reqr.setCh_name(ch_name);\r
-                       \r
-                       reqr.setPursues(pursues);\r
-                       reqr.setExec(exec);\r
-                       reqr.setContentId(null);\r
-                       reqr.setRec_audio(rec_type);\r
+               }\r
+               \r
+               // 予約情報更新\r
+               reqr.setId(id);\r
+               \r
+               reqr.setAhh(ahh);\r
+               reqr.setAmm(amm);\r
+               \r
+               reqr.setZhh(zhh);\r
+               reqr.setZmm(zmm);\r
+               reqr.setRec_min(rec_min);\r
+               \r
+               if ( repeat_everyday ) {\r
+                       // 毎日\r
+                       reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_EVERYDAY]);\r
+                       reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_EVERYDAY);\r
+               }\r
+               else if ( repeat_mon2sat ) {\r
+                       // 毎月~土\r
+                       reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2SAT]);\r
+                       reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2SAT);\r
+               }\r
+               else if ( repeat_mon2fri ) {\r
+                       // 毎月~金\r
+                       reqr.setRec_pattern(HDDRecorder.RPTPTN[HDDRecorder.RPTPTN_ID_MON2FRI]);\r
+                       reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_MON2FRI);\r
+               }\r
+               else if ( repeat_wday && wday > 0 ) {\r
+                       // 毎週\r
+                       reqr.setRec_pattern(HDDRecorder.RPTPTN[wday-1]);\r
+                       reqr.setRec_pattern_id(wday-1);\r
+               }\r
+               else {\r
+                       // 単日\r
+                       reqr.setRec_pattern(date);\r
+                       reqr.setRec_pattern_id(HDDRecorder.RPTPTN_ID_BYDATE);\r
+               }\r
+               if ( zhh != null && zmm != null ) {\r
+                       reqr.setRec_nextdate(CommonUtils.getNextDate(reqr));\r
+                       getStartEndDateTime(reqr);\r
+               }\r
+               else {\r
+                       // 終了時刻="未定"の場合(setRec_nextdateとかは↓の中で)\r
+                       setAttributesDiga(reqr,null);\r
+               }\r
+               \r
+               if ( pursues && ! repeat_none ) {\r
+                       reqr.setAutoreserved(true);\r
+               }\r
+               \r
+               reqr.setRec_mode(rec_mode);\r
+               reqr.setTitle(MISS_TITLE);\r
+               reqr.setTitlePop("");\r
+               reqr.setChannel(channel);\r
+               reqr.setCh_name(ch_name);\r
+               \r
+               reqr.setPursues(pursues);\r
+               reqr.setExec(exec);\r
+               reqr.setContentId(null);\r
+               reqr.setRec_audio(rec_type);\r
 \r
-                       reqr.setTunershort(tunershort);\r
+               reqr.setTunershort(tunershort);\r
 \r
-                       // 予約情報を保存\r
-                       newReserveList.add(reqr);\r
-               }\r
+               // 予約情報を保存\r
+               newReserveList.add(reqr);\r
                \r
-               return(RETCODE_SUCCESS);\r
+               return 0;\r
        }\r
        \r
        /*******************************************************************************\r
@@ -1763,7 +1783,7 @@ public class PlugIn_RecDIGA_DMR_BWT2100 extends HDDRecorderUtils implements HDDR
        }\r
 \r
        /*******************************************************************************\r
-        * 予約のタイトル一覧を取得する。詳細は{@link #getDigaReserveDetail}で。\r
+        * 録画結果の一覧を取得する\r
         ******************************************************************************/\r
        \r
        private int getDigaRecordedList(ArrayList<RecordedInfo> newRecordedList) {\r
diff --git a/TinyBannavi/src/tainavi/PlugIn_RecDIGA_DMR_BWT650.java b/TinyBannavi/src/tainavi/PlugIn_RecDIGA_DMR_BWT650.java
new file mode 100644 (file)
index 0000000..ba7669b
--- /dev/null
@@ -0,0 +1,59 @@
+package tainavi;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+\r
+/*\r
+ * \r
+ */\r
+\r
+public class PlugIn_RecDIGA_DMR_BWT650 extends PlugIn_RecDIGA_DMR_BZT720 implements HDDRecorder,Cloneable {\r
+\r
+       @Override\r
+       public PlugIn_RecDIGA_DMR_BWT650 clone() {\r
+               return (PlugIn_RecDIGA_DMR_BWT650) super.clone();\r
+       }\r
+\r
+       /* 必須コード  - ここから */\r
+       \r
+       // 種族の特性\r
+       @Override\r
+       public String getRecorderId() { return "DIGA DMR-BWT650"; }\r
+       @Override\r
+       public RecType getType() { return RecType.RECORDER; }\r
+       \r
+       @Override\r
+       protected int get_com_try_count() { return 5; }\r
+       \r
+       public PlugIn_RecDIGA_DMR_BWT650() {\r
+               super();\r
+               this.setTunerNum(3);\r
+       }\r
+       \r
+       /*\r
+        * 公開メソッド\r
+        */\r
+       \r
+       /*\r
+        * 非公開メソッド\r
+        */\r
+       \r
+       /**\r
+        * 予約全エントリを通しての処理\r
+        */\r
+       @Override\r
+       protected int _getDigaReserveList(ArrayList<ReserveList> newReserveList, String response) {\r
+               // 予約詳細を作る\r
+               Matcher mx = Pattern.compile("<table class=\"reclist\">.+?<tbody>(.+?)</tbody>",Pattern.DOTALL).matcher(response);\r
+               if ( mx.find() ) {\r
+                       Matcher ma = Pattern.compile("<tr>(.+?)</tr>",Pattern.DOTALL).matcher(mx.group(1));\r
+                       while ( ma.find() ) {\r
+                               _getDigaReserveProg(newReserveList, ma.group(1));\r
+                       }\r
+               }\r
+               return(RETCODE_SUCCESS);\r
+       }\r
+}\r
index 669e4a8..762ecbd 100644 (file)
@@ -5,7 +5,7 @@ import java.util.regex.Pattern;
 \r
 \r
 public class VersionInfo {\r
-       private static final String Version = "タイニー番組ナビゲータ 3.22.11β";\r
+       private static final String Version = "タイニー番組ナビゲータ 3.22.12β";\r
        \r
        private static final String OSname = System.getProperty("os.name");\r
        private static final String OSvers = System.getProperty("os.version");\r