diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 6e79d7604ad19b6739b153e3c57dfd0366d55f6d..abb87403895ffa2a441bb91b19e20b360b78cd0a 100755 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -26,6 +26,7 @@ import re import threading import datetime import random +from sets import Set from Cheetah.Template import Template import cherrypy.lib @@ -1553,26 +1554,35 @@ class NewHomeAddShows: lang = "en" baseURL = "http://thetvdb.com/api/GetSeries.php?" + nameUTF8 = name.encode('utf-8') - params = {'seriesname': name.encode('utf-8'), - 'language': lang} + # Use each word in the show's name as a possible search term + keywords = nameUTF8.split(' ') - finalURL = baseURL + urllib.urlencode(params) + # Insert the whole show's name as the first search term so best results are first + # ex: keywords = ['Some Show Name', 'Some', 'Show', 'Name'] + keywords.insert(0, nameUTF8) - urlData = helpers.getURL(finalURL) + # Query the TVDB for each search term and build the list of results + results = [] + for searchTerm in keywords: + params = {'seriesname': searchTerm, + 'language': lang} - try: - seriesXML = etree.ElementTree(etree.XML(urlData)) - except Exception, e: - logger.log(u"Unable to parse XML for some reason: "+ex(e)+" from XML: "+urlData, logger.ERROR) - return '' + finalURL = baseURL + urllib.urlencode(params) - series = seriesXML.getiterator('Series') + urlData = helpers.getURL(finalURL) - results = [] + try: + seriesXML = etree.ElementTree(etree.XML(urlData)) + except Exception, e: + logger.log(u"Unable to parse XML for some reason: "+ex(e)+" from XML: "+urlData, logger.ERROR) + return '' + + series = seriesXML.getiterator('Series') - for curSeries in series: - results.append((int(curSeries.findtext('seriesid')), curSeries.findtext('SeriesName'), curSeries.findtext('FirstAired'))) + for curSeries in series: + results.append((int(curSeries.findtext('seriesid')), curSeries.findtext('SeriesName'), curSeries.findtext('FirstAired'))) lang_id = tvdb_api.Tvdb().config['langabbv_to_id'][lang]