Index: mythvideo/mythvideo/scripts/imdbpy.py
===================================================================
--- mythvideo/mythvideo/scripts/imdbpy.py (revision 12847)
+++ mythvideo/mythvideo/scripts/imdbpy.py (working copy)
@@ -31,7 +31,10 @@
print "You need to install the IMDbPy library from "\
"http://imdbpy.sourceforge.net/"
sys.exit(1)
-
+
+#episode_title_format = '%(series_title)s - %(season)02dx%(episode)02d - %(episode_title)s'
+episode_title_format = '%(series_title)s S%(season)d E%(episode)d "%(episode_title)s"'
+
def detect_series_query(search_string):
"""
Detects a series episode query.
@@ -41,19 +44,22 @@
"Sopranos S1E2"
"Sopranos S1 E2"
"Sopranos 1x2"
+ "Sopranos - 1x2"
"""
- m = re.match(r"(.+)\s*(s|(season)|\s)\s*(\d+)\s*(e|(episode)|x)\s*(\d+)",
+ m = re.match(r"((?P
.+?)( -)?)?(\s*)(s|(season)|\s)\s*(?P\d+)\s*(e|(episode)|x)\s*(?P\d+)",
search_string.lower())
- if m is None or m.group(1) is None or m.group(4) is None or \
- m.group(7) is None:
+ if m is None or m.group('title') is None or m.group('season') is None \
+ or m.group('episode') is None:
return (None, None, None)
- return (m.group(1), m.group(4), m.group(7))
+ return (m.group('title'), m.group('season'), m.group('episode'))
def episode_search(title, season, episode):
matches = []
imdb_access = imdb.IMDb()
series = imdb_access.search_movie(title.encode("ascii", 'replace'))
+ season = int(season)
+ episode = int(episode)
for serie in series:
if serie['kind'] == 'tv series':
@@ -61,14 +67,19 @@
imdb_access.update(serie, 'episodes')
if serie.has_key('episodes'):
try:
- ep = serie['episodes'][int(season)][int(episode)]
+ ep = serie['episodes'][season][episode]
except:
# Probably indexing exception in case the episode/season
# is not found.
continue
- matches.append([imdb_access.get_imdbID(ep),
- title.title().strip() + ", S" + season + " E" +
- episode, int(serie['year'])])
+ episode_title = episode_title_format % \
+ {
+ 'series_title': ep['series title'],
+ 'season': season,
+ 'episode': episode,
+ 'episode_title': ep['title']
+ }
+ matches.append([imdb_access.get_imdbID(ep), episode_title ,int(ep['year'])])
else:
matches.append([imdb_access.get_imdbID(serie),
serie['title'], int(serie['year'])])
@@ -185,9 +196,13 @@
if movie['kind'] == 'episode':
# print "TV Series episode detected"
- metadata += 'Title:%s, S%d E%d: \"%s\"' % \
- (movie['series title'], int(movie['season']),
- int(movie['episode']), movie['title']) + "\n"
+ metadata += 'Title:' + episode_title_format % \
+ {
+ 'series_title': movie['series title'],
+ 'season': int(movie['season']),
+ 'episode': int(movie['episode']),
+ 'episode_title': movie['title'],
+ } + '\n'
series = movie['episode of']
imdb_access.update(series)
metadata += createMetadataFromFirst('Runtime', 'runtimes', m=series)
@@ -202,7 +217,9 @@
if 'plot' in movie.keys():
plots = movie['plot']
- if movie['plot outline'] is not None and len(movie['plot outline']):
+ if 'plot outline' in movie and \
+ movie['plot outline'] is not None and \
+ len(movie['plot outline']):
plots.append("Outline::" + movie['plot outline'])
if plots is not None:
# Find the shortest plot.
@@ -258,7 +275,7 @@
elif options.poster_search is not None:
poster_search(options.poster_search)
elif options.metadata_search is not None:
- print metadata_search(options.metadata_search)
+ print metadata_search(options.metadata_search).encode('ascii', 'replace')
else:
p.print_help()
sys.exit(0)