OSDN Git Service

スカパー番組表への対応不足修正 REL-03.22.11b
authorpeeweedee <peeweedee@users.sourceforge.jp>
Wed, 18 Dec 2013 02:56:57 +0000 (11:56 +0900)
committerpeeweedee <peeweedee@users.sourceforge.jp>
Wed, 18 Dec 2013 02:56:57 +0000 (11:56 +0900)
TinyBannavi/05_history.txt
TinyBannavi/src/tainavi/PlugIn_CSPSkyperfectTV2012.java
TinyBannavi/src/tainavi/VersionInfo.java

index 45810ca..65a5fc0 100644 (file)
 2chの番ナビスレ:http://toro.2ch.net/test/read.cgi/av/1352223253/\r
 ★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\r
 \r
+3.22.10β+1.5.12(2013-12-18)\r
+■変更点\r
+ ・(番組追跡) 処理の効率化\r
+■バグ修正\r
+ ・(Web番組表[スカパー]) 1日の番組表が複数ページにまたがる場合に対応していない問題を修正(>>645.)\r
+ ・(ステータスビュー) りもこんと同じ修正(>>640.)\r
+\r
 3.22.10β+1.5.12(2013-12-16)\r
+■バグ修正\r
  ・(りもこん) RDが選択できなくなった問題を修正(>>632.)\r
 \r
 3.22.9β+1.5.12(2013-12-12)\r
index 287721f..cbef943 100644 (file)
@@ -187,56 +187,69 @@ public class PlugIn_CSPSkyperfectTV2012 extends TVProgramUtils implements TVProg
                        getDate(pl);\r
 \r
                        //\r
-                       for ( int i=0; i<pl.pdate.size(); i++ ) {\r
+                       for ( int dtidx=0; dtidx<pl.pdate.size(); dtidx++ ) {\r
                                //\r
-                               GregorianCalendar cal = CommonUtils.getCalendar(pl.pdate.get(i).Date);\r
-                               final String progCacheFile = String.format("%s%sSKP2012_%s_%d.txt", getProgDir(), File.separator, pl.CenterId, cal.get(Calendar.DAY_OF_MONTH));\r
-                               //\r
-                               File f = new File(progCacheFile);\r
-                               if (force == true ||\r
-                                               (f.exists() == true && isCacheOld(progCacheFile) == true) ||\r
-                                               (f.exists() == false && isCacheOld(null) == true)) {\r
+                               GregorianCalendar cal = CommonUtils.getCalendar(pl.pdate.get(dtidx).Date);\r
+                               \r
+                               boolean isNextpageExist = true;\r
+                               for ( int pgidx=1; isNextpageExist; pgidx++ ) {\r
+                                       \r
+                                       final String progCacheFile = \r
+                                                       pgidx == 1 ? String.format("%s%sSKP2012_%s_%d.txt", getProgDir(), File.separator, pl.CenterId, cal.get(Calendar.DAY_OF_MONTH)) :\r
+                                                                        String.format("%s%sSKP2012_%s_%d_%d.txt", getProgDir(), File.separator, pl.CenterId, cal.get(Calendar.DAY_OF_MONTH),pgidx);\r
                                        //\r
-                                       String xtype = (pl.CenterId.startsWith(CHID_PREFIX_BS) || pl.CenterId.startsWith(CHID_PREFIX_CS)) ? XTYPE_BASIC : XTYPE_PREMIUM;\r
-                                       String chid = xtype != XTYPE_PREMIUM ? pl.CenterId : pl.CenterId.replaceFirst("^"+CHID_PREFIX_PR, "");\r
-                                       String dt = CommonUtils.getDateYMD(cal);\r
-                                       String url = "http://bangumi.skyperfectv.co.jp/"+xtype+"/channel:"+chid+"/date:"+dt.substring(2)+"/";\r
-                                       /*\r
-                                       if ( pl.ChId.length() == 0 ) {\r
-                                               url = "http://bangumi.skyperfectv.co.jp/api/version:3/search/date:"+dt.substring(2)+"/channel:"+pl.CenterId+"/?api_key=336eec3423";\r
+                                       File f = new File(progCacheFile);\r
+                                       if (force == true ||\r
+                                                       (f.exists() == true && isCacheOld(progCacheFile) == true) ||\r
+                                                       (f.exists() == false && isCacheOld(null) == true)) {\r
+                                               //\r
+                                               String xtype = (pl.CenterId.startsWith(CHID_PREFIX_BS) || pl.CenterId.startsWith(CHID_PREFIX_CS)) ? XTYPE_BASIC : XTYPE_PREMIUM;\r
+                                               String chid = xtype != XTYPE_PREMIUM ? pl.CenterId : pl.CenterId.replaceFirst("^"+CHID_PREFIX_PR, "");\r
+                                               String dt = CommonUtils.getDateYMD(cal);\r
+                                               String url = "http://bangumi.skyperfectv.co.jp/"+xtype+"/channel:"+chid+"/date:"+dt.substring(2)+"/";\r
+                                               if ( pgidx > 1 ) {\r
+                                                       url += "?p="+pgidx;\r
+                                               }\r
+                                               /*\r
+                                               if ( pl.ChId.length() == 0 ) {\r
+                                                       url = "http://bangumi.skyperfectv.co.jp/api/version:3/search/date:"+dt.substring(2)+"/channel:"+pl.CenterId+"/?api_key=336eec3423";\r
+                                               }\r
+                                               else {\r
+                                                       url = "http://www.skyperfectv.co.jp/xml/"+dt+"_"+pl.ChId.substring(2)+".xml";\r
+                                               }\r
+                                               */\r
+                                               webToFile(url, progCacheFile, thisEncoding);\r
+                                               \r
+                                               printProgress("(オンライン)を取得しました", counter+dtidx, pgidx, counterMax, pl.Center, cal.get(Calendar.DAY_OF_MONTH), url);\r
+                                       }\r
+                                       else if (CommonUtils.isFileAvailable(f,10)) {\r
+                                               printProgress("(キャッシュ)を取得しました", counter+dtidx, pgidx, counterMax, pl.Center, cal.get(Calendar.DAY_OF_MONTH), progCacheFile);\r
                                        }\r
                                        else {\r
-                                               url = "http://www.skyperfectv.co.jp/xml/"+dt+"_"+pl.ChId.substring(2)+".xml";\r
+                                               printProgress("(キャッシュ)がみつかりません", counter+dtidx, pgidx, counterMax, pl.Center, cal.get(Calendar.DAY_OF_MONTH), progCacheFile);\r
+                                               break;\r
+                                       }\r
+               \r
+                                       String response = CommonUtils.read4file(progCacheFile, true);\r
+                                       if ( response == null || ! response.matches("^.*<a href=\"\\?p=\\d+[^>]+?>次.*$") ) {\r
+                                               isNextpageExist = false;\r
                                        }\r
-                                       */\r
-                                       webToFile(url, progCacheFile, thisEncoding);\r
                                        \r
-                                       reportProgress(getTVProgramId()+"(オンライン)を取得しました: ("+(counter+i)+"/"+counterMax+") "+pl.Center+"["+cal.get(Calendar.DAY_OF_MONTH)+"日]    "+url);\r
-                               }\r
-                               else if (CommonUtils.isFileAvailable(f,10)) {\r
-                                       reportProgress(getTVProgramId()+"(キャッシュ)を取得しました: ("+(counter+i)+"/"+counterMax+") "+pl.Center+"["+cal.get(Calendar.DAY_OF_MONTH)+"日]    "+progCacheFile);\r
-                               }\r
-                               else {\r
-                                       reportProgress(getTVProgramId()+"(キャッシュ)がみつかりません: ("+(counter+i)+"/"+counterMax+") "+pl.Center+"["+cal.get(Calendar.DAY_OF_MONTH)+"日]    "+progCacheFile);\r
-                                       continue;\r
-                               }\r
-       \r
-                               String response = CommonUtils.read4file(progCacheFile, true);\r
-                               \r
-                               // 番組リストの追加\r
-                               try {\r
-                                       getPrograms(pl, i, response);\r
-                                       /*\r
-                                       if ( pl.ChId.length() == 0 ) {\r
-                                               getPrograms(pl, i, response);\r
+                                       // 番組リストの追加\r
+                                       try {\r
+                                               getPrograms(pl, dtidx, response);\r
+                                               /*\r
+                                               if ( pl.ChId.length() == 0 ) {\r
+                                                       getPrograms(pl, i, response);\r
+                                               }\r
+                                               else {\r
+                                                       getPrograms_basic(pl, i, response);\r
+                                               }\r
+                                               */\r
                                        }\r
-                                       else {\r
-                                               getPrograms_basic(pl, i, response);\r
+                                       catch ( Exception e ) {\r
+                                               e.printStackTrace();\r
                                        }\r
-                                       */\r
-                               }\r
-                               catch ( Exception e ) {\r
-                                       e.printStackTrace();\r
                                }\r
                        }\r
                        \r
@@ -249,6 +262,9 @@ public class PlugIn_CSPSkyperfectTV2012 extends TVProgramUtils implements TVProg
                }\r
        }\r
        \r
+       private void printProgress(String msg, int count, int pgidx, int countMax, String center, int date, String uri) {\r
+               reportProgress(String.format("%s %s: (%d/%d) page=%d %s[%d日]    %s", getTVProgramId(), msg, count, countMax, pgidx, center, date, uri));\r
+       }\r
        //\r
        private void getDate(ProgList pl) {\r
                // 日付の処理\r
index dbc6800..669e4a8 100644 (file)
@@ -5,7 +5,7 @@ import java.util.regex.Pattern;
 \r
 \r
 public class VersionInfo {\r
-       private static final String Version = "タイニー番組ナビゲータ 3.22.10β";\r
+       private static final String Version = "タイニー番組ナビゲータ 3.22.11β";\r
        \r
        private static final String OSname = System.getProperty("os.name");\r
        private static final String OSvers = System.getProperty("os.version");\r