fix series creator
This commit is contained in:
parent
373ff6ee0f
commit
6d968d54cc
1 changed files with 53 additions and 52 deletions
105
ox/web/imdb.py
105
ox/web/imdb.py
|
@ -158,15 +158,6 @@ class Imdb(SiteParser):
|
||||||
'type': 'list'
|
'type': 'list'
|
||||||
},
|
},
|
||||||
'country': zebra_list('Country', more=['<a.*?>(.*?)</a>']),
|
'country': zebra_list('Country', more=['<a.*?>(.*?)</a>']),
|
||||||
'creator': {
|
|
||||||
'page': '',
|
|
||||||
're': [
|
|
||||||
'<div class="credit_summary_item">.*?<h4.*?>Creator.?:</h4>(.*?)</div>',
|
|
||||||
'<a href="/name/.*?>(.*?)</a>',
|
|
||||||
lambda ll: strip_tags(ll)
|
|
||||||
],
|
|
||||||
'type': 'list'
|
|
||||||
},
|
|
||||||
'director': reference_section('directors'),
|
'director': reference_section('directors'),
|
||||||
'editor': reference_section('editors'),
|
'editor': reference_section('editors'),
|
||||||
'composer': reference_section('composers'),
|
'composer': reference_section('composers'),
|
||||||
|
@ -329,6 +320,8 @@ class Imdb(SiteParser):
|
||||||
}
|
}
|
||||||
|
|
||||||
def read_url(self, url, timeout):
|
def read_url(self, url, timeout):
|
||||||
|
if self.debug:
|
||||||
|
print(url)
|
||||||
if url not in self._cache:
|
if url not in self._cache:
|
||||||
self._cache[url] = read_url(url, timeout=timeout, unicode=True)
|
self._cache[url] = read_url(url, timeout=timeout, unicode=True)
|
||||||
return self._cache[url]
|
return self._cache[url]
|
||||||
|
@ -451,49 +444,6 @@ class Imdb(SiteParser):
|
||||||
if 'episodeTitle' in self:
|
if 'episodeTitle' in self:
|
||||||
self['episodeTitle'] = re.sub('Episode \#\d+\.\d+', '', self['episodeTitle'])
|
self['episodeTitle'] = re.sub('Episode \#\d+\.\d+', '', self['episodeTitle'])
|
||||||
|
|
||||||
if 'series' in self:
|
|
||||||
series = Imdb(self['series'], timeout=timeout)
|
|
||||||
self['seriesTitle'] = series['title']
|
|
||||||
if 'episodeTitle' in self:
|
|
||||||
self['seriesTitle'] = series['title']
|
|
||||||
if 'season' in self and 'episode' in self:
|
|
||||||
self['title'] = "%s (S%02dE%02d) %s" % (
|
|
||||||
self['seriesTitle'], self['season'], self['episode'], self['episodeTitle'])
|
|
||||||
else:
|
|
||||||
self['title'] = "%s (S01) %s" % (self['seriesTitle'], self['episodeTitle'])
|
|
||||||
self['season'] = 1
|
|
||||||
self['title'] = self['title'].strip()
|
|
||||||
if 'director' in self:
|
|
||||||
self['episodeDirector'] = self['director']
|
|
||||||
|
|
||||||
if 'creator' not in series and 'director' in series:
|
|
||||||
series['creator'] = series['director']
|
|
||||||
if len(series['creator']) > 10:
|
|
||||||
series['creator'] = series['director'][:1]
|
|
||||||
|
|
||||||
for key in ['creator', 'country']:
|
|
||||||
if key in series:
|
|
||||||
self[key] = series[key]
|
|
||||||
|
|
||||||
if 'year' in series:
|
|
||||||
self['seriesYear'] = series['year']
|
|
||||||
if 'year' not in self:
|
|
||||||
self['year'] = series['year']
|
|
||||||
|
|
||||||
if 'year' in self:
|
|
||||||
self['episodeYear'] = self['year']
|
|
||||||
if 'creator' in self:
|
|
||||||
self['seriesDirector'] = self['creator']
|
|
||||||
if 'originalTitle' in self:
|
|
||||||
del self['originalTitle']
|
|
||||||
else:
|
|
||||||
for key in ('seriesTitle', 'episodeTitle', 'season', 'episode'):
|
|
||||||
if key in self:
|
|
||||||
del self[key]
|
|
||||||
if 'creator' in self:
|
|
||||||
if 'director' in self:
|
|
||||||
self['episodeDirector'] = self['director']
|
|
||||||
self['director'] = self['creator']
|
|
||||||
|
|
||||||
#make lists unique but keep order
|
#make lists unique but keep order
|
||||||
for key in ('director', 'language'):
|
for key in ('director', 'language'):
|
||||||
|
@ -581,6 +531,57 @@ class Imdb(SiteParser):
|
||||||
series_credit = [c for c in self['credits'] if c.get('deparment') == deparment]
|
series_credit = [c for c in self['credits'] if c.get('deparment') == deparment]
|
||||||
if series_credit:
|
if series_credit:
|
||||||
self[key] = [c['name'] for c in series_credit]
|
self[key] = [c['name'] for c in series_credit]
|
||||||
|
creator = []
|
||||||
|
for c in self.get('credits', []):
|
||||||
|
if '(created by)' in c['roles'] and c['name'] not in creator:
|
||||||
|
creator.append(c['name'])
|
||||||
|
if creator:
|
||||||
|
self['creator'] = creator
|
||||||
|
|
||||||
|
if 'series' in self:
|
||||||
|
series = Imdb(self['series'], timeout=timeout)
|
||||||
|
self['seriesTitle'] = series['title']
|
||||||
|
if 'episodeTitle' in self:
|
||||||
|
self['seriesTitle'] = series['title']
|
||||||
|
if 'season' in self and 'episode' in self:
|
||||||
|
self['title'] = "%s (S%02dE%02d) %s" % (
|
||||||
|
self['seriesTitle'], self['season'], self['episode'], self['episodeTitle'])
|
||||||
|
else:
|
||||||
|
self['title'] = "%s (S01) %s" % (self['seriesTitle'], self['episodeTitle'])
|
||||||
|
self['season'] = 1
|
||||||
|
self['title'] = self['title'].strip()
|
||||||
|
if 'director' in self:
|
||||||
|
self['episodeDirector'] = self['director']
|
||||||
|
|
||||||
|
if 'creator' not in series and 'director' in series:
|
||||||
|
series['creator'] = series['director']
|
||||||
|
if len(series['creator']) > 10:
|
||||||
|
series['creator'] = series['director'][:1]
|
||||||
|
|
||||||
|
for key in ['creator', 'country']:
|
||||||
|
if key in series:
|
||||||
|
self[key] = series[key]
|
||||||
|
|
||||||
|
if 'year' in series:
|
||||||
|
self['seriesYear'] = series['year']
|
||||||
|
if 'year' not in self:
|
||||||
|
self['year'] = series['year']
|
||||||
|
|
||||||
|
if 'year' in self:
|
||||||
|
self['episodeYear'] = self['year']
|
||||||
|
if 'creator' in self:
|
||||||
|
self['seriesDirector'] = self['creator']
|
||||||
|
if 'originalTitle' in self:
|
||||||
|
del self['originalTitle']
|
||||||
|
else:
|
||||||
|
for key in ('seriesTitle', 'episodeTitle', 'season', 'episode'):
|
||||||
|
if key in self:
|
||||||
|
del self[key]
|
||||||
|
if 'creator' in self:
|
||||||
|
if 'director' in self:
|
||||||
|
self['episodeDirector'] = self['director']
|
||||||
|
self['director'] = self['creator']
|
||||||
|
|
||||||
|
|
||||||
class ImdbCombined(Imdb):
|
class ImdbCombined(Imdb):
|
||||||
def __init__(self, id, timeout=-1):
|
def __init__(self, id, timeout=-1):
|
||||||
|
|
Loading…
Reference in a new issue