diff --git a/epg2xml-web.php b/epg2xml-web.php index 4e4382b..8c6839a 100644 --- a/epg2xml-web.php +++ b/epg2xml-web.php @@ -3,7 +3,7 @@ @date_default_timezone_set('Asia/Seoul'); error_reporting(E_ALL ^ E_NOTICE); @set_time_limit(0); -define("VERSION", "1.2.4"); +define("VERSION", "1.2.4p1"); $debug = False; $ua = "'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'"; $timeout = 5; @@ -353,14 +353,14 @@ function getEPG() { fprintf($fp, "\n"); fprintf($fp, "\n\n"); fprintf($fp, "\n", VERSION); - + foreach ($Channeldatajson as $Channeldata) : //Get Channel & Print Channel info if(in_array($Channeldata['Id'], $MyChannelInfo)) : $ChannelId = $Channeldata['Id']; $ChannelName = htmlspecialchars($Channeldata['Name'], ENT_XML1); $ChannelSource = $Channeldata['Source']; $ChannelServiceId = $Channeldata['ServiceId']; - $ChannelIconUrl = htmlspecialchars($Channeldata['Icon_url'], ENT_XML1); + $ChannelIconUrl = htmlspecialchars($Channeldata['Icon_url'], ENT_XML1); if($MyISP != "ALL" && $Channeldata[$MyISP.'Ch'] != Null): $ChannelInfos[] = array($ChannelId, $ChannelName, $ChannelSource, $ChannelServiceId); $Channelnumber = $Channeldata[$MyISP.'Ch']; @@ -676,7 +676,7 @@ function GetEPGFromSK($ChannelInfo) { $data = json_decode($response, TRUE); if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); if($data['channel'] == NULL) : - if($GLOBALS['debug']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -909,7 +909,7 @@ function GetEPGFromNaver($ChannelInfo) { 'u4' => $GLOBALS['period'], 'u5' => $ServiceId, 'u6' => 1, - 'u7' => $ChannelName."편성표", + 'u7' => $ChannelName."편성표", 'u8' => $ChannelName."편성표", 'where' => 'nexearch' ); @@ -927,7 +927,7 @@ function GetEPGFromNaver($ChannelInfo) { $data = json_decode($response, TRUE); if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); if($data['displayDates'][0]['count'] == 0) : - if($GLOBALS['debug']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -969,7 +969,7 @@ function GetEPGFromIscs($ChannelInfo) { foreach(range(1, $GLOBALS['period']) as $k) : $istomorrow = False; $url = "https://www.iscs.co.kr/service/sub/ajax_channel_view.asp"; - $day = date("Y-m-d", strtotime("+".($k - 1)." days")); + $day = date("Y-m-d", strtotime("+".($k - 2)." days")); $params = array( 's_idx' => $ServiceId, 'c_date' => $day @@ -1123,7 +1123,7 @@ function GetEPGFromPooq($ChannelInfo) { $data = json_decode($response, TRUE); if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); if($data['result']['count'] == 0) : - if($GLOBALS['debug']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1229,7 +1229,7 @@ function GetEPGFromOksusu($ChannelInfo) { 'end_time' => $lastday.'24', 'tgroup' => 'oksusutest_02|null', 'IF' => 'IF-NSMEPG-003', - 'response_format' => 'json', + 'response_format' => 'json', 'm' => 'ch_epg', 'ver' => '1.0' ); @@ -1244,7 +1244,7 @@ function GetEPGFromOksusu($ChannelInfo) { $data = json_decode($response, TRUE); if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); if($data['channel'] == NULL) : - if($GLOBALS['debug']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1322,7 +1322,7 @@ function GetEPGFromMbc($ChannelInfo) { $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']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1393,7 +1393,7 @@ function GetEPGFromMil($ChannelInfo) { $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']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1467,7 +1467,7 @@ function GetEPGFromIfm($ChannelInfo) { $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']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1534,7 +1534,7 @@ function GetEPGFromKbs($ChannelInfo) { $data = json_decode($response, TRUE); if(json_last_error() != JSON_ERROR_NONE) throw new Exception(JSON_SYNTAX_ERROR); if(count($data['schedule']) == 0) : - if($GLOBALS['debug']) : + if($GLOBALS['debug']) : printError($ChannelName.CHANNEL_ERROR); endif; else : @@ -1675,7 +1675,7 @@ function epgzip($epginfo) { ); writeProgram($programdata); $epg1 = $epg2; - endforeach; + endforeach; } function writeProgram($programdata) { diff --git a/epg2xml.py b/epg2xml.py index 3681992..7f62745 100644 --- a/epg2xml.py +++ b/epg2xml.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding: utf-8 -*- from __future__ import print_function @@ -44,7 +44,7 @@ if not sys.version_info[:2] == (2, 7): sys.exit() # Set variable -__version__ = '1.2.4' +__version__ = '1.2.4p1' debug = False today = datetime.date.today() ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36', 'accept': '*/*'} @@ -392,6 +392,7 @@ def GetEPGFromSKB(ChannelInfo): data = re.sub(pattern, partial(replacement, tag='span'), data) strainer = SoupStrainer('div', {'id':'dawn'}) soup = BeautifulSoup(data, htmlparser, parse_only=strainer, from_encoding='utf-8') + soup = soup.prettify() html = soup.find_all('li') if soup.find_all('li') else '' if(html): for row in html: @@ -401,14 +402,17 @@ def GetEPGFromSKB(ChannelInfo): startTime = str(day) + ' ' + row.find('span', {'class':'time'}).text startTime = datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M') startTime = startTime.strftime('%Y%m%d%H%M%S') - cell = row.find('span', {'class':'title'}).text.decode('string_escape').strip() - pattern = "^(.*?)(\(([\d,]+)회\))?(<(.*)>)?(\((재)\))?$" - matches = re.match(pattern, cell) - if not(matches is None) : - programName = matches.group(1) if matches.group(1) else '' - subprogramName = matches.group(5) if matches.group(5) else '' - rebroadcast = True if matches.group(7) else False - episode = matches.group(3) if matches.group(3) else '' + cell = row.find('span', {'class':'title'}) + print(cell) + if(cell): + cell = cell.text.decode('string_escape').strip() + pattern = "^(.*?)(\(([\d,]+)회\))?(<(.*)>)?(\((재)\))?$" + matches = re.match(pattern, cell) + if not(matches is None) : + programName = matches.group(1) if matches.group(1) else '' + subprogramName = matches.group(5) if matches.group(5) else '' + rebroadcast = True if matches.group(7) else False + episode = matches.group(3) if matches.group(3) else '' rating = row.find('span', {'class':re.compile('^watch.*$')}) if not(rating is None) : rating = int(rating.text.decode('string_escape').replace('세','').strip()) @@ -459,7 +463,7 @@ def GetEPGFromSKY(ChannelInfo): desc = description if description else '' if desc: if summary : desc = desc + '\n' + summary - else: + else: desc = summary category = program['program_category1'] episode = program['episode_id'] if program['episode_id'] else ''