From a3c733d686f5f79f53d7f54f62703dc09571f328 Mon Sep 17 00:00:00 2001 From: Tab Bennedum Date: Tue, 25 Nov 2014 13:19:39 -0500 Subject: [PATCH 1/3] Removed redundant call to helpers.mapIndexersToShow. --- sickbeard/webapi.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index 9e962f8a..6fa48fb7 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -2724,6 +2724,8 @@ class CMD_Shows(ApiCall): if self.paused != None and bool(self.paused) != bool(curShow.paused): continue + indexerShow = helpers.mapIndexersToShow(curShow) + showDict = { "paused": curShow.paused, "quality": _get_quality_string(curShow.quality), @@ -2732,8 +2734,8 @@ class CMD_Shows(ApiCall): "sports": curShow.sports, "anime": curShow.anime, "indexerid": curShow.indexerid, - "tvdbid": helpers.mapIndexersToShow(curShow)[1], - "tvrage_id": helpers.mapIndexersToShow(curShow)[2], + "tvdbid": indexerShow[1], + "tvrage_id": indexerShow[2], "tvrage_name": curShow.name, "network": curShow.network, "show_name": curShow.name, From 924dc04a07acd768f8fc3a2eb8e90a618987c527 Mon Sep 17 00:00:00 2001 From: Tab Bennedum Date: Tue, 25 Nov 2014 13:33:33 -0500 Subject: [PATCH 2/3] Added failed download API. --- gui/slick/interfaces/default/apiBuilder.tmpl | 10 ++++++++ sickbeard/webapi.py | 26 ++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/gui/slick/interfaces/default/apiBuilder.tmpl b/gui/slick/interfaces/default/apiBuilder.tmpl index fedb8267..0ad9b81f 100644 --- a/gui/slick/interfaces/default/apiBuilder.tmpl +++ b/gui/slick/interfaces/default/apiBuilder.tmpl @@ -51,6 +51,7 @@ addList("Command", "Scene Exceptions", "?cmd=exceptions", "exceptions"); addList("Command", "History", "?cmd=history", "history"); addOption("Command", "History.Clear", "?cmd=history.clear", "", "", "action"); addOption("Command", "History.Trim", "?cmd=history.trim", "", "", "action"); +addList("Command", "Failed", "?cmd=failed", "failed"); addList("Command", "PostProcess", "?cmd=postprocess", "postprocess", "", "","action"); addList("Command", "Logs", "?cmd=logs", "logs"); @@ -321,6 +322,15 @@ addOption("history-limit", "Optional Param", "", 1); addOption("history-limit", "Show Only Downloaded", "&type=downloaded"); addOption("history-limit", "Show Only Snatched", "&type=snatched"); +addOption("failed", "Optional Param", "", 1); +//addOptGroup("failed", "Limit Results"); +addList("failed", "Limit Results (2)", "&limit=2", "failed-limit"); +addList("failed", "Limit Results (25)", "&limit=25", "failed-limit"); +addList("failed", "Limit Results (50)", "&limit=50", "failed-limit"); +//endOptGroup("failed"); + +addOption("failed-limit", "Optional Param", "", 1); + addOption("exceptions", "Optional Param", "", 1); #for $curShow in $sortedShowList: addOption("exceptions", "$curShow.name", "&indexerid=$curShow.indexerid"); diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index 6fa48fb7..3db3e2a8 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -1260,6 +1260,31 @@ class CMD_HistoryTrim(ApiCall): return _responds(RESULT_SUCCESS, msg="Removed history entries greater than 30 days old") +class CMD_Failed(ApiCall): + _help = {"desc": "display failed downloads", + "optionalParameters": {"limit": {"desc": "limit returned results"} + } + } + + def __init__(self, handler, args, kwargs): + # required + # optional + self.limit, args = self.check_params(args, kwargs, "limit", 100, False, "int", []) + # super, missing, help + ApiCall.__init__(self, handler, args, kwargs) + + def run(self): + """ display failed downloads """ + + myDB = db.DBConnection('failed.db', row_type="dict") + + ulimit = min(int(self.limit), 100) + if ulimit == 0: + sqlResults = myDB.select("SELECT * FROM failed") + else: + sqlResults = myDB.select("SELECT * FROM failed LIMIT ?", [ulimit]) + + return _responds(RESULT_SUCCESS, sqlResults) class CMD_Logs(ApiCall): _help = {"desc": "view sickrage's log", @@ -2807,6 +2832,7 @@ _functionMaper = {"help": CMD_Help, "history": CMD_History, "history.clear": CMD_HistoryClear, "history.trim": CMD_HistoryTrim, + "failed": CMD_Failed, "logs": CMD_Logs, "sb": CMD_SickBeard, "postprocess": CMD_PostProcess, From 1e8c0abac46e327e2c231610129e1154133c6080 Mon Sep 17 00:00:00 2001 From: Tab Bennedum Date: Tue, 25 Nov 2014 14:31:44 -0500 Subject: [PATCH 3/3] Added backlog API. --- gui/slick/interfaces/default/apiBuilder.tmpl | 1 + sickbeard/webapi.py | 42 +++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/gui/slick/interfaces/default/apiBuilder.tmpl b/gui/slick/interfaces/default/apiBuilder.tmpl index 0ad9b81f..4ff364f3 100644 --- a/gui/slick/interfaces/default/apiBuilder.tmpl +++ b/gui/slick/interfaces/default/apiBuilder.tmpl @@ -52,6 +52,7 @@ addList("Command", "History", "?cmd=history", "history"); addOption("Command", "History.Clear", "?cmd=history.clear", "", "", "action"); addOption("Command", "History.Trim", "?cmd=history.trim", "", "", "action"); addList("Command", "Failed", "?cmd=failed", "failed"); +addOption("Command", "Backlog", "?cmd=backlog"); addList("Command", "PostProcess", "?cmd=postprocess", "postprocess", "", "","action"); addList("Command", "Logs", "?cmd=logs", "logs"); diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index 3db3e2a8..343bb5ef 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -37,7 +37,7 @@ from sickbeard import processTV from sickbeard import network_timezones, sbdatetime from sickbeard.exceptions import ex from sickbeard.common import SNATCHED, SNATCHED_PROPER, DOWNLOADED, SKIPPED, UNAIRED, IGNORED, ARCHIVED, WANTED, UNKNOWN -from common import Quality, qualityPresetStrings, statusStrings +from common import Quality, Overview, qualityPresetStrings, statusStrings try: import json @@ -1286,6 +1286,45 @@ class CMD_Failed(ApiCall): return _responds(RESULT_SUCCESS, sqlResults) +class CMD_Backlog(ApiCall): + _help = {"desc": "display backlogged episodes"} + + def __init__(self, handler, args, kwargs): + # required + # optional + # super, missing, help + ApiCall.__init__(self, handler, args, kwargs) + + def run(self): + """ display backlogged episodes """ + + shows = [] + + myDB = db.DBConnection(row_type="dict") + for curShow in sickbeard.showList: + + showEps = [] + + sqlResults = myDB.select( + "SELECT * FROM tv_episodes WHERE showid = ? ORDER BY season DESC, episode DESC", + [curShow.indexerid]) + + for curResult in sqlResults: + + curEpCat = curShow.getOverview(int(curResult["status"])) + if curEpCat and curEpCat in (Overview.WANTED, Overview.QUAL): + showEps.append(curResult) + + if showEps: + shows.append({ + "indexerid": curShow.indexerid, + "show_name": curShow.name, + "status": curShow.status, + "episodes": showEps + }) + + return _responds(RESULT_SUCCESS, shows) + class CMD_Logs(ApiCall): _help = {"desc": "view sickrage's log", "optionalParameters": {"min_level ": { @@ -2833,6 +2872,7 @@ _functionMaper = {"help": CMD_Help, "history.clear": CMD_HistoryClear, "history.trim": CMD_HistoryTrim, "failed": CMD_Failed, + "backlog": CMD_Backlog, "logs": CMD_Logs, "sb": CMD_SickBeard, "postprocess": CMD_PostProcess,