Skip to content

Instantly share code, notes, and snippets.

@Krayons
Created May 2, 2013 07:55
Show Gist options
  • Save Krayons/5500784 to your computer and use it in GitHub Desktop.
Save Krayons/5500784 to your computer and use it in GitHub Desktop.
import re
from urllib import quote_plus
class TvRage:
APIKEY = '7FwjZ8loweFcOhHfnU3E'
const MATCH_PROBABILITY = 75
xmlFullSearchUrl = "http://services.tvrage.com/feeds/full_search.php?show=";
xmlFullShowInfoUrl = "http://services.tvrage.com/feeds/full_show_info.php?sid=";
xmlEpisodeInfoUrl = "http://services.tvrage.com/myfeeds/episodeinfo.php?key=" + APIKEY;
def __init__(self):
pass
def parseNameEpSeason(releasename):
showinfo = {'name' : '',
'season' : '',
'episode' : '',
'seriesfull' : '',
'airdate' : '',
'country' : '',
'year' : '',
'cleanname' : ''}
#S01E01-E02
#S01E01-02
pattern = '^(.*?)[\. ]s(\d{1,2})\.?e(\d{1,3})(?:\-e?|\-?e)(\d{1,3})\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = [int(m[0][2]), int(m[0][3])]
return showinfo
#S01E0102 - lame no delimit numbering, regex would collide if there was ever 1000 ep season
pattern = '^(.*?)[\. ]s(\d{2})\.?e(\d{2})(\d{2})\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = [int(m[0][2]), int(m[0][3])]
return showinfo
#S01E01
#S01.E01
pattern = '^(.*?)[\. ]s(\d{1,2})\.?e(\d{1,3})\.?'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = int(m[0][2])
return showinfo
#S01
pattern = '^(.*?)[\. ]s(\d{1,2})\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = 'all'
return showinfo
#S01D1
#S1D1
pattern = '^(.*?)[\. ]s(\d{1,2})d\d{1}\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = 'all'
return showinfo
#1x01
pattern = '^(.*?)[\. ](\d{1,2})x(\d{1,3})\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = int(m[0][1])
showinfo['episode'] = int(m[0][2])
return showinfo
#2009.01.01
#2009-01-01
pattern = '^(.*?)[\. ](19|20)(\d{2})[\.\-](\d{2})[\.\-](\d{2})\.'
m = re.findall(pattern, releasename, flags=re.IGNORECASE)
if m:
showinfo['name'] = m[0][0]
showinfo['season'] = m[0][1] + m[0][2]
showinfo['episode'] = m[0][3] + '/' + m[0][4]
showinfo['airdate'] = m[0][1] + m[0][2] + '-' + m[0][3] +'-' + m[0][4]
return showinfo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment