SKB 함수 속도 개선
This commit is contained in:
parent
03da769791
commit
2abd8db344
44
epg2xml.py
44
epg2xml.py
@ -35,7 +35,7 @@ except ImportError:
|
|||||||
reload(sys)
|
reload(sys)
|
||||||
sys.setdefaultencoding('utf-8')
|
sys.setdefaultencoding('utf-8')
|
||||||
|
|
||||||
__version__ = '1.2.1'
|
__version__ = '1.2.2'
|
||||||
|
|
||||||
if not sys.version_info[:2] == (2, 7):
|
if not sys.version_info[:2] == (2, 7):
|
||||||
print("Error : ", "python 2.7 버전이 필요합니다.", file=sys.stderr)
|
print("Error : ", "python 2.7 버전이 필요합니다.", file=sys.stderr)
|
||||||
@ -364,36 +364,38 @@ def GetEPGFromSKB(ChannelInfo):
|
|||||||
ChannelName = ChannelInfo[1]
|
ChannelName = ChannelInfo[1]
|
||||||
ServiceId = ChannelInfo[3]
|
ServiceId = ChannelInfo[3]
|
||||||
url = 'http://www.skbroadband.com/content/realtime/Channel_List.do'
|
url = 'http://www.skbroadband.com/content/realtime/Channel_List.do'
|
||||||
|
url = 'http://m.skbroadband.com/content/realtime/Channel_List.do'
|
||||||
|
#?key_depth1=5100&key_depth2=430&key_depth3=20170715'
|
||||||
epginfo = []
|
epginfo = []
|
||||||
for k in range(period):
|
for k in range(period):
|
||||||
day = today + datetime.timedelta(days=k)
|
day = today + datetime.timedelta(days=k)
|
||||||
params = {'key_depth2': ServiceId, 'key_depth3': day.strftime('%Y%m%d'), 'tab_gubun':'lst'}
|
params = {'key_depth2': ServiceId, 'key_depth3': day.strftime('%Y%m%d')}
|
||||||
try:
|
try:
|
||||||
response = requests.post(url, data=params, headers=ua, timeout=timeout)
|
response = requests.get(url, params=params, headers=ua, timeout=timeout)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
html_data = response.content
|
html_data = response.content
|
||||||
data = unicode(html_data, 'euc-kr', 'ignore').encode('utf-8', 'ignore')
|
data = unicode(html_data, 'euc-kr', 'ignore').encode('utf-8', 'ignore')
|
||||||
strainer = SoupStrainer('tr', {'class':day.strftime('%Y%m%d')})
|
strainer = SoupStrainer('div', {'id':'dawn'})
|
||||||
soup = BeautifulSoup(data, 'lxml', parse_only=strainer, from_encoding='utf-8')
|
soup = BeautifulSoup(data, 'lxml', parse_only=strainer, from_encoding='utf-8')
|
||||||
html = soup.find_all('tr') if soup.find_all('tr') else ''
|
html = soup.find_all('li') if soup.find_all('li') else ''
|
||||||
if(html):
|
if(html):
|
||||||
for row in html:
|
for row in html:
|
||||||
startTime = str(day) + ' ' + row.find('th').text
|
startTime = str(day) + ' ' + row.find('span', {'class':'time'}).text
|
||||||
for cell in [row.find_all('td')]:
|
cell = row.find('span', {'class':None}).text.decode('string_escape').strip()
|
||||||
pattern = "^(.*?)(\(([\d,]+)회\))?(<(.*)>)?(\((재)\))?$"
|
pattern = "^(.*?)(\(([\d,]+)회\))?(<(.*)>)?(\((재)\))?$"
|
||||||
matches = re.match(pattern, cell[0].text.decode('string_escape'))
|
matches = re.match(pattern, cell)
|
||||||
if not(matches is None) :
|
if not(matches is None) :
|
||||||
programName = matches.group(1) if matches.group(1) else ''
|
programName = matches.group(1) if matches.group(1) else ''
|
||||||
subprogramName = matches.group(5) if matches.group(5) else ''
|
subprogramName = matches.group(5) if matches.group(5) else ''
|
||||||
rebroadcast = True if matches.group(7) else False
|
rebroadcast = True if matches.group(7) else False
|
||||||
episode = matches.group(3) if matches.group(3) else ''
|
episode = matches.group(3) if matches.group(3) else ''
|
||||||
rating = re.match('.*\s*([\d,]+)\s*.*', cell[1].text.decode('string_escape'))
|
rating = row.find('span', {'class':re.compile('^watch.*$')})
|
||||||
if not(rating is None) :
|
if not(rating is None) :
|
||||||
rating = int(rating.group(1))
|
rating = int(rating.text.decode('string_escape').replace('세','').strip())
|
||||||
else :
|
else :
|
||||||
rating = 0
|
rating = 0
|
||||||
#programName, startTime, rating, subprogramName, rebroadcast, episode
|
#programName, startTime, rating, subprogramName, rebroadcast, episode
|
||||||
epginfo.append([programName, startTime, rating, subprogramName, rebroadcast, episode])
|
epginfo.append([programName, startTime, rating, subprogramName, rebroadcast, episode])
|
||||||
else:
|
else:
|
||||||
if(debug): printError(ChannelName + CONTENT_ERROR)
|
if(debug): printError(ChannelName + CONTENT_ERROR)
|
||||||
else: pass
|
else: pass
|
||||||
@ -530,7 +532,7 @@ def GetEPGFromMbc(ChannelInfo):
|
|||||||
for k in range(period):
|
for k in range(period):
|
||||||
day = today + datetime.timedelta(days=k)
|
day = today + datetime.timedelta(days=k)
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, params=params, headers=ua)
|
response = requests.get(url, params=params, headers=ua, timeout=timeout)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
json_data = response.text
|
json_data = response.text
|
||||||
try:
|
try:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user