OSDN Git Service

[自動予約一覧]検索条件、録画設定の取得とファイルへの保存まで
[tainavi/TinyBannavi.git] / TinyBannavi / src / tainavi / PlugIn_RecRD_X5EX.java
1 package tainavi;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.regex.Matcher;\r
5 import java.util.regex.Pattern;\r
6 \r
7 \r
8 /*\r
9  * \r
10  */\r
11 \r
12 public class PlugIn_RecRD_X5EX extends PlugIn_RecRD_X5 implements HDDRecorder,Cloneable {\r
13         \r
14         @Override\r
15         public PlugIn_RecRD_X5EX clone() {\r
16                 return (PlugIn_RecRD_X5EX) super.clone();\r
17         }\r
18 \r
19         /* 必須コード  - ここから */\r
20         \r
21         // 種族の特性\r
22         @Override\r
23         public String getRecorderId() { return "RD-X5EX"; }\r
24 \r
25         \r
26         \r
27         /* ここまで */\r
28 \r
29         \r
30         \r
31         /* 個別コード-ここから最後まで */\r
32 \r
33         /*\r
34          * 非公開メソッド \r
35          */\r
36         \r
37         //\r
38         @Override\r
39         protected ArrayList<ReserveList> GetRdReservedList(String response) {\r
40                 \r
41                 System.out.println("X5EX's GetRdReservedList()");\r
42                 //\r
43                 response = response.replaceAll("\n", "");\r
44 \r
45                 ArrayList<ReserveList> newReserveList = new ArrayList<ReserveList>();\r
46 \r
47                 Matcher ma = Pattern.compile("<tr [^>]*?>([\\s\\S]*?)</tr>").matcher(response);\r
48                 while (ma.find()) {\r
49 \r
50                         // 個々のデータを取り出す\r
51                         String buf = ma.group(1);\r
52 \r
53                         Matcher mb = null;\r
54                         mb = Pattern.compile(">新規予約<").matcher(buf);\r
55                         if (mb.find()) {\r
56                                 break;\r
57                         }\r
58                         \r
59                         ReserveList entry = new ReserveList();\r
60                         \r
61                         String[] d = new String[11];\r
62                         mb = Pattern.compile("<(td|TD).*?>(.*?)</(td|TD)>").matcher(buf);\r
63                         for (int i=0; i<d.length; i++) {\r
64                                 if ( mb.find()) {\r
65                                         d[i] = mb.group(2);\r
66                                 }\r
67                                 //System.out.println(i+") "+d[i]);\r
68                         }\r
69                         \r
70                         // 予約実行ON/OFF\r
71                         mb = Pattern.compile("check_off\\.gif").matcher(d[1]);\r
72                         if (mb.find()) {\r
73                                 entry.setExec(false);\r
74                         }\r
75                         \r
76                         // 予約名のエスケープを解除する\r
77                         String title = d[2];\r
78                         mb = Pattern.compile("<A .*?>(.+?)</A>").matcher(title);\r
79                         if (mb.find()) title = mb.group(1);\r
80                         mb = Pattern.compile("<BR>").matcher(title);    // 余計な改行の削除\r
81                         if (mb.find()) title = mb.replaceAll("");\r
82                         mb = Pattern.compile("&quot;").matcher(title);\r
83                         if (mb.find()) title = mb.replaceAll("\"");\r
84                         mb = Pattern.compile("&lt;").matcher(title);\r
85                         if (mb.find()) title = mb.replaceAll("<");\r
86                         mb = Pattern.compile("&gt;").matcher(title);\r
87                         if (mb.find()) title = mb.replaceAll(">");\r
88                         mb = Pattern.compile("&nbsp;").matcher(title);\r
89                         if (mb.find()) title = mb.replaceAll(" ");\r
90 \r
91                         \r
92                         entry.setId(String.valueOf(Integer.valueOf(d[0])-1));\r
93                         entry.setRec_pattern(d[5]);\r
94                         entry.setRec_pattern_id(getRec_pattern_Id(entry.getRec_pattern()));\r
95                         mb = Pattern.compile("(\\d\\d):(\\d\\d).*?(\\d\\d):(\\d\\d)").matcher(d[6]);\r
96                         if (mb.find()) {\r
97                                 entry.setAhh(mb.group(1));\r
98                                 entry.setAmm(mb.group(2));\r
99                                 entry.setZhh(mb.group(3));\r
100                                 entry.setZmm(mb.group(4));\r
101                         }\r
102                         entry.setRec_nextdate(CommonUtils.getNextDate(entry));\r
103                         //entry.setRec_nextdate(getNextDate(entry.getRec_pattern(), entry.getZhh()+":"+entry.getZmm()));\r
104                         entry.setRec_min(CommonUtils.getRecMin(entry.getAhh(), entry.getAmm(), entry.getZhh(), entry.getZmm()));\r
105                         getStartEndDateTime(entry);\r
106                         \r
107                         mb = Pattern.compile("act_(.+?)\\.gif").matcher(d[3]);\r
108                         if (mb.find()) {\r
109                                 entry.setTuner(mb.group(1));\r
110                         }\r
111                         else {\r
112                                 entry.setTuner("R1");\r
113                         }\r
114                         entry.setRec_mode(d[9]);\r
115                         entry.setTitle(title);\r
116                         entry.setTitlePop(TraceProgram.replacePop(title));\r
117                         entry.setCh_name(getChCode().getCH_REC2WEB(d[4]));\r
118                         entry.setChannel(d[4]);\r
119 \r
120                         entry.setRec_audio(d[10]);\r
121                         //entry.rec_folder = data.get();        // 予約一覧からはとれない\r
122                         //entry.rec_genre = data.get();         // 予約一覧からはとれない\r
123                         \r
124                         // 予約情報を保存\r
125                         newReserveList.add(entry);\r
126                 }\r
127                 \r
128                 return(newReserveList);\r
129         }\r
130 }\r