Mercurial > epgrec.yaz
comparison storeProgram.inc.php @ 137:a18df712fc7e
merged with upstream
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sun, 21 Mar 2010 03:15:00 +0900 |
parents | 9c5e597ef6c6 |
children | 481e789605e3 |
comparison
equal
deleted
inserted
replaced
119:b172a0b1ea48 | 137:a18df712fc7e |
---|---|
7 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE endtime < subdate( now(), 8 )" ); | 7 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE endtime < subdate( now(), 8 )" ); |
8 foreach( $arr as $val ) $val->delete(); | 8 foreach( $arr as $val ) $val->delete(); |
9 | 9 |
10 // 8日以上先のデータがあれば消す | 10 // 8日以上先のデータがあれば消す |
11 $arr = array(); | 11 $arr = array(); |
12 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE starttime > adddate( now(), 8 )" ); | 12 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE starttime > adddate( now(), 8 ) "); |
13 foreach( $arr as $val ) $val->delete(); | |
14 | |
15 // 8日以上前のログを消す | |
16 $arr = array(); | |
17 $arr = DBRecord::createRecords( LOG_TBL, "WHERE endtime < subdate( now(), 8 )" ); | |
13 foreach( $arr as $val ) $val->delete(); | 18 foreach( $arr as $val ) $val->delete(); |
14 } | 19 } |
15 | 20 |
16 function doKeywordReservation() { | 21 function doKeywordReservation() { |
17 // キーワード自動録画予約 | 22 // キーワード自動録画予約 |
18 $arr = array(); | 23 $arr = array(); |
19 $arr = Keyword::createKeywords(); | 24 $arr = Keyword::createKeywords(); |
20 foreach( $arr as $val ) { | 25 foreach( $arr as $val ) { |
21 try { | 26 try { |
22 $val->reservation(); | 27 $val->reservation(); |
28 reclog( "getepg::キーワードID".$val->id."を予約"); | |
23 } | 29 } |
24 catch( Exception $e ) { | 30 catch( Exception $e ) { |
25 // 無視 | 31 // 無視 |
26 } | 32 } |
27 } | 33 } |
28 } | 34 } |
29 | 35 |
30 function storeProgram( $type, $xmlfile ) { | 36 function storeProgram( $type, $xmlfile ) { |
31 global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP; | 37 global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP; |
38 | |
32 // チャンネルマップファイルの準備 | 39 // チャンネルマップファイルの準備 |
33 $map = array(); | 40 $map = array(); |
34 if( $type == "BS" ) $map = $BS_CHANNEL_MAP; | 41 if( $type == "BS" ) $map = $BS_CHANNEL_MAP; |
35 else if( $type == "GR") $map = $GR_CHANNEL_MAP; | 42 else if( $type == "GR") $map = $GR_CHANNEL_MAP; |
36 else if( $type == "CS") $map = $CS_CHANNEL_MAP; | 43 else if( $type == "CS") $map = $CS_CHANNEL_MAP; |
37 | 44 |
38 // XML parse | 45 // XML parse |
39 $xml = @simplexml_load_file( $xmlfile ); | 46 $xml = @simplexml_load_file( $xmlfile ); |
40 if( $xml === false ) { | 47 if( $xml === false ) { |
48 reclog( "getepg::".$xmlfile."が作成されなかった模様", E_ERROR ); | |
41 return; // XMLが読み取れないなら何もしない | 49 return; // XMLが読み取れないなら何もしない |
42 } | 50 } |
43 // channel抽出 | 51 // channel抽出 |
44 foreach( $xml->channel as $ch ) { | 52 foreach( $xml->channel as $ch ) { |
45 $disc = $ch['id']; | 53 $disc = $ch['id']; |
61 $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc ); | 69 $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc ); |
62 $rec->name = $ch->{'display-name'}; | 70 $rec->name = $ch->{'display-name'}; |
63 } | 71 } |
64 } | 72 } |
65 catch( Exception $e ) { | 73 catch( Exception $e ) { |
66 // 無視 | 74 reclog( "getepg::DBの接続またはチャンネルテーブルの書き込みに失敗", E_ERROR ); |
67 } | 75 } |
68 } | 76 } |
69 // channel 終了 | 77 // channel 終了 |
70 | 78 |
71 // programme 取得 | 79 // programme 取得 |
72 | 80 |
73 foreach( $xml->programme as $program ) { | 81 foreach( $xml->programme as $program ) { |
82 $channel_rec = null; | |
83 | |
74 $channel_disc = $program['channel']; | 84 $channel_disc = $program['channel']; |
75 if( ! array_key_exists( "$channel_disc", $map ) ) continue; | 85 if( ! array_key_exists( "$channel_disc", $map ) ) continue; |
86 $channel = $map["$channel_disc"]; | |
76 | 87 |
77 $channel = $map["$channel_disc"]; | 88 try { |
89 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", "$channel_disc" ); | |
90 } | |
91 catch( Exception $e ) { | |
92 reclog( "getepg::チャンネルレコードが発見できない", E_ERROR ); | |
93 } | |
94 if( $channel_rec == null ) continue; // あり得ないことが起きた | |
95 if( $channel_rec->skip == 1 ) continue; // 受信しないチャンネル | |
96 | |
78 $starttime = str_replace(" +0900", '', $program['start'] ); | 97 $starttime = str_replace(" +0900", '', $program['start'] ); |
79 $endtime = str_replace( " +0900", '', $program['stop'] ); | 98 $endtime = str_replace( " +0900", '', $program['stop'] ); |
80 $title = $program->title; | 99 $title = $program->title; |
81 $desc = $program->desc; | 100 $desc = $program->desc; |
82 $cat_ja = ""; | 101 $cat_ja = ""; |
99 $cat_rec->name_en = $cat_en; | 118 $cat_rec->name_en = $cat_en; |
100 $cat_rec->category_disc = $category_disc; | 119 $cat_rec->category_disc = $category_disc; |
101 } | 120 } |
102 else | 121 else |
103 $cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc ); | 122 $cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc ); |
104 // | 123 // |
105 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", $channel_disc ); | |
106 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" ); | 124 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" ); |
107 if( $num == 0 ) { | 125 if( $num == 0 ) { |
108 // 新規番組 | 126 // 新規番組 |
109 // 重複チェック 同時間帯にある番組 | 127 // 重複チェック 同時間帯にある番組 |
110 $options = "WHERE channel_disc = '".$channel_disc."' ". | 128 $options = "WHERE channel_disc = '".$channel_disc."' ". |
116 foreach( $records as $rec ) { | 134 foreach( $records as $rec ) { |
117 // 自動録画予約された番組は放映時間変更と同時にいったん削除する | 135 // 自動録画予約された番組は放映時間変更と同時にいったん削除する |
118 try { | 136 try { |
119 $reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id ); | 137 $reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id ); |
120 if( $reserve->autorec ) { | 138 if( $reserve->autorec ) { |
139 reclog( "getepg::録画ID".$reserve->id."は時間変更の可能性あり予約を取り消し"); | |
121 Reservation::cancel( $reserve->id ); | 140 Reservation::cancel( $reserve->id ); |
122 } | 141 } |
123 } | 142 } |
124 catch( Exception $e ) { | 143 catch( Exception $e ) { |
125 //無視 | 144 // 無視 |
126 } | 145 } |
127 // 番組削除 | 146 // 番組削除 |
147 reclog( "getepg::放送時間重複が発生した番組ID".$rec->id."を削除" ); | |
128 $rec->delete(); | 148 $rec->delete(); |
129 } | 149 } |
130 } | 150 } |
131 // // | 151 // // |
132 $rec = new DBRecord( PROGRAM_TBL ); | 152 $rec = new DBRecord( PROGRAM_TBL ); |
148 $rec->description = $desc; | 168 $rec->description = $desc; |
149 $rec->category_id = $cat_rec->id; | 169 $rec->category_id = $cat_rec->id; |
150 } | 170 } |
151 } | 171 } |
152 catch(Exception $e) { | 172 catch(Exception $e) { |
173 reclog( "getepg::DBの入出力に問題が生じた模様", E_ERROR ); | |
153 exit( $e->getMessage() ); | 174 exit( $e->getMessage() ); |
154 } | 175 } |
155 } | 176 } |
156 // Programme取得完了 | 177 // Programme取得完了 |
157 } | 178 } |