diff --git a/epg2xml.php b/epg2xml.php index 1489860..7230084 100644 --- a/epg2xml.php +++ b/epg2xml.php @@ -1,7 +1,7 @@ #!/usr/bin/env php \n"); } +// Get EPG data from epg.co.kr function GetEPGFromEPG($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -454,6 +465,8 @@ function GetEPGFromEPG($ChannelInfo) { } endforeach; } + +// Get EPG data from KT function GetEPGFromKT($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -538,6 +551,8 @@ function GetEPGFromKT($ChannelInfo) { } endforeach; } + +// Get EPG data from LG function GetEPGFromLG($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -618,6 +633,8 @@ function GetEPGFromLG($ChannelInfo) { } endforeach; } + +// Get EPG data from SK function GetEPGFromSK($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -665,15 +682,9 @@ function GetEPGFromSK($ChannelInfo) { endif; $startTime = date("YmdHis",$program['startTime']/1000); $endTime = date("YmdHis",$program['endTime']/1000); - if ($GLOBALS['addverbose'] == "y") : - $desc = $program['synopsis'] ?: ""; - $actors =trim(str_replace('...','',$program['actorName']), ', ') ?: ""; - $producers = trim(str_replace('...','',$program['directorName']), ', ') ?: ""; - else : - $desc = ""; - $actors = ""; - $producers = ""; - endif; + $desc = $program['synopsis'] ?: ""; + $actors =trim(str_replace('...','',$program['actorName']), ', ') ?: ""; + $producers = trim(str_replace('...','',$program['directorName']), ', ') ?: ""; if ($program['mainGenreName'] != NULL) : $category = $program['mainGenreName']; else: @@ -706,6 +717,7 @@ function GetEPGFromSK($ChannelInfo) { } } +// Get EPG data from SKY function GetEPGFromSKY($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -727,7 +739,6 @@ function GetEPGFromSKY($ChannelInfo) { ); $params = http_build_query($params); $url = $url."?".$params; - try { $response = @file_get_contents($url, False, $context); if ($response === False) : @@ -744,22 +755,16 @@ function GetEPGFromSKY($ChannelInfo) { $programs = $data['scheduleListIn']; foreach($programs as $program) : $programName = htmlspecialchars_decode($program['program_name']) ?: ""; - $subprogramName = str_replace(array('amp;'), array('&'),$program['program_subname']) ?: ""; + $subprogramName = str_replace(array('lt;', 'gt;', 'amp;'), array('<', '>', '&'),$program['program_subname']) ?: ""; $startTime = $program['starttime']; $endTime = $program['endtime']; - if ($GLOBALS['addverbose'] == "y") : - $actors = trim(str_replace('...', '',$program['cast']), ', ') ?: ""; - $producers = trim(str_replace('...', '',$program['dirt']), ', ') ?: ""; - $description = str_replace(array('lt;', 'gt;', 'amp;'), array('<', '>', '&'),$program['description']) ?: ""; - $summary = str_replace(array('lt;', 'gt;', 'amp;'), array('<', '>', '&'),$program['summary']) ?: ""; - $desc = $description ?: ""; - if($summary) : - $desc = $desc."\n".$summary; - endif; - else: - $desc = ""; - $actors = ""; - $producers = ""; + $actors = trim(str_replace('...', '',$program['cast']), ', ') ?: ""; + $producers = trim(str_replace('...', '',$program['dirt']), ', ') ?: ""; + $description = str_replace(array('lt;', 'gt;', 'amp;'), array('<', '>', '&'),$program['description']) ?: ""; + $summary = str_replace(array('lt;', 'gt;', 'amp;'), array('<', '>', '&'),$program['summary']) ?: ""; + $desc = $description ?: ""; + if($summary) : + $desc = $desc."\n".$summary; endif; $category = $program['program_category1']; $episode = $program['episode_id'] ?: ""; @@ -791,6 +796,8 @@ function GetEPGFromSKY($ChannelInfo) { } endforeach; } + +// Get EPG data from Naver function GetEPGFromNaver($ChannelInfo) { $ChannelId = $ChannelInfo[0]; $ChannelName = $ChannelInfo[1]; @@ -820,7 +827,6 @@ function GetEPGFromNaver($ChannelInfo) { 'u8' => $ChannelName."편성표", 'where' => 'nexearch' ); - $params = http_build_query($params); $url = $url."?".$params; try { @@ -886,6 +892,259 @@ function GetEPGFromNaver($ChannelInfo) { if($GLOBALS['debug']) printError($e->getMessage()); } } + +// Get EPG data from Tbroad +function GetEPGFromTbroad($ChannelInfo) { + $url='https://www.tbroad.com/chplan/selectRealTimeListForNormal.tb'; +} + +// Get EPG data from Iscs +function GetEPGFromIscs($ChannelInfo) { + $url='http://service.iscs.co.kr/sub/channel_view.asp'; + $params = array( + 'chan_idx'=>'242', + 'source_id'=>'203', + 'Chan_Date'=>'2017-04-18' + ); +} + +// Get EPG data from MBC +function GetEPGFromMbc($ChannelInfo) { + $ChannelId = $ChannelInfo[0]; + $ChannelName = $ChannelInfo[1]; + $ServiceId = $ChannelInfo[3]; + $options = array( + 'http' => array( + 'method' => 'GET', + 'header'=> $GLOBALS['ua'] + )); + $context = stream_context_create($options); + $dayofweek = array('일', '월', '화', '수', '목', '금', '토'); + foreach(range(1, $GLOBALS['period']) as $k) : + $url = "http://miniunit.imbc.com/Schedule"; + $day = date("Y-m-d", strtotime("+".($k - 1)." days")); + $params = array( + 'rtype' => 'json' + ); + $params = http_build_query($params); + $url = $url."?".$params; + try { + $response = @file_get_contents($url, False, $context); + if ($response === False) : + printError($ChannelName.HTTP_ERROR); + else : + try { + $data = json_decode($response, TRUE); + if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); + if(count($data['Programs']) == 0) : + if($GLOBALS['debug']) : + printError($ChannelName.CHANNEL_ERROR); + endif; + else : + $programs = $data['Programs']; + foreach($programs as $program) : + if($program['Channel'] == "CHAM" && $program['LiveDays'] == $dayofweek[date("w", strtotime($day))]) : + $programName = ""; + $rebroadcast = False; + preg_match('/^(.*?)(\(재\))?$/', htmlspecialchars_decode($program['ProgramTitle']), $matches); + if ($matches != NULL) : + $programName = $matches[1]; + $rebroadcast = $matches[2] ? True : False; + endif; + $subprogramName = ""; + $startTime = $day." ".$program['StartTime']; + $startTime = date("YmdHis", strtotime($startTime)); + $endTime = date("YmdHis", strtotime("+".$program['RunningTime']." minutes", strtotime($startTime))); + $desc = ""; + $actors = ""; + $producers = ""; + $category = "음악"; + $episode = ""; + $rating = 0; + $programdata = array( + 'channelId'=> $ChannelId, + 'startTime' => $startTime, + 'endTime' => $endTime, + 'programName' => $programName, + 'subprogramName'=> $subprogramName, + 'desc' => $desc, + 'actors' => $actors, + 'producers' => $producers, + 'category' => $category, + 'episode' => $episode, + 'rebroadcast' => $rebroadcast, + 'rating' => $rating + ); + writeProgram($programdata); + endif; + + endforeach; + endif; + } catch(Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endif; + } catch (Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endforeach; +} + +// Get EPG data from MIL +function GetEPGFromMil($ChannelInfo) { + $ChannelId = $ChannelInfo[0]; + $ChannelName = $ChannelInfo[1]; + $ServiceId = $ChannelInfo[3]; + $options = array( + 'http' => array( + 'method' => 'GET', + 'header'=> $GLOBALS['ua'] + )); + $context = stream_context_create($options); + foreach(range(1, $GLOBALS['period']) as $k) : + $url = "http://radio.dema.mil.kr/web/fm/quick/ajaxTimetableList.do"; + $day = date("Y-m-d", strtotime("+".($k - 1)." days")); + $params = array( + 'program_date' => date("Ymd", strtotime($day)) + ); + $params = http_build_query($params); + $url = $url."?".$params; + try { + $response = @file_get_contents($url, False, $context); + if ($response === False) : + printError($ChannelName.HTTP_ERROR); + else : + try { + $data = json_decode($response, TRUE); + if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); + if(count($data['resultList']) == 0) : + if($GLOBALS['debug']) : + printError($ChannelName.CHANNEL_ERROR); + endif; + else : + $programs = $data['resultList']; + foreach($programs as $program) : + $programName = ""; + $rebroadcast = False; + preg_match('/^(.*?)(\(재\))?$/', htmlspecialchars_decode($program['program_title']), $matches); + if ($matches != NULL) : + $programName = $matches[1]; + $rebroadcast = $matches[2] ? True : False; + endif; + $subprogramName = htmlspecialchars_decode($program['program_subtitle']); + $startTime = $day." ".$program['program_time']; + $startTime = date("YmdHis", strtotime($startTime)); + $endTime = $day." ".$program['program_end_time']; + $endTime = date("YmdHis", strtotime($endTime)); + $desc = ""; + $actors = htmlspecialchars_decode($program['movie_actor']); + $producers = htmlspecialchars_decode($program['movie_director']); + $category = ""; + $episode = ""; + $rating = 0; + $programdata = array( + 'channelId'=> $ChannelId, + 'startTime' => $startTime, + 'endTime' => $endTime, + 'programName' => $programName, + 'subprogramName'=> $subprogramName, + 'desc' => $desc, + 'actors' => $actors, + 'producers' => $producers, + 'category' => $category, + 'episode' => $episode, + 'rebroadcast' => $rebroadcast, + 'rating' => $rating + ); + writeProgram($programdata); + endforeach; + endif; + } catch(Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endif; + } catch (Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endforeach; +} + +// Get EPG data from IFM +function GetEPGFromIfm($ChannelInfo) { + $ChannelId = $ChannelInfo[0]; + $ChannelName = $ChannelInfo[1]; + $ServiceId = $ChannelInfo[3]; + $options = array( + 'http' => array( + 'method' => 'GET', + 'header'=> $GLOBALS['ua'] + )); + $context = stream_context_create($options); + $dayofweek = array('1', '2', '3', '4', '5', '6', '7'); + foreach(range(1, $GLOBALS['period']) as $k) : + $url = "http://mapp.itvfm.co.kr/hyb/front/selectHybPgmList.do"; + $day = date("Y-m-d", strtotime("+".($k - 1)." days")); + $params = array( + 'outDay' => $dayofweek[(date("w", strtotime($day)+1))%7], + 'viewDt' => $day + ); + $params = http_build_query($params); + $url = $url."?".$params; + try { + $response = @file_get_contents($url, False, $context); + if ($response === False) : + printError($ChannelName.HTTP_ERROR); + else : + try { + $data = json_decode($response, TRUE); + if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); + if(count($data['hybMusicInfoList']) == 0) : + if($GLOBALS['debug']) : + printError($ChannelName.CHANNEL_ERROR); + endif; + else : + $programs = $data['hybMusicInfoList']; + foreach($programs as $program) : + $programName = htmlspecialchars_decode($program['pgmTitle']) ?: ""; + $subprogramName = ""; + $startTime = $day." ".$program['pgmStime']; + $startTime = date("YmdHis", strtotime($startTime)); + $endTime = $day." ".$program['pgmEtime']; + $endTime = date("YmdHis", strtotime($endTime)); + $desc = ""; + $actors = htmlspecialchars_decode($program['pgmDj']); + $producers = htmlspecialchars_decode($program['pgmPd']); + $category = ""; + $episode = ""; + $rebroadcast = False; + $rating = 0; + $programdata = array( + 'channelId'=> $ChannelId, + 'startTime' => $startTime, + 'endTime' => $endTime, + 'programName' => $programName, + 'subprogramName'=> $subprogramName, + 'desc' => $desc, + 'actors' => $actors, + 'producers' => $producers, + 'category' => $category, + 'episode' => $episode, + 'rebroadcast' => $rebroadcast, + 'rating' => $rating + ); + writeProgram($programdata); + endforeach; + endif; + } catch(Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endif; + } catch (Exception $e) { + if($GLOBALS['debug']) printError($e->getMessage()); + } + endforeach; +} + function writeProgram($programdata) { $fp = $GLOBALS['fp']; $ChannelId = $programdata['channelId']; @@ -949,13 +1208,13 @@ function writeProgram($programdata) { if($actors || $producers): fprintf($fp, " \n"); if($actors) : - foreach(split(',', $actors) as $actor): - if($actor) fprintf($fp, " %s\n", $actor); + foreach(explode(',', $actors) as $actor): + if(trim($actor)) fprintf($fp, " %s\n", trim($actor)); endforeach; endif; if($producers) : - foreach(split(',', $producers) as $producer): - if($producer) fprintf($fp, " %s\n", $producer); + foreach(explode(',', $producers) as $producer): + if(trim($producer)) fprintf($fp, " %s\n", trim($producer)); endforeach; endif; fprintf($fp, " \n");