Beispiel #1
0
 def GetShowBanner(self, show_id, update=False):
     image = None
     if show_id == '0':
         return ''
     file_path = cache.image_cache_dir + show_id + '.banner.jpg'
     if not os.path.exists(file_path) or update:
         # Download image from SB server.
         try:
             image = GetUrlData(url=settings.__url__ +
                                '?cmd=show.getbanner&tvdbid=' +
                                str(show_id))
             if (image == None) or (len(image) < 1024):
                 # Get generic image instead.
                 with open(xbmc.translatePath(
                         'special://home/addons/plugin.video.sickrage/resources/images/missing_banner.jpg'
                 ),
                           mode='rb') as f:
                     image = f.read()
         except Exception, e:
             common.errorWindow(sys._getframe().f_code.co_name,
                                self.CONNECT_ERROR + str(e))
             return ''
         # Write image file to local cache.
         try:
             if not os.path.exists(os.path.dirname(file_path)):
                 os.makedirs(os.path.dirname(file_path))
             f = open(file_path, 'wb+')
             f.write(image)
             f.close()
         except Exception, e:
             common.errorWindow(sys._getframe().f_code.co_name, str(e))
Beispiel #2
0
 def GetDefaults(self):
     defaults = []
     try:
         response = GetUrlData(url=settings.__url__ + '?cmd=sb.getdefaults')
         if not response:
             return None
         result = json.loads(response)
         print result.keys()
         defaults_data = result.get('data')
         if defaults_data:
             defaults = [
                 defaults_data['status'], defaults_data['flatten_folders'],
                 str(defaults_data['initial'])
             ]
         else:
             defaults = [
                 'skipped', 1,
                 [
                     "sdtv", "sddvd", "hdtv", "rawhdtv", "fullhdtv",
                     "hdwebdl", "fullhdwebdl", "hdbluray", "fullhdbluray",
                     "unknown"
                 ]
             ]
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
def displayError(error_code, err=""):
    if error_code == "1":
        common.errorWindow("Error", "Must configure IP and port settings before use.")
    elif error_code == "2":
        common.errorWindow("Error", "Invalid username or password.")
    elif error_code == "3":
        common.errorWindow("Error", "Unable to connect to SickRage webserver.\nCheck the IP and port settings.")
    elif error_code == "4":
        common.errorWindow("Error", "Unable to retrieve API key.\nEnter or paste API key manually into settings field.\nOr check username and password, that the API key was generated on webserver, and if webserver is running.")
    elif error_code == "5":
        common.errorWindow("Exception Error", str(err))
Beispiel #4
0
 def GetRootDirs(self):
     directory_result = []
     try:
         response = GetUrlData(url=settings.__url__ + '?cmd=sb.getrootdirs')
         if not response:
             return None
         result = json.loads(response)
         result = result.get('data')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #5
0
 def DeleteShow(self, tvdbid, removefiles):
     message = ""
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=show.delete&tvdbid=' + str(tvdbid) +
                               '&removefiles=' + str(removefiles))
         result = json.loads(response)
         message = result.get('message')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #6
0
 def GetShowIds(self):
     show_ids = []
     try:
         response = GetUrlData(url=settings.__url__ + "?cmd=shows")
         if not response:
             return None
         result = json.loads(response)
         for each in result['data']:
             show_ids.append(each)
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #7
0
 def GetLog(self, min_level):
     log_list = []
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=logs&min_level=' + str(min_level))
         if not response:
             return None
         result = json.loads(response)
         log_list = result.get('data')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #8
0
 def ForceSearch(self, show_id):
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=show.update&tvdbid=' + show_id)
         if not response:
             return None
         result = json.loads(response)
         message = result.get('message')
         success = result.get('result')
         common.errorWindow("Force Update", message + " [" + success + "]")
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #9
0
 def GetHistory(self, num_entries):
     history = []
     xbmc.log('sickbeard.GetHistory')
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=history&limit=' + str(num_entries))
         if not response:
             return None
         result = json.loads(response)
         history = result.get('data')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #10
0
 def GetFutureShows(self):
     future_list = []
     try:
         response = GetUrlData(
             url=settings.__url__ +
             '?cmd=future&sort=date&type=today|soon|later')
         if not response:
             return None
         result = json.loads(response)
         future_list = result.get('data')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #11
0
 def GetSeasonNumberList(self, show_id):
     season_number_list = []
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=show.seasonlist&tvdbid=' + show_id)
         if not response:
             return
         result = json.loads(response)
         season_number_list = result.get('data')
         season_number_list.sort()
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #12
0
 def GetVersion(self):
     version = ""
     try:
         response = GetUrlData(url=settings.__url__ + '?cmd=sb')
         result = json.loads(response)
         api = getFromDict(result, ['data', 'api_version'], 'Unknown')
         version = getFromDict(result, ['data', 'sb_version'], 'Unknown')
         if version == 'Unknown':
             version = getFromDict(result, ['data', 'sr_version'],
                                   'Unknown')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #13
0
 def SetShowStatus(self, tvdbid, season, ep, status):
     result = []
     try:
         response = GetUrlData(
             url=settings.__url__ + '?cmd=episode.setstatus&tvdbid=' +
             str(tvdbid) + '&season=' + str(season) + '&episode=' +
             str(ep) + '&status=' + status + '&force=True')
         if not response:
             return None
         result = json.loads(response)
         # No result is actually returned from this call.
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #14
0
 def SetPausedState(self, paused, show_id):
     message = ""
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=show.pause&indexerid=' + show_id +
                               '&tvdbid=' + show_id + '&pause=' + paused)
         if not response:
             return None
         result = json.loads(response)
         message = result.get('message')
         success = result.get('result')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #15
0
 def AddNewShow(self, tvdbid, location, prev_aired_status, future_status,
                flatten_folders, quality):
     result = ""
     try:
         url = settings.__url__ + '?cmd=show.addnew&tvdbid=' + str(
             tvdbid
         ) + '&location=' + location + '&status=' + prev_aired_status + '&future_status=' + future_status + '&flatten_folders=' + str(
             flatten_folders) + '&initial=' + quality
         print 'Add Show Request:' + url
         response = GetUrlData(url=url)
         result = json.loads(response)
         success = result.get('result', 'Unknown result!')
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #16
0
 def GetShowInfo(self, show_ids):
     show_info = {}
     try:
         for id in show_ids:
             response = GetUrlData(url=settings.__url__ +
                                   '?cmd=show&tvdbid=' + id)
             if not response:
                 return None
             result = json.loads(response)
             name = getFromDict(result, ['data', 'show_name'], '')
             paused = getFromDict(result, ['data', 'paused'], '')
             status = getFromDict(result, ['data', 'status'], '')
             show_info[name] = [id, paused, status]
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #17
0
 def ForceDownload(self, tvdbid, season, ep):
     message = ""
     try:
         response = GetUrlData(
             url=settings.__url__ + '?cmd=episode.search&tvdbid=' +
             str(tvdbid) + '&season=' + str(season) + '&episode=' + str(ep))
         if not response:
             return None
         result = json.loads(response)
         message = result.get('message')
         success = result.get('result')
         common.errorWindow(sys._getframe().f_code.co_name,
                            message + " [" + success + "]")
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #18
0
 def GetBacklog(self):
     results = []
     try:
         response = GetUrlData(url=settings.__url__ + "?cmd=backlog")
         if not response:
             return None
         result = json.loads(response)
         for show in result['data']:
             show_name = show['show_name']
             status = show['status']
             for episode in show['episodes']:
                 episode['show_name'] = show_name
                 episode['status'] = status
                 results.append(episode)
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #19
0
 def GetShows(self):
     shows = []
     try:
         response = GetUrlData(url=settings.__url__ + '?cmd=shows')
         if not response:
             return None
         result = json.loads(response)
         for each in result['data']:
             show = {}
             # Minimum required fields listed first.
             show['tvdbid'] = str(
                 getFromDict(result, ['data', each, 'tvdbid'], ''))
             show['show_name'] = FixBadChar(
                 getFromDict(result, ['data', each, 'show_name'], ''))
             show['paused'] = getFromDict(result, ['data', each, 'paused'],
                                          0)
             show['status'] = getFromDict(result, ['data', each, 'status'],
                                          '')
             show['next_ep_airdate'] = getFromDict(
                 result, ['data', each, 'next_ep_airdate'], '')
             show['anime'] = getFromDict(result, ['data', each, 'anime'],
                                         '')
             show['indexerid'] = str(
                 getFromDict(result, ['data', each, 'indexerid'], ''))
             show['language'] = getFromDict(result,
                                            ['data', each, 'language'], '')
             show['network'] = getFromDict(result,
                                           ['data', each, 'network'], '')
             show['next_ep_airdate'] = getFromDict(
                 result, ['data', each, 'next_ep_airdate'], '')
             show['quality'] = getFromDict(result,
                                           ['data', each, 'quality'], '')
             show['sports'] = getFromDict(result, ['data', each, 'sports'],
                                          '')
             show['subtitles'] = getFromDict(result,
                                             ['data', each, 'subtitles'],
                                             '')
             show['tvrage_id'] = str(
                 getFromDict(result, ['data', each, 'tvrage_id'], ''))
             show['tvrage_name'] = getFromDict(
                 result, ['data', each, 'tvrage_name'], '')
             shows.append(show)
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
Beispiel #20
0
 def SearchShowName(self, name):
     search_results = []
     try:
         response = GetUrlData(url=settings.__url__ +
                               '?cmd=sb.searchtvdb&name=' + name +
                               '&lang=en')
         if not response:
             return None
         result = json.loads(response)
         if result['result'] != 'success':
             return search_results
         for each in getFromDict(result, ['data', 'results'], {}):
             # Limit results to segments that contain an attribute 'tvdbid'.  SickRage webapi.py has a bug where it returns both tvdb and tvrage results together, even though they have separate search functions.
             if (each.get('tvdbid') != None):
                 search_results.append(each)
     except Exception, e:
         common.errorWindow(sys._getframe().f_code.co_name,
                            self.CONNECT_ERROR + str(e))
def displayError(error_code, err=""):
    if error_code == "1":
        common.errorWindow("Error",
                           "Must configure IP and port settings before use.")
    elif error_code == "2":
        common.errorWindow("Error", "Invalid username or password.")
    elif error_code == "3":
        common.errorWindow(
            "Error",
            "Unable to connect to SickRage webserver.\nCheck the IP and port settings."
        )
    elif error_code == "4":
        common.errorWindow(
            "Error",
            "Unable to retrieve API key.\nEnter or paste API key manually into settings field.\nOr check username and password, that the API key was generated on webserver, and if webserver is running."
        )
    elif error_code == "5":
        common.errorWindow("Exception Error", str(err))
Beispiel #22
0
    def GetShowDetails(self, show_id):
        details = []
        total = []
        try:
            response = GetUrlData(url=settings.__url__ + '?cmd=show&tvdbid=' +
                                  show_id)
            if not response:
                return None
            result = json.loads(response)
            details = result.get('data')

            response = GetUrlData(url=settings.__url__ +
                                  '?cmd=show.stats&tvdbid=' + show_id)
            if not response:
                return None
            result = json.loads(response)
            total = getFromDict(result, ['data', 'total'], {})
        except Exception, e:
            common.errorWindow(sys._getframe().f_code.co_name,
                               self.CONNECT_ERROR + str(e))
Beispiel #23
0
    def GetSeasonEpisodeList(self, show_id, season):
        season_episodes = []
        try:
            season = str(season)
            response = GetUrlData(url=settings.__url__ +
                                  '?cmd=show.seasons&tvdbid=' + show_id +
                                  '&season=' + season)
            if not response:
                return
            result = json.loads(response)
            season_episodes = result.get('data')

            for key in season_episodes.iterkeys():
                if int(key) < 10:
                    newkey = '{0}'.format(key.zfill(2))
                    if newkey not in season_episodes:
                        season_episodes[newkey] = season_episodes[key]
                        del season_episodes[key]
        except Exception, e:
            common.errorWindow(sys._getframe().f_code.co_name,
                               self.CONNECT_ERROR + str(e))