3 include_once('config.php');
4 include_once( INSTALL_PATH . '/DBRecord.class.php' );
5 include_once( INSTALL_PATH . '/Reservation.class.php' );
6 include_once( INSTALL_PATH . '/Keyword.class.php' );
7 include_once( INSTALL_PATH . '/Settings.class.php' );
9 $settings = Settings::factory();
11 if( file_exists( $settings->temp_data ) ) @unlink( $settings->temp_data );
12 if( file_exists( $settings->temp_xml ) ) @unlink( $settings->temp_xml );
15 if( $settings->bs_tuners != 0 ) {
17 $num = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' AND (type = 'BS' OR type = 'CS') AND endtime > now() AND starttime < addtime( now(), '00:03:05')" );
19 $cmdline = "CHANNEL=211 DURATION=180 TYPE=BS TUNER=0 MODE=0 OUTPUT=".$settings->temp_data." ".DO_RECORD . " >/dev/null 2>&1";
21 $cmdline = $settings->epgdump." /BS ".$settings->temp_data." ".$settings->temp_xml;
23 storeProgram( "BS", $settings->temp_xml );
24 if( file_exists( $settings->temp_data ) ) @unlink( $settings->temp_data );
25 if( file_exists( $settings->temp_xml ) ) @unlink( $settings->temp_xml );
29 if ($settings->cs_rec_flg != 0) {
30 $num = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' AND (type = 'BS' OR type = 'CS') AND endtime > now() AND starttime < addtime( now(), '00:03:05')" );
32 $cmdline = "CHANNEL=CS8 DURATION=120 TYPE=CS TUNER=0 MODE=0 OUTPUT=".$settings->temp_data." ".DO_RECORD . " >/dev/null 2>&1";
34 $cmdline = $settings->epgdump." /CS ".$settings->temp_data." ".$settings->temp_xml;
36 storeProgram( "CS", $settings->temp_xml );
37 if( file_exists( $settings->temp_data ) ) @unlink( $settings->temp_data );
38 if( file_exists( $settings->temp_xml ) ) @unlink( $settings->temp_xml );
40 $num = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' AND (type = 'BS' OR type = 'CS') AND endtime > now() AND starttime < addtime( now(), '00:03:05')" );
42 $cmdline = "CHANNEL=CS24 DURATION=120 TYPE=CS TUNER=0 MODE=0 OUTPUT=".$settings->temp_data." ".DO_RECORD . " >/dev/null 2>&1";
44 $cmdline = $settings->epgdump." /CS ".$settings->temp_data." ".$settings->temp_xml;
46 storeProgram( "CS", $settings->temp_xml );
47 if( file_exists( $settings->temp_data ) ) @unlink( $settings->temp_data );
48 if( file_exists( $settings->temp_xml ) ) @unlink( $settings->temp_xml );
54 if( $settings->gr_tuners != 0 ) {
55 foreach( $GR_CHANNEL_MAP as $key=>$value ){
57 $num = DBRecord::countRecords( RESERVE_TBL, "WHERE complete = '0' AND type = 'GR' AND endtime > now() AND starttime < addtime( now(), '00:01:10')" );
59 $cmdline = "CHANNEL=".$value." DURATION=60 TYPE=GR TUNER=0 MODE=0 OUTPUT=".$settings->temp_data." ".DO_RECORD . " >/dev/null 2>&1";
61 $cmdline = $settings->epgdump." ".$key." ".$settings->temp_data." ".$settings->temp_xml;
63 storeProgram( "GR", $settings->temp_xml );
64 if( file_exists( $settings->temp_data ) ) @unlink( $settings->temp_data );
65 if( file_exists( $settings->temp_xml ) ) @unlink( $settings->temp_xml );
73 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE endtime < subdate( now(), 8 )" );
74 foreach( $arr as $val ) $val->delete();
78 $arr = DBRecord::createRecords( PROGRAM_TBL, "WHERE starttime > adddate( now(), 8 )" );
79 foreach( $arr as $val ) $val->delete();
83 $arr = Keyword::createKeywords();
84 foreach( $arr as $val ) {
88 catch( Exception $e ) {
95 function storeProgram( $type, $xmlfile ) {
96 global $BS_CHANNEL_MAP, $GR_CHANNEL_MAP, $CS_CHANNEL_MAP;
99 if( $type == "BS" ) $map = $BS_CHANNEL_MAP;
100 else if( $type == "GR") $map = $GR_CHANNEL_MAP;
101 else if( $type == "CS") $map = $CS_CHANNEL_MAP;
104 $xml = @simplexml_load_file( $xmlfile );
105 if( $xml === false ) {
106 return; // XMLが読み取れないなら何もしない
109 foreach( $xml->channel as $ch ) {
113 $num = DBRecord::countRecords( CHANNEL_TBL , "WHERE channel_disc = '" . $disc ."'" );
116 $rec = new DBRecord( CHANNEL_TBL );
118 $rec->channel = $map["$disc"];
119 $rec->channel_disc = $disc;
120 $rec->name = $ch->{'display-name'};
123 // 存在した場合も、とりあえずチャンネル名は更新する
124 $rec = new DBRecord(CHANNEL_TBL, "channel_disc", $disc );
125 $rec->name = $ch->{'display-name'};
128 catch( Exception $e ) {
136 foreach( $xml->programme as $program ) {
137 $channel_disc = $program['channel'];
138 $channel = $map["$channel_disc"];
139 $starttime = str_replace(" +0900", '', $program['start'] );
140 $endtime = str_replace( " +0900", '', $program['stop'] );
141 $title = $program->title;
142 $desc = $program->desc;
145 foreach( $program->category as $cat ) {
146 if( $cat['lang'] == "ja_JP" ) $cat_ja = $cat;
147 if( $cat['lang'] == "en" ) $cat_en = $cat;
149 $program_disc = md5( $channel_disc . $starttime . $endtime );
150 // printf( "%s %s %s %s %s %s %s \n", $program_disc, $channel, $starttime, $endtime, $title, $desc, $cat_ja );
153 $category_disc = md5( $cat_ja . $cat_en );
154 $num = DBRecord::countRecords(CATEGORY_TBL, "WHERE category_disc = '".$category_disc."'" );
158 $cat_rec = new DBRecord( CATEGORY_TBL );
159 $cat_rec->name_jp = $cat_ja;
160 $cat_rec->name_en = $cat_en;
161 $cat_rec->category_disc = $category_disc;
164 $cat_rec = new DBRecord(CATEGORY_TBL, "category_disc" , $category_disc );
166 $channel_rec = new DBRecord(CHANNEL_TBL, "channel_disc", $channel_disc );
167 $num = DBRecord::countRecords(PROGRAM_TBL, "WHERE program_disc = '".$program_disc."'" );
171 $options = "WHERE channel_disc = '".$channel_disc."' ".
172 "AND starttime < '". $endtime ."' AND endtime > '".$starttime."'";
173 $battings = DBRecord::countRecords(PROGRAM_TBL, $options );
174 if( $battings > 0 ) {
176 $records = DBRecord::createRecords(PROGRAM_TBL, $options );
177 foreach( $records as $rec ) {
178 // 自動録画予約された番組は放映時間変更と同時にいったん削除する
180 $reserve = new DBRecord(RESERVE_TBL, "program_id", $rec->id );
181 if( $reserve->autorec ) {
182 Reservation::cancel( $reserve->id );
185 catch( Exception $e ) {
193 $rec = new DBRecord( PROGRAM_TBL );
194 $rec->channel_disc = $channel_disc;
195 $rec->channel_id = $channel_rec->id;
197 $rec->channel = $channel_rec->channel;
198 $rec->title = $title;
199 $rec->description = $desc;
200 $rec->category_id = $cat_rec->id;
201 $rec->starttime = $starttime;
202 $rec->endtime = $endtime;
203 $rec->program_disc = $program_disc;
207 $rec = new DBRecord( PROGRAM_TBL, "program_disc", $program_disc );
208 $rec->title = $title;
209 $rec->description = $desc;
210 $rec->category_id = $cat_rec->id;
213 catch(Exception $e) {
214 exit( $e->getMessage() );