diff --git a/.gitattributes b/.gitattributes index 69844f8edcd6dec8f0d55112811b4d6929baade3..661add718310ed0a18d672cb2f796e279973998e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -37,8 +37,8 @@ init.* text *.pyw text *.pyx text -# Cheetah template -*.tmpl text +# Mako template +*.mako text # Web file *.htm text diff --git a/gui/slick/interfaces/default/comingEpisodes.mako b/gui/slick/interfaces/default/comingEpisodes.mako index 752493538b45312bc688fae1409af30ef9222bdb..074c3462501a10676264c3c6a93ed9d142786cd6 100644 --- a/gui/slick/interfaces/default/comingEpisodes.mako +++ b/gui/slick/interfaces/default/comingEpisodes.mako @@ -238,7 +238,7 @@ $(document).ready(function(){ <a href="${sbRoot}/home/searchEpisode?show=${cur_result['showid']}&season=${cur_result['season']}&episode=${cur_result['episode']}" title="Manual Search" id="forceUpdate-${cur_result['showid']}x${cur_result['season']}x${cur_result['episode']}" class="forceUpdate epSearch"><img alt="[search]" height="16" width="16" src="${sbRoot}/images/search16.png" id="forceUpdateImage-${cur_result['showid']}" /></a> </td> </tr> - <!-- end cur_result['show_name'] //--> + <!-- end ${cur_result['show_name']} //--> % endfor </tbody> @@ -460,8 +460,8 @@ $(document).ready(function(){ % if 'calendar' == layout: -##<%today = datetime.date.today()%> -<% dates = [today + datetime.timedelta(days = i) for i in range(7)] %> +## <% today = datetime.date.today() %> +<% dates = [today.date() + datetime.timedelta(days = i) for i in range(7)] %> <% tbl_day = 0 %> <br> <br> @@ -525,9 +525,7 @@ $(document).ready(function(){ <div class="clearfix"></div> <script type="text/javascript" charset="utf-8"> -<!-- window.setInterval('location.reload(true)', 600000); // Refresh every 10 minutes -//--> </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_anime.mako b/gui/slick/interfaces/default/config_anime.mako index 05878e5d56a562c0b292213b5931d12b8a7d45ff..8ba6a04677e6ad842864e23c0343be93a9ccebf3 100644 --- a/gui/slick/interfaces/default/config_anime.mako +++ b/gui/slick/interfaces/default/config_anime.mako @@ -18,7 +18,7 @@ <ul> <li><a href="#core-component-group1">AnimeDB Settings</a></li> - <li><a href="#core-component-group2">Look & Feel</a></li> + <li><a href="#core-component-group2">Look & Feel</a></li> </ul> <div id="core-component-group1" class="tab-pane active component-group"> diff --git a/gui/slick/interfaces/default/config_backuprestore.mako b/gui/slick/interfaces/default/config_backuprestore.mako index 2ae855669bc86c6c1d885e9cdf0eae4c9f2cb87c..6eaeb3344650cb5c4e57a624bf2e697c61f5f9b0 100644 --- a/gui/slick/interfaces/default/config_backuprestore.mako +++ b/gui/slick/interfaces/default/config_backuprestore.mako @@ -87,9 +87,9 @@ <div class="clearfix"></div> <script type="text/javascript" charset="utf-8"> - jQuery('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' }); - jQuery('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 }); - jQuery('#config-components').tabs(); + $('#backupDir').fileBrowser({ title: 'Select backup folder to save to', key: 'backupPath' }); + $('#backupFile').fileBrowser({ title: 'Select backup files to restore', key: 'backupFile', includeFiles: 1 }); + $('#config-components').tabs(); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_general.mako b/gui/slick/interfaces/default/config_general.mako index b9c3208130fa817010f718bfe7e32d4298010354..6bd2311f867992997c1116ec56967c5f1fadc4f1 100644 --- a/gui/slick/interfaces/default/config_general.mako +++ b/gui/slick/interfaces/default/config_general.mako @@ -27,7 +27,6 @@ <script type="text/javascript" src="${sbRoot}/js/lib/bootstrap-formhelpers.min-2.3.0.js?${sbPID}"></script> <script type="text/javascript" charset="utf-8"> - <!-- $(document).ready(function(){ if ($("input[name='proxy_setting']").val().length == 0) { $("input[id='proxy_indexers']").prop('checked', false); @@ -43,7 +42,6 @@ } }); }); - //--> </script> <div id="config"> @@ -644,7 +642,7 @@ <label for="ep_default_deleted_status"> <span class="component-title">Default deleted episode status:</span> <span class="component-desc"> -% if not sickbeard.SKIP_REMOVED_FILES or (sickbeard.USE_TRAKT and sickbeard.TRAKT_USE_ROLLING_DOWNLOAD): +% if not sickbeard.SKIP_REMOVED_FILES: <select name="ep_default_deleted_status" id="ep_default_deleted_status" class="form-control input-sm"> % for defStatus in [ARCHIVED, IGNORED]: <option value="${defStatus}" ${('', 'selected="selected"')[sickbeard.EP_DEFAULT_DELETED_STATUS == defStatus]}>${statusStrings[defStatus]}</option> @@ -787,8 +785,8 @@ <div></div> <script type="text/javascript" charset="utf-8"> - jQuery('#log_dir').fileBrowser({ title: 'Select log file folder location' }); - jQuery('#config-components').tabs(); + $('#log_dir').fileBrowser({ title: 'Select log file folder location' }); + $('#config-components').tabs(); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_notifications.mako b/gui/slick/interfaces/default/config_notifications.mako index 8c0542e65421e5ca198123350150a134631975d4..099c24bdd81a125543c6942404ecee770c43cbc1 100644 --- a/gui/slick/interfaces/default/config_notifications.mako +++ b/gui/slick/interfaces/default/config_notifications.mako @@ -659,7 +659,7 @@ </label> <label> <span class="component-title"> </span> - <span class="component-desc">(Messages & Settings > Account & System Information > System Information > DVR name)</span> + <span class="component-desc">(Messages & Settings > Account & System Information > System Information > DVR name)</span> </label> </div> <input type="submit" class="config_submitter btn" value="Save Changes" /> @@ -1657,17 +1657,10 @@ <div class="field-pair"> <label for="trakt_start_paused"> <span class="component-title">Start paused</span> -% if not sickbeard.TRAKT_USE_ROLLING_DOWNLOAD: <span class="component-desc"> <input type="checkbox" name="trakt_start_paused" id="trakt_start_paused" ${('', 'checked="checked"')[bool(sickbeard.TRAKT_START_PAUSED)]}/> <p>show's grabbed from your trakt watchlist start paused.</p> </span> -% else: - <span class="component-desc"> - <input type="checkbox" name="trakt_start_paused" id="trakt_start_paused" #${('', 'checked="checked"')[bool(sickbeard.TRAKT_START_PAUSED)]} disabled="disable"/> - <p>show's grabbed from your trakt watchlist start paused.</p> - </span> -% endif </label> </div> </div> @@ -1681,48 +1674,6 @@ <span class="component-desc">Name(slug) of List on Trakt for blacklisting show on 'Add Trending Show' & 'Add Recommended Shows' pages</span> </label> </div> - <div class="field-pair"> - <label for="trakt_use_rolling_download"> - <span class="component-title">Use rolling download</span> - <span class="component-desc"> - <input type="checkbox" class="enabler" name="trakt_use_rolling_download" id="trakt_use_rolling_download" ${('', 'checked="checked"')[bool(sickbeard.TRAKT_USE_ROLLING_DOWNLOAD)]}/> - <p>Collect defined number of episodes after last watched one</p> - </span> - </label> - </div> - <div id="content_trakt_use_rolling_download"> - <div class="field-pair"> - <label for="trakt_rolling_num_ep"> - <span class="component-title">Number of episodes</span> - <span class="component-desc"> - <input type="number" name="trakt_rolling_num_ep" id="trakt_rolling_num_ep" value="${sickbeard.TRAKT_ROLLING_NUM_EP}" class="form-control input-sm input75"/> - </label> - <label> - <span class="component-title"> </span> - <span class="component-desc">Episodes that Sickrage will download based on the last watched episode</span> - </label> - </div> - <div class="field-pair"> - <label for="trakt_rolling_frequency"> - <span class="component-title">Rolling frequency check</span> - <input type="text" name="trakt_rolling_frequency" id="trakt_rolling_frequency" value="${sickbeard.TRAKT_ROLLING_FREQUENCY}" class="form-control input-sm input250" /> - </label> - <p> - <span class="component-desc">Hours between check. (Cannot be lower than 4 hours)</span> - </p> - </div> - <div class="field-pair"> - <label for="trakt_rolling_add_paused"> - <span class="component-title">Add new show as paused</span> - <span class="component-desc"> - <input type="checkbox" name="trakt_rolling_add_paused" id="trakt_rolling_add_paused" ${('', 'checked="checked"')[bool(sickbeard.TRAKT_ROLLING_ADD_PAUSED)]}/> - </label> - <label> - <span class="component-title"> </span> - <span class="component-desc">Stop rolling download to start to download episode.</span> - </label> - </div> - </div> <div class="testNotification" id="testTrakt-result">Click below to test.</div> <input type="button" class="btn" value="Test Trakt" id="testTrakt" /> <input type="submit" class="btn config_submitter" value="Save Changes" /> @@ -1882,6 +1833,6 @@ <div class="clearfix"></div> <script type="text/javascript" charset="utf-8"> - jQuery('#config-components').tabs(); + $('#config-components').tabs(); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_postProcessing.mako b/gui/slick/interfaces/default/config_postProcessing.mako index 05bc981f88b337110d36c1c31dd098a54e1f9b24..1b509883add04b01edbeed973427b9445a3e9b53 100644 --- a/gui/slick/interfaces/default/config_postProcessing.mako +++ b/gui/slick/interfaces/default/config_postProcessing.mako @@ -1131,8 +1131,8 @@ <div class="clearfix"></div> <script type="text/javascript" charset="utf-8"> - jQuery('#config-components').tabs(); - jQuery('#tv_download_dir').fileBrowser({ title: 'Select TV Download Directory' }); + $('#config-components').tabs(); + $('#tv_download_dir').fileBrowser({ title: 'Select TV Download Directory' }); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_providers.mako b/gui/slick/interfaces/default/config_providers.mako index 4b75373959c23d346ec6ecd4c62d49693342f112..a88ab938b147e4dcb2ab6d32563af09238b4320c 100644 --- a/gui/slick/interfaces/default/config_providers.mako +++ b/gui/slick/interfaces/default/config_providers.mako @@ -734,6 +734,6 @@ $(document).ready(function(){ </div> <script type="text/javascript" charset="utf-8"> - jQuery('#config-components').tabs(); + $('#config-components').tabs(); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_search.mako b/gui/slick/interfaces/default/config_search.mako index 11592fcacf84bb78f9fe91d0ded0e62dd279babe..b6fb9c2424ae95171fd954f1ab1dcfed37c6b75b 100644 --- a/gui/slick/interfaces/default/config_search.mako +++ b/gui/slick/interfaces/default/config_search.mako @@ -595,11 +595,11 @@ <div></div> <script type="text/javascript" charset="utf-8"> - jQuery('#config-components').tabs(); - jQuery('#nzb_dir').fileBrowser({ title: 'Select .nzb black hole/watch location' }); - jQuery('#torrent_dir').fileBrowser({ title: 'Select .torrent black hole/watch location' }); - jQuery('#torrent_path').fileBrowser({ title: 'Select .torrent download location' }); - jQuery('#tv_download_dir').fileBrowser({ title: 'Select TV download location' }); + $('#config-components').tabs(); + $('#nzb_dir').fileBrowser({ title: 'Select .nzb black hole/watch location' }); + $('#torrent_dir').fileBrowser({ title: 'Select .torrent black hole/watch location' }); + $('#torrent_path').fileBrowser({ title: 'Select .torrent download location' }); + $('#tv_download_dir').fileBrowser({ title: 'Select TV download location' }); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/config_subtitles.mako b/gui/slick/interfaces/default/config_subtitles.mako index 58243ba97b9f515b3ce66fdfe8be8a0e47e2f854..9e2b3b49aae1fe347d5694fbcaed93bce6c0741a 100644 --- a/gui/slick/interfaces/default/config_subtitles.mako +++ b/gui/slick/interfaces/default/config_subtitles.mako @@ -180,7 +180,7 @@ <div class="clearfix"></div> <script type="text/javascript" charset="utf-8"> - jQuery('#config-components').tabs(); - jQuery('#subtitles_dir').fileBrowser({ title: 'Select Subtitles Download Directory' }); + $('#config-components').tabs(); + $('#subtitles_dir').fileBrowser({ title: 'Select Subtitles Download Directory' }); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/editShow.mako b/gui/slick/interfaces/default/editShow.mako index 6c00f1d9dddcd982dc0c9150cc776e7c3c23498b..be62433ab15b71668ecc0a1b6ba772aa3e8fd306 100644 --- a/gui/slick/interfaces/default/editShow.mako +++ b/gui/slick/interfaces/default/editShow.mako @@ -136,7 +136,7 @@ Separate words with a comma, e.g. "word1,word2,word3"<br /> <script type="text/javascript" charset="utf-8"> var all_exceptions = new Array; - jQuery('#location').fileBrowser({ title: 'Select Show Location' }); + $('#location').fileBrowser({ title: 'Select Show Location' }); $('#submit').click(function(){ all_exceptions = [] @@ -162,7 +162,7 @@ Separate words with a comma, e.g. "word1,word2,word3"<br /> $('#SceneName').val('') - if (jQuery.inArray(scene_ex, all_exceptions) > -1 || (scene_ex == '')) + if ($.inArray(scene_ex, all_exceptions) > -1 || (scene_ex == '')) return $("#SceneException").show() diff --git a/gui/slick/interfaces/default/home.mako b/gui/slick/interfaces/default/home.mako index ffad9f1582a9d1536efd638f88e9e70e05f5e33f..909aadb0479e16ebb790f771f6f3cc9b1b570898 100644 --- a/gui/slick/interfaces/default/home.mako +++ b/gui/slick/interfaces/default/home.mako @@ -306,7 +306,7 @@ $(document).ready(function(){ <% fuzzydate = 'airdate' %> % if sickbeard.FUZZY_DATING: fuzzyMoment({ - dtInline : ${('true', 'false')[sickbeard.HOME_LAYOUT == 'poster']}, + dtInline : ${('true', 'false')[layout == 'poster']}, containerClass : '.${fuzzydate}', dateHasTime : false, dateFormat : '${sickbeard.DATE_PRESET}', @@ -317,7 +317,7 @@ $(document).ready(function(){ var $container = [$('#container'), $('#container-anime')]; - jQuery.each($container, function (j) { + $.each($container, function (j) { this.isotope({ itemSelector: '.show', sortBy : '${sickbeard.POSTER_SORTBY}', @@ -394,10 +394,10 @@ $(document).ready(function(){ % endif <span> Layout: <select name="layout" class="form-control form-control-inline input-sm" onchange="location = this.options[this.selectedIndex].value;"> - <option value="${sbRoot}/setHomeLayout/?layout=poster" ${('', 'selected="selected"')[sickbeard.HOME_LAYOUT == 'poster']}>Poster</option> - <option value="${sbRoot}/setHomeLayout/?layout=small" ${('', 'selected="selected"')[sickbeard.HOME_LAYOUT == 'small']}>Small Poster</option> - <option value="${sbRoot}/setHomeLayout/?layout=banner" ${('', 'selected="selected"')[sickbeard.HOME_LAYOUT == 'banner']}>Banner</option> - <option value="${sbRoot}/setHomeLayout/?layout=simple" ${('', 'selected="selected"')[sickbeard.HOME_LAYOUT == 'simple']}>Simple</option> + <option value="${sbRoot}/setHomeLayout/?layout=poster" ${('', 'selected="selected"')[layout == 'poster']}>Poster</option> + <option value="${sbRoot}/setHomeLayout/?layout=small" ${('', 'selected="selected"')[layout == 'small']}>Small Poster</option> + <option value="${sbRoot}/setHomeLayout/?layout=banner" ${('', 'selected="selected"')[layout == 'banner']}>Banner</option> + <option value="${sbRoot}/setHomeLayout/?layout=simple" ${('', 'selected="selected"')[layout == 'simple']}>Simple</option> </select> % if layout != 'poster': Search: @@ -815,11 +815,7 @@ $(document).ready(function(){ </td> <td align="center"> -% if sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT: - <img src="${sbRoot}/images/${('no16.png", alt="No"', 'yes16.png", alt="Yes"')[int(curShow.paused) == 0]} width="16" height="16" /> -% else: <img src="${sbRoot}/images/${('no16.png", alt="No"', 'yes16.png", alt="Yes"')[int(curShow.paused) == 0 and curShow.status == 'Continuing']} width="16" height="16" /> -% endif </td> <td align="center"> diff --git a/gui/slick/interfaces/default/home_postprocess.mako b/gui/slick/interfaces/default/home_postprocess.mako index e57294027480689ef3f66bafebc6a27d4934d0ae..4295d170cc28e9a4ef5b20d05a4f4b3e674a5f33 100644 --- a/gui/slick/interfaces/default/home_postprocess.mako +++ b/gui/slick/interfaces/default/home_postprocess.mako @@ -75,7 +75,7 @@ </form> <script type="text/javascript" charset="utf-8"> - jQuery('#episodeDir').fileBrowser({ title: 'Select Unprocessed Episode Folder', key: 'postprocessPath' }); + $('#episodeDir').fileBrowser({ title: 'Select Unprocessed Episode Folder', key: 'postprocessPath' }); </script> </div> diff --git a/gui/slick/interfaces/default/home_recommendedShows.mako b/gui/slick/interfaces/default/home_recommendedShows.mako index be633c5e3ce17c998375095faee14604a6241412..afa0373b570c0564893afe17e4fa3c5a64705bb6 100644 --- a/gui/slick/interfaces/default/home_recommendedShows.mako +++ b/gui/slick/interfaces/default/home_recommendedShows.mako @@ -18,7 +18,7 @@ $(document).ready(function(){ $('#showsortdirection').val('asc'); var $container = [$('#container')]; - jQuery.each($container, function (j) { + $.each($container, function (j) { this.isotope({ itemSelector: '.trakt_show', sortBy: 'original-order', diff --git a/gui/slick/interfaces/default/home_trendingShows.mako b/gui/slick/interfaces/default/home_trendingShows.mako index 948459bde6b93fbf9858f8dc9cb80b1230ecd748..7091d17a20bc4a5fa88e4aa83eccb3e8b3f87841 100644 --- a/gui/slick/interfaces/default/home_trendingShows.mako +++ b/gui/slick/interfaces/default/home_trendingShows.mako @@ -25,7 +25,7 @@ $(document).ready(function(){ $('#showsortdirection').val('asc'); var $container = [$('#container')]; - jQuery.each($container, function (j) { + $.each($container, function (j) { this.isotope({ itemSelector: '.trakt_show', sortBy: 'original-order', diff --git a/gui/slick/interfaces/default/inc_top.mako b/gui/slick/interfaces/default/inc_top.mako index be2a5cdb8f68ee006e1f518a9c598dd20d1625e0..a5ede60447b25de329231aaade64f0e18d25bb6b 100644 --- a/gui/slick/interfaces/default/inc_top.mako +++ b/gui/slick/interfaces/default/inc_top.mako @@ -91,52 +91,50 @@ <script type="text/javascript" src="${sbRoot}/js/ajaxNotifications.js"></script> <script type="text/javascript"> function initActions() { - $("#SubMenu a[href*='/home/restart/']").addClass('btn restart').html('<span class="submenu-icon-restart pull-left"></span> Restart'); - $("#SubMenu a[href*='/home/shutdown/']").addClass('btn shutdown').html('<span class="submenu-icon-shutdown pull-left"></span> Shutdown'); - $("#SubMenu a[href*='/home/logout/']").addClass('btn').html('<span class="ui-icon ui-icon-power pull-left"></span> Logout'); - $("#SubMenu a:contains('Edit')").addClass('btn').html('<span class="ui-icon ui-icon-pencil pull-left"></span> Edit'); - $("#SubMenu a:contains('Remove')").addClass('btn remove').html('<span class="ui-icon ui-icon-trash pull-left"></span> Remove'); - $("#SubMenu a:contains('Clear History')").addClass('btn clearhistory').html('<span class="ui-icon ui-icon-trash pull-left"></span> Clear History'); - $("#SubMenu a:contains('Trim History')").addClass('btn trimhistory').html('<span class="ui-icon ui-icon-trash pull-left"></span> Trim History'); - $("#SubMenu a[href$='/errorlogs/clearerrors/']").addClass('btn').html('<span class="ui-icon ui-icon-trash pull-left"></span> Clear Errors'); - $("#SubMenu a[href$='/errorlogs/submit_errors/']").addClass('btn').html('<span class="ui-icon ui-icon-arrowreturnthick-1-n pull-left"></span> Submit Errors'); - $("#SubMenu a:contains('Re-scan')").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Re-scan'); - $("#SubMenu a:contains('Backlog Overview')").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Backlog Overview'); - $("#SubMenu a[href$='/home/updatePLEX/']").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Update PLEX'); - $("#SubMenu a:contains('Force')").addClass('btn').html('<span class="ui-icon ui-icon-transfer-e-w pull-left"></span> Force Full Update'); - $("#SubMenu a:contains('Rename')").addClass('btn').html('<span class="ui-icon ui-icon-tag pull-left"></span> Preview Rename'); - $("#SubMenu a[href$='/config/subtitles/']").addClass('btn').html('<span class="ui-icon ui-icon-comment pull-left"></span> Search Subtitles'); - $("#SubMenu a[href*='/home/subtitleShow']").addClass('btn').html('<span class="ui-icon ui-icon-comment pull-left"></span> Download Subtitles'); - $("#SubMenu a:contains('Anime')").addClass('btn').html('<span class="submenu-icon-anime pull-left"></span> Anime'); - $("#SubMenu a:contains('Settings')").addClass('btn').html('<span class="ui-icon ui-icon-search pull-left"></span> Search Settings'); - $("#SubMenu a:contains('Provider')").addClass('btn').html('<span class="ui-icon ui-icon-search pull-left"></span> Search Providers'); - $("#SubMenu a:contains('Backup/Restore')").addClass('btn').html('<span class="ui-icon ui-icon-gear pull-left"></span> Backup/Restore'); - $("#SubMenu a:contains('General')").addClass('btn').html('<span class="ui-icon ui-icon-gear pull-left"></span> General'); - $("#SubMenu a:contains('Episode Status')").addClass('btn').html('<span class="ui-icon ui-icon-transferthick-e-w pull-left"></span> Episode Status Management'); - $("#SubMenu a:contains('Missed Subtitle')").addClass('btn').html('<span class="ui-icon ui-icon-transferthick-e-w pull-left"></span> Missed Subtitles'); - $("#SubMenu a[href$='/home/addShows/']").addClass('btn').html('<span class="ui-icon ui-icon-video pull-left"></span> Add Show'); - $("#SubMenu a:contains('Processing')").addClass('btn').html('<span class="ui-icon ui-icon-folder-open pull-left"></span> Post-Processing'); - $("#SubMenu a:contains('Manage Searches')").addClass('btn').html('<span class="ui-icon ui-icon-search pull-left"></span> Manage Searches'); - $("#SubMenu a:contains('Manage Torrents')").addClass('btn').html('<span class="submenu-icon-bittorrent pull-left"></span> Manage Torrents'); - $("#SubMenu a[href$='/manage/failedDownloads/']").addClass('btn').html('<span class="submenu-icon-failed-download pull-left"></span> Failed Downloads'); - $("#SubMenu a:contains('Notification')").addClass('btn').html('<span class="ui-icon ui-icon-note pull-left"></span> Notifications'); - $("#SubMenu a:contains('Update show in KODI')").addClass('btn').html('<span class="submenu-icon-kodi pull-left"></span> Update show in KODI'); - $("#SubMenu a[href$='/home/updateKODI/']").addClass('btn').html('<span class="submenu-icon-kodi pull-left"></span> Update KODI'); - $("#SubMenu a:contains('Update show in Emby')").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Update show in Emby'); - $("#SubMenu a[href$='/home/updateEMBY/']").addClass('btn').html('<span class="ui-icon ui-icon-refresh pull-left"></span> Update Emby'); - $("#SubMenu a:contains('Pause')").addClass('btn').html('<span class="ui-icon ui-icon-pause pull-left"></span> Pause'); - $("#SubMenu a:contains('Resume')").addClass('btn').html('<span class="ui-icon ui-icon-play pull-left"></span> Resume'); + $("#SubMenu a[href*='/home/restart/']").addClass('restart').html('<span class="submenu-icon-restart"></span> Restart'); + $("#SubMenu a[href*='/home/shutdown/']").addClass('shutdown').html('<span class="submenu-icon-shutdown"></span> Shutdown'); + $("#SubMenu a[href*='/home/logout/']").html('<span class="ui-icon ui-icon-power"></span> Logout'); + $("#SubMenu a:contains('Edit')").html('<span class="ui-icon ui-icon-pencil"></span> Edit'); + $("#SubMenu a:contains('Remove')").addClass('remove').html('<span class="ui-icon ui-icon-trash"></span> Remove'); + $("#SubMenu a:contains('Clear History')").addClass('clearhistory').html('<span class="ui-icon ui-icon-trash"></span> Clear History'); + $("#SubMenu a:contains('Trim History')").addClass('trimhistory').html('<span class="ui-icon ui-icon-trash"></span> Trim History'); + $("#SubMenu a[href$='/errorlogs/clearerrors/']").html('<span class="ui-icon ui-icon-trash"></span> Clear Errors'); + $("#SubMenu a[href$='/errorlogs/submit_errors/']").html('<span class="ui-icon ui-icon-arrowreturnthick-1-n"></span> Submit Errors'); + $("#SubMenu a:contains('Re-scan')").html('<span class="ui-icon ui-icon-refresh"></span> Re-scan'); + $("#SubMenu a:contains('Backlog Overview')").html('<span class="ui-icon ui-icon-refresh"></span> Backlog Overview'); + $("#SubMenu a[href$='/home/updatePLEX/']").html('<span class="ui-icon ui-icon-refresh"></span> Update PLEX'); + $("#SubMenu a:contains('Force')").html('<span class="ui-icon ui-icon-transfer-e-w"></span> Force Full Update'); + $("#SubMenu a:contains('Rename')").html('<span class="ui-icon ui-icon-tag"></span> Preview Rename'); + $("#SubMenu a[href$='/config/subtitles/']").html('<span class="ui-icon ui-icon-comment"></span> Search Subtitles'); + $("#SubMenu a[href*='/home/subtitleShow']").html('<span class="ui-icon ui-icon-comment"></span> Download Subtitles'); + $("#SubMenu a:contains('Anime')").html('<span class="submenu-icon-anime"></span> Anime'); + $("#SubMenu a:contains('Settings')").html('<span class="ui-icon ui-icon-search"></span> Search Settings'); + $("#SubMenu a:contains('Provider')").html('<span class="ui-icon ui-icon-search"></span> Search Providers'); + $("#SubMenu a:contains('Backup/Restore')").html('<span class="ui-icon ui-icon-gear"></span> Backup/Restore'); + $("#SubMenu a:contains('General')").html('<span class="ui-icon ui-icon-gear"></span> General'); + $("#SubMenu a:contains('Episode Status')").html('<span class="ui-icon ui-icon-transferthick-e-w"></span> Episode Status Management'); + $("#SubMenu a:contains('Missed Subtitle')").html('<span class="ui-icon ui-icon-transferthick-e-w"></span> Missed Subtitles'); + $("#SubMenu a[href$='/home/addShows/']").html('<span class="ui-icon ui-icon-video"></span> Add Show'); + $("#SubMenu a:contains('Processing')").html('<span class="ui-icon ui-icon-folder-open"></span> Post-Processing'); + $("#SubMenu a:contains('Manage Searches')").html('<span class="ui-icon ui-icon-search"></span> Manage Searches'); + $("#SubMenu a:contains('Manage Torrents')").html('<span class="submenu-icon-bittorrent"></span> Manage Torrents'); + $("#SubMenu a[href$='/manage/failedDownloads/']").html('<span class="submenu-icon-failed-download"></span> Failed Downloads'); + $("#SubMenu a:contains('Notification')").html('<span class="ui-icon ui-icon-note"></span> Notifications'); + $("#SubMenu a:contains('Update show in KODI')").html('<span class="submenu-icon-kodi"></span> Update show in KODI'); + $("#SubMenu a[href$='/home/updateKODI/']").html('<span class="submenu-icon-kodi"></span> Update KODI'); + $("#SubMenu a:contains('Update show in Emby')").html('<span class="ui-icon ui-icon-refresh"></span> Update show in Emby'); + $("#SubMenu a[href$='/home/updateEMBY/']").html('<span class="ui-icon ui-icon-refresh"></span> Update Emby'); + $("#SubMenu a:contains('Pause')").html('<span class="ui-icon ui-icon-pause"></span> Pause'); + $("#SubMenu a:contains('Resume')").html('<span class="ui-icon ui-icon-play"></span> Resume'); + + $('#SubMenu a span').addClass('pull-left'); }; $(document).ready(function() { - initActions(); - $("#NAV${topmenu}").addClass("active"); - $('.dropdown-toggle').dropdownHover(); - }); </script> <script type="text/javascript" src="${sbRoot}/js/confirmations.js?${sbPID}"></script> @@ -159,25 +157,25 @@ % if sbLogin: <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> - <li id="NAVnews"> + <li id="NAVnews" ${('', 'class="active"')[topmenu == 'news']}> <a href="${sbRoot}/news/">News</a> </li> - <li id="NAVnews"> + <li id="NAVirc" ${('', 'class="active"')[topmenu == 'irc']}> <a href="${sbRoot}/IRC/">IRC</a> </li> - <li id="NAVhome"> + <li id="NAVhome" ${('', 'class="active"')[topmenu == 'home']}> <a href="${sbRoot}/home/">Shows</a> </li> - <li id="NAVcomingEpisodes"> + <li id="NAVcomingEpisodes" ${('', 'class="active"')[topmenu == 'comingEpisodes']}> <a href="${sbRoot}/comingEpisodes/">Coming Episodes</a> </li> - <li id="NAVhistory"> + <li id="NAVhistory" ${('', 'class="active"')[topmenu == 'history']}> <a href="${sbRoot}/history/">History</a> </li> - <li id="NAVmanage" class="dropdown"> + <li id="NAVmanage" class="dropdown ${('', 'active')[topmenu == 'manage']}"> <a href="${sbRoot}/manage/" class="dropdown-toggle" data-toggle="dropdown">Manage <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="${sbRoot}/manage/"><i class="menu-icon-manage"></i> Mass Update</a></li> @@ -205,7 +203,7 @@ </ul> </li> - <li id="NAVerrorlogs" class="dropdown"> + <li id="NAVerrorlogs" class="dropdown" ${('', 'class="active"')[topmenu == 'errorlogs']}> <a href="${sbRoot}/errorlogs/" class="dropdown-toggle" data-toggle="dropdown">${logPageTitle} <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="${sbRoot}/errorlogs/"><i class="menu-icon-viewlog-errors"></i> View Log (Errors)</a></li> @@ -213,7 +211,7 @@ </ul> </li> - <li id="NAVconfig" class="dropdown"> + <li id="NAVconfig" class="dropdown" ${('', 'class="active"')[topmenu == 'config']}> <a href="${sbRoot}/config/" class="dropdown-toggle" data-toggle="dropdown"><img src="${sbRoot}/images/menu/system18.png" class="navbaricon hidden-xs" /><b class="caret hidden-xs"></b><span class="visible-xs">Config <b class="caret"></b></span></a> <ul class="dropdown-menu"> <li><a href="${sbRoot}/config/"><i class="menu-icon-help"></i> Help & Info</a></li> @@ -263,7 +261,7 @@ <% inner_first = False %> % endfor % else: - <a href="${sbRoot}/${menuItem['path']}" ${("", "class=\"confirm\"")['confirm' in menuItem]}>${menuItem['title']}</a> + <a href="${sbRoot}/${menuItem['path']}" class="btn${('', ' confirm')['confirm' in menuItem]}">${menuItem['title']}</a> <% first = False %> % endif % endif diff --git a/gui/slick/interfaces/default/manage_manageSearches.mako b/gui/slick/interfaces/default/manage_manageSearches.mako index aed40d90a160f2d2a0794a1e17c0b9b72d8ae94f..030baefaa4b14cf1ed826c3ec8d9fc7538277369 100644 --- a/gui/slick/interfaces/default/manage_manageSearches.mako +++ b/gui/slick/interfaces/default/manage_manageSearches.mako @@ -27,11 +27,7 @@ <h3>Daily Search:</h3> <a class="btn" href="${sbRoot}/manage/manageSearches/forceSearch"><i class="icon-exclamation-sign"></i> Force</a> -% if not dailySearchStatus: - Not in progress<br /> -% else: - In Progress<br /> -% endif +${('Not in progress', 'In Progress')[dailySearchStatus]}<br /> <br /> <h3>Find Propers Search:</h3> diff --git a/gui/slick/interfaces/default/manage_massEdit.mako b/gui/slick/interfaces/default/manage_massEdit.mako index fc6250eb8762d459ec78bfb88920798d4a51d5a3..26e2df65cc2f3619824c2ac617123f96838f9ffd 100644 --- a/gui/slick/interfaces/default/manage_massEdit.mako +++ b/gui/slick/interfaces/default/manage_massEdit.mako @@ -191,6 +191,6 @@ <br /> <script type="text/javascript" charset="utf-8"> - jQuery('#location').fileBrowser({ title: 'Select Show Location' }); + $('#location').fileBrowser({ title: 'Select Show Location' }); </script> <%include file="/inc_bottom.mako"/> diff --git a/gui/slick/interfaces/default/manage_torrents.mako b/gui/slick/interfaces/default/manage_torrents.mako index e48b4f133a9139282827bc8415e8c27b6124b734..f4800653e916642807d05ce4682cb9acd00d45d7 100644 --- a/gui/slick/interfaces/default/manage_torrents.mako +++ b/gui/slick/interfaces/default/manage_torrents.mako @@ -1,13 +1,8 @@ -<%! - import sickbeard - import datetime - from sickbeard.common import * -%> <%include file="/inc_top.mako"/> <script type="text/javascript" src="${sbRoot}/js/plotTooltip.js?${sbPID}"></script> % if not header is UNDEFINED: <h1 class="header">${header}</h1> -% else; +% else: <h1 class="title">${title}</h1> % endif diff --git a/gui/slick/interfaces/default/restart_bare.mako b/gui/slick/interfaces/default/restart_bare.mako index f7a202b5adbaafdcb2e0c8052c8de3834f2430d5..f58307f771d46d8d1c788d9aef1a5c21af73465a 100644 --- a/gui/slick/interfaces/default/restart_bare.mako +++ b/gui/slick/interfaces/default/restart_bare.mako @@ -22,7 +22,7 @@ sbDefaultPage = "${sbDefaultPage}"; </script> <script type="text/javascript" src="${sbRoot}/js/lib/jquery-1.11.2.min.js?${sbPID}"></script> -<script type="text/javascript" src="${sbRoot}/js/restart.js?${sbPID}&${sbDefaultPage}"></script> +<script type="text/javascript" src="${sbRoot}/js/restart.js?${sbPID}&${sbDefaultPage}"></script> <% themeSpinner = ('', '-dark')['dark' == themeSpinner] %> <h2>Performing Restart</h2> diff --git a/gui/slick/interfaces/default/status.mako b/gui/slick/interfaces/default/status.mako index 8f8382dcab4b8d7a14979ce20fa82ba24723ab22..7be146ff6ea67f7a4ace1132d89cbf05d887aacb 100644 --- a/gui/slick/interfaces/default/status.mako +++ b/gui/slick/interfaces/default/status.mako @@ -23,7 +23,6 @@ 'Post Process': 'autoPostProcesserScheduler', 'Subtitles Finder': 'subtitlesFinderScheduler', 'Trakt Checker': 'traktCheckerScheduler', - 'Trakt Rolling': 'traktRollingScheduler', } %> diff --git a/gui/slick/interfaces/default/trendingShows.mako b/gui/slick/interfaces/default/trendingShows.mako index 46401a085a8fb1749748fc43d2d8095687d9ac37..ce1cc030347d1d665569f48da19c3161a7e590a8 100644 --- a/gui/slick/interfaces/default/trendingShows.mako +++ b/gui/slick/interfaces/default/trendingShows.mako @@ -15,7 +15,7 @@ $(document).ready(function(){ $('#showsortdirection').val('asc'); var $container = [$('#container')]; - jQuery.each($container, function (j) { + $.each($container, function (j) { this.isotope({ itemSelector: '.trakt_show', sortBy: 'original-order', diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index ad34a71150232b98d2128a950d6fb73997d383eb..ef33f107b995277d1d2e8170eb0c48f6376e0a63 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -101,7 +101,6 @@ properFinderScheduler = None autoPostProcesserScheduler = None subtitlesFinderScheduler = None traktCheckerScheduler = None -traktRollingScheduler = None showList = None loadingShowList = None @@ -447,10 +446,6 @@ TRAKT_SYNC_REMOVE = False TRAKT_DEFAULT_INDEXER = None TRAKT_TIMEOUT = None TRAKT_BLACKLIST_NAME = None -TRAKT_USE_ROLLING_DOWNLOAD = None -TRAKT_ROLLING_NUM_EP = None -TRAKT_ROLLING_ADD_PAUSED = None -TRAKT_ROLLING_FREQUENCY = None USE_PYTIVO = False PYTIVO_NOTIFY_ONSNATCH = False @@ -565,7 +560,7 @@ def initialize(consoleLogging=True): TORRENT_USERNAME, TORRENT_PASSWORD, TORRENT_HOST, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_LABEL, TORRENT_LABEL_ANIME, TORRENT_VERIFY_CERT, TORRENT_RPCURL, TORRENT_AUTH_TYPE, \ USE_KODI, KODI_ALWAYS_ON, KODI_NOTIFY_ONSNATCH, KODI_NOTIFY_ONDOWNLOAD, KODI_NOTIFY_ONSUBTITLEDOWNLOAD, KODI_UPDATE_FULL, KODI_UPDATE_ONLYFIRST, \ KODI_UPDATE_LIBRARY, KODI_HOST, KODI_USERNAME, KODI_PASSWORD, BACKLOG_FREQUENCY, \ - USE_TRAKT, TRAKT_USERNAME, TRAKT_ACCESS_TOKEN, TRAKT_REFRESH_TOKEN, TRAKT_REMOVE_WATCHLIST, TRAKT_SYNC_WATCHLIST, TRAKT_REMOVE_SHOW_FROM_SICKRAGE, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktCheckerScheduler, traktRollingScheduler, TRAKT_USE_RECOMMENDED, TRAKT_SYNC, TRAKT_SYNC_REMOVE, TRAKT_DEFAULT_INDEXER, TRAKT_REMOVE_SERIESLIST, TRAKT_TIMEOUT, TRAKT_BLACKLIST_NAME, TRAKT_USE_ROLLING_DOWNLOAD, TRAKT_ROLLING_NUM_EP, TRAKT_ROLLING_ADD_PAUSED, TRAKT_ROLLING_FREQUENCY, USE_IMDB_POPULAR, \ + USE_TRAKT, TRAKT_USERNAME, TRAKT_ACCESS_TOKEN, TRAKT_REFRESH_TOKEN, TRAKT_REMOVE_WATCHLIST, TRAKT_SYNC_WATCHLIST, TRAKT_REMOVE_SHOW_FROM_SICKRAGE, TRAKT_METHOD_ADD, TRAKT_START_PAUSED, traktCheckerScheduler, TRAKT_USE_RECOMMENDED, TRAKT_SYNC, TRAKT_SYNC_REMOVE, TRAKT_DEFAULT_INDEXER, TRAKT_REMOVE_SERIESLIST, TRAKT_TIMEOUT, TRAKT_BLACKLIST_NAME, USE_IMDB_POPULAR, \ USE_PLEX, PLEX_NOTIFY_ONSNATCH, PLEX_NOTIFY_ONDOWNLOAD, PLEX_NOTIFY_ONSUBTITLEDOWNLOAD, PLEX_UPDATE_LIBRARY, USE_PLEX_CLIENT, PLEX_CLIENT_USERNAME, PLEX_CLIENT_PASSWORD, \ PLEX_SERVER_HOST, PLEX_SERVER_TOKEN, PLEX_HOST, PLEX_USERNAME, PLEX_PASSWORD, DEFAULT_BACKLOG_FREQUENCY, MIN_BACKLOG_FREQUENCY, BACKLOG_STARTUP, SKIP_REMOVED_FILES, \ USE_EMBY, EMBY_HOST, EMBY_APIKEY, \ @@ -1059,12 +1054,6 @@ def initialize(consoleLogging=True): TRAKT_DEFAULT_INDEXER = check_setting_int(CFG, 'Trakt', 'trakt_default_indexer', 1) TRAKT_TIMEOUT = check_setting_int(CFG, 'Trakt', 'trakt_timeout', 30) TRAKT_BLACKLIST_NAME = check_setting_str(CFG, 'Trakt', 'trakt_blacklist_name', '') - TRAKT_USE_ROLLING_DOWNLOAD = bool(check_setting_int(CFG, 'Trakt', 'trakt_use_rolling_download', 0)) - TRAKT_ROLLING_NUM_EP = check_setting_int(CFG, 'Trakt', 'trakt_rolling_num_ep', 0) - TRAKT_ROLLING_ADD_PAUSED = check_setting_int(CFG, 'Trakt', 'trakt_rolling_add_paused', 1) - TRAKT_ROLLING_FREQUENCY = check_setting_int(CFG, 'Trakt', 'trakt_rolling_frequency', 8) - if TRAKT_ROLLING_FREQUENCY < 4: - TRAKT_ROLLING_FREQUENCY = 4 USE_IMDB_POPULAR = bool(check_setting_int(CFG, 'IMDB', 'use_imdb_popular', 1)) @@ -1398,11 +1387,6 @@ def initialize(consoleLogging=True): threadName="TRAKTCHECKER", silent=not USE_TRAKT) - traktRollingScheduler = scheduler.Scheduler(traktChecker.TraktRolling(), - cycleTime=datetime.timedelta(hours=TRAKT_ROLLING_FREQUENCY), - threadName="TRAKTROLLING", - silent=not TRAKT_USE_ROLLING_DOWNLOAD) - subtitlesFinderScheduler = scheduler.Scheduler(subtitles.SubtitlesFinder(), cycleTime=datetime.timedelta(hours=SUBTITLES_FINDER_FREQUENCY), threadName="FINDSUBTITLES", @@ -1419,7 +1403,7 @@ def start(): global __INITIALIZED__, backlogSearchScheduler, \ showUpdateScheduler, versionCheckScheduler, showQueueScheduler, \ properFinderScheduler, autoPostProcesserScheduler, searchQueueScheduler, \ - subtitlesFinderScheduler, USE_SUBTITLES, traktCheckerScheduler, traktRollingScheduler, \ + subtitlesFinderScheduler, USE_SUBTITLES, traktCheckerScheduler, \ dailySearchScheduler, events, started with INIT_LOCK: @@ -1487,15 +1471,6 @@ def start(): traktCheckerScheduler.silent = True traktCheckerScheduler.start() - # start the trakt checker - if TRAKT_USE_ROLLING_DOWNLOAD and USE_TRAKT: - traktRollingScheduler.silent = False - traktRollingScheduler.enable = True - else: - traktRollingScheduler.enable = False - traktRollingScheduler.silent = True - traktRollingScheduler.start() - started = True @@ -1503,7 +1478,7 @@ def halt(): global __INITIALIZED__, backlogSearchScheduler, \ showUpdateScheduler, versionCheckScheduler, showQueueScheduler, \ properFinderScheduler, autoPostProcesserScheduler, searchQueueScheduler, \ - subtitlesFinderScheduler, traktCheckerScheduler, traktRollingScheduler, \ + subtitlesFinderScheduler, traktCheckerScheduler, \ dailySearchScheduler, events, started with INIT_LOCK: @@ -1575,13 +1550,6 @@ def halt(): except Exception: pass - traktRollingScheduler.stop.set() - logger.log(u"Waiting for the TRAKTROLLING thread to exit") - try: - traktRollingScheduler.join(10) - except Exception: - pass - properFinderScheduler.stop.set() logger.log(u"Waiting for the PROPERFINDER thread to exit") try: @@ -2045,10 +2013,6 @@ def save_config(): new_config['Trakt']['trakt_default_indexer'] = int(TRAKT_DEFAULT_INDEXER) new_config['Trakt']['trakt_timeout'] = int(TRAKT_TIMEOUT) new_config['Trakt']['trakt_blacklist_name'] = TRAKT_BLACKLIST_NAME - new_config['Trakt']['trakt_use_rolling_download'] = int(TRAKT_USE_ROLLING_DOWNLOAD) - new_config['Trakt']['trakt_rolling_num_ep'] = int(TRAKT_ROLLING_NUM_EP) - new_config['Trakt']['trakt_rolling_add_paused'] = int(TRAKT_ROLLING_ADD_PAUSED) - new_config['Trakt']['trakt_rolling_frequency'] = int(TRAKT_ROLLING_FREQUENCY) new_config['IMDB'] = {} new_config['IMDB']['use_imdb_popular'] = int(USE_IMDB_POPULAR) diff --git a/sickbeard/config.py b/sickbeard/config.py index 60a53756012661e0ff9d45cf49c1618aae8ec364..d9151c5c3e2509e7194058e7945b794e6421ce1e 100644 --- a/sickbeard/config.py +++ b/sickbeard/config.py @@ -196,10 +196,10 @@ def change_SHOWUPDATE_HOUR(freq): sickbeard.showUpdateScheduler.start_time = datetime.time(hour=sickbeard.SHOWUPDATE_HOUR) def change_SUBTITLES_FINDER_FREQUENCY(subtitles_finder_frequency): - + if subtitles_finder_frequency == '' or subtitles_finder_frequency is None: subtitles_finder_frequency = 1 - + sickbeard.SUBTITLES_FINDER_FREQUENCY = to_int(subtitles_finder_frequency, 1) def change_VERSION_NOTIFY(version_notify): @@ -215,7 +215,7 @@ def change_VERSION_NOTIFY(version_notify): def change_DOWNLOAD_PROPERS(download_propers): download_propers = checkbox_to_value(download_propers) - + if sickbeard.DOWNLOAD_PROPERS == download_propers: return @@ -234,7 +234,7 @@ def change_DOWNLOAD_PROPERS(download_propers): def change_USE_TRAKT(use_trakt): use_trakt = checkbox_to_value(use_trakt) - + if sickbeard.USE_TRAKT == use_trakt: return @@ -251,29 +251,10 @@ def change_USE_TRAKT(use_trakt): sickbeard.traktCheckerScheduler.silent = True logger.log(u"Stopping TRAKTCHECKER thread", logger.INFO) -def change_TRAKT_USE_ROLLING_DOWNLOAD(trakt_use_rolling_download): - trakt_use_rolling_download = checkbox_to_value(trakt_use_rolling_download) - - if sickbeard.TRAKT_USE_ROLLING_DOWNLOAD == trakt_use_rolling_download: - return - - sickbeard.TRAKT_USE_ROLLING_DOWNLOAD = trakt_use_rolling_download - - if sickbeard.USE_TRAKT and sickbeard.TRAKT_USE_ROLLING_DOWNLOAD: - if not sickbeard.traktRollingScheduler.enable: - logger.log(u"Starting TRAKTROLLING thread", logger.INFO) - sickbeard.traktRollingScheduler.silent = False - sickbeard.traktRollingScheduler.enable = True - else: - logger.log(u"Unable to start TRAKTROLLING thread. Already running", logger.INFO) - else: - sickbeard.traktRollingScheduler.enable = False - sickbeard.traktRollingScheduler.silent = True - logger.log(u"Stopping TRAKTROLLING thread", logger.INFO) def change_USE_SUBTITLES(use_subtitles): use_subtitles = checkbox_to_value(use_subtitles) - + if sickbeard.USE_SUBTITLES == use_subtitles: return @@ -292,7 +273,7 @@ def change_USE_SUBTITLES(use_subtitles): def change_PROCESS_AUTOMATICALLY(process_automatically): process_automatically = checkbox_to_value(process_automatically) - + if sickbeard.PROCESS_AUTOMATICALLY == process_automatically: return diff --git a/sickbeard/dailysearcher.py b/sickbeard/dailysearcher.py index 5d5d3d27b39a8a5968345b7fba24a1b2dad66f21..2a4d2b3b22fd11d2fec10b6f70268dd52a1e3753 100644 --- a/sickbeard/dailysearcher.py +++ b/sickbeard/dailysearcher.py @@ -88,15 +88,11 @@ class DailySearcher(): # if an error occured assume the episode hasn't aired yet continue - UpdateWantedList = 0 ep = show.getEpisode(int(sqlEp["season"]), int(sqlEp["episode"])) with ep.lock: if ep.season == 0: logger.log(u"New episode " + ep.prettyName() + " airs today, setting status to SKIPPED because is a special season") ep.status = common.SKIPPED - elif sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT: - ep.status = common.SKIPPED - UpdateWantedList = 1 else: logger.log(u"New episode %s airs today, setting to default episode status for this show: %s" % (ep.prettyName(), common.statusStrings[ep.show.default_ep_status])) ep.status = ep.show.default_ep_status @@ -109,8 +105,6 @@ class DailySearcher(): else: logger.log(u"No new released episodes found ...") - sickbeard.traktRollingScheduler.action.updateWantedList() - # queue episode for daily search dailysearch_queue_item = sickbeard.search_queue.DailySearchQueueItem() sickbeard.searchQueueScheduler.action.add_item(dailysearch_queue_item) diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py index d206cf406153e5d767547fef04a9aac8aa608e28..49a0812e130f2b817387797321bc138c9b45c282 100644 --- a/sickbeard/show_queue.py +++ b/sickbeard/show_queue.py @@ -215,9 +215,6 @@ class QueueItemAdd(ShowQueueItem): self.whitelist = whitelist self.default_status_after = default_status_after - if sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT: - self.paused = sickbeard.TRAKT_ROLLING_ADD_PAUSED - self.show = None # this will initialize self.show to None @@ -390,8 +387,6 @@ class QueueItemAdd(ShowQueueItem): logger.log(u"Error searching dir for episodes: " + ex(e), logger.ERROR) logger.log(traceback.format_exc(), logger.DEBUG) - sickbeard.traktRollingScheduler.action.updateWantedList(self.show.indexerid) - # if they set default ep status to WANTED then run the backlog to search for episodes # FIXME: This needs to be a backlog queue item!!! if self.show.default_ep_status == WANTED: diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py index de4b1b1f4086f922180b95923784021f999ebd14..cd02445533924c06f3a8122b0839f84ab5bb735e 100644 --- a/sickbeard/traktChecker.py +++ b/sickbeard/traktChecker.py @@ -63,7 +63,7 @@ class TraktChecker(): def __init__(self): self.trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) self.todoBacklog = [] - self.todoWanted = [] + self.todoWanted = [] self.ShowWatchlist = {} self.EpisodeWatchlist = {} self.Collectionlist = {} @@ -86,7 +86,7 @@ class TraktChecker(): # sync trakt.tv library with sickrage library self.syncLibrary() except Exception: - logger.log(traceback.format_exc(), logger.DEBUG) + logger.log(traceback.format_exc(), logger.DEBUG) def findShow(self, indexer, indexerid): traktShow = None @@ -168,9 +168,9 @@ class TraktChecker(): except traktException as e: logger.log(u"Could not connect to Trakt service: %s" % ex(e), logger.WARNING) return - + def syncLibrary(self): - if sickbeard.TRAKT_SYNC and sickbeard.USE_TRAKT: + if sickbeard.TRAKT_SYNC and sickbeard.USE_TRAKT: logger.log(u"Sync SickRage with Trakt Collection", logger.DEBUG) if self._getShowCollection(): @@ -198,13 +198,13 @@ class TraktChecker(): if len(trakt_data): data = self.trakt_bulk_data_generate(trakt_data) self.trakt_api.traktRequest("sync/collection/remove", data, method='POST') - self._getShowCollection() - + self._getShowCollection() + logger.log(u"COLLECTION::REMOVE::FINISH - Look for Episodes to Remove From Trakt Collection", logger.DEBUG) - + def addEpisodeToTraktCollection(self): if sickbeard.TRAKT_SYNC and sickbeard.USE_TRAKT: - logger.log(u"COLLECTION::ADD::START - Look for Episodes to Add to Trakt Collection", logger.DEBUG) + logger.log(u"COLLECTION::ADD::START - Look for Episodes to Add to Trakt Collection", logger.DEBUG) myDB = db.DBConnection() sql_selection='select tv_shows.indexer, tv_shows.startyear, showid, show_name, season, episode from tv_episodes,tv_shows where tv_shows.indexer_id = tv_episodes.showid and tv_episodes.status in ('+','.join([str(x) for x in Quality.DOWNLOADED + [ARCHIVED]])+')' @@ -223,8 +223,8 @@ class TraktChecker(): self.trakt_api.traktRequest("sync/collection", data, method='POST') self._getShowCollection() - logger.log(u"COLLECTION::ADD::FINISH - Look for Episodes to Add to Trakt Collection", logger.DEBUG) - + logger.log(u"COLLECTION::ADD::FINISH - Look for Episodes to Add to Trakt Collection", logger.DEBUG) + def syncWatchlist(self): if sickbeard.TRAKT_SYNC_WATCHLIST and sickbeard.USE_TRAKT: logger.log(u"Sync SickRage with Trakt Watchlist", logger.DEBUG) @@ -260,7 +260,7 @@ class TraktChecker(): if len(trakt_data): data = self.trakt_bulk_data_generate(trakt_data) self.trakt_api.traktRequest("sync/watchlist/remove", data, method='POST') - self._getEpisodeWatchlist() + self._getEpisodeWatchlist() logger.log(u"WATCHLIST::REMOVE::FINISH - Look for Episodes to Remove from Trakt Watchlist", logger.DEBUG) @@ -277,7 +277,7 @@ class TraktChecker(): trakt_id = sickbeard.indexerApi(cur_episode["indexer"]).config['trakt_id'] if not self._checkInList(trakt_id,str(cur_episode["showid"]),str(cur_episode["season"]),str(cur_episode["episode"])): logger.log(u"Adding Episode %s S%02dE%02d to watchlist" % - (cur_episode["show_name"],cur_episode["season"],cur_episode["episode"]), logger.DEBUG) + (cur_episode["show_name"],cur_episode["season"],cur_episode["episode"]), logger.DEBUG) trakt_data.append((cur_episode["showid"],cur_episode["indexer"],cur_episode["show_name"],cur_episode["startyear"],cur_episode["season"], cur_episode["episode"])) if len(trakt_data): @@ -290,13 +290,13 @@ class TraktChecker(): def addShowToTraktWatchList(self): if sickbeard.TRAKT_SYNC_WATCHLIST and sickbeard.USE_TRAKT: logger.log(u"SHOW_WATCHLIST::ADD::START - Look for Shows to Add to Trakt Watchlist", logger.DEBUG) - + if sickbeard.showList is not None: trakt_data = [] for show in sickbeard.showList: trakt_id = sickbeard.indexerApi(show.indexer).config['trakt_id'] if not self._checkInList(trakt_id,str(show.indexerid),'0','0',List='Show'): - logger.log(u"Adding Show: Indexer %s %s - %s to Watchlist" % ( trakt_id,str(show.indexerid), show.name), logger.DEBUG) + logger.log(u"Adding Show: Indexer %s %s - %s to Watchlist" % ( trakt_id,str(show.indexerid), show.name), logger.DEBUG) show_el = {'title': show.name, 'year': show.startyear, 'ids': {}} if trakt_id == 'tvdb_id': show_el['ids']['tvdb'] = show.indexerid @@ -356,7 +356,7 @@ class TraktChecker(): else: self.todoWanted.append((indexer_id, 1, 1)) logger.log(u"SHOW_WATCHLIST::CHECK::FINISH - Trakt Show Watchlist", logger.DEBUG) - + def updateEpisodes(self): """ Sets episodes to wanted that are in trakt watchlist @@ -368,10 +368,10 @@ class TraktChecker(): return managed_show = [] - + indexer = int(sickbeard.TRAKT_DEFAULT_INDEXER) trakt_id = sickbeard.indexerApi(indexer).config['trakt_id'] - + for show_el in self.EpisodeWatchlist[trakt_id]: indexer_id = int(show_el) show = self.EpisodeWatchlist[trakt_id][show_el] @@ -386,7 +386,7 @@ class TraktChecker(): managed_show.append(indexer_id) for season_el in show['seasons']: season = int(season_el) - for episode_el in show['seasons'][season_el]['episodes']: + for episode_el in show['seasons'][season_el]['episodes']: self.todoWanted.append((indexer_id, season, int(episode_el))) else: if newShow.indexer == indexer: @@ -397,7 +397,7 @@ class TraktChecker(): except TypeError: logger.log(u"Could not parse the output from trakt for " + show["title"], logger.DEBUG) logger.log(u"SHOW_WATCHLIST::CHECK::FINISH - Trakt Episode Watchlist", logger.DEBUG) - + def addDefaultShow(self, indexer, indexer_id, name, status): """ Adds a new show with the default settings @@ -440,38 +440,38 @@ class TraktChecker(): Check in the Watchlist or CollectionList for Show Is the Show, Season and Episode in the trakt_id list (tvdb / tvrage) """ - #logger.log(u"Checking Show: %s %s %s " % (trakt_id, showid, List),logger.DEBUG) - + #logger.log(u"Checking Show: %s %s %s " % (trakt_id, showid, List),logger.DEBUG) + if "Collection" == List: try: if self.Collectionlist[trakt_id][showid]['seasons'][season]['episodes'][episode] == episode: return True except: - return False + return False elif "Show" == List: try: if self.ShowWatchlist[trakt_id][showid]['id'] == showid: return True except: - return False + return False else: try: if self.EpisodeWatchlist[trakt_id][showid]['seasons'][season]['episodes'][episode] == episode: return True except: return False - + def _getShowWatchlist(self): """ Get Watchlist and parse once into addressable structure """ - + try: self.ShowWatchlist = { 'tvdb_id' : {}, 'tvrage_id': {} } TraktShowWatchlist = self.trakt_api.traktRequest("sync/watchlist/shows") tvdb_id = 'tvdb' tvrage_id = 'tvrage' - + for watchlist_el in TraktShowWatchlist: tvdb = False tvrage = False @@ -482,31 +482,31 @@ class TraktChecker(): title = watchlist_el['show']['title'] year = str(watchlist_el['show']['year']) - + if tvdb: showid = str(watchlist_el['show']['ids'][tvdb_id]) self.ShowWatchlist[tvdb_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year } if tvrage: showid = str(watchlist_el['show']['ids'][tvrage_id]) self.ShowWatchlist[tvrage_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year } - + except traktException as e: logger.log(u"Could not connect to trakt service, cannot download Show Watchlist: %s" % ex(e), logger.ERROR) return False return True - + def _getEpisodeWatchlist(self): """ Get Watchlist and parse once into addressable structure """ - + try: self.EpisodeWatchlist = { 'tvdb_id' : {}, 'tvrage_id': {} } TraktEpisodeWatchlist = self.trakt_api.traktRequest("sync/watchlist/episodes") tvdb_id = 'tvdb' tvrage_id = 'tvrage' - + for watchlist_el in TraktEpisodeWatchlist: tvdb = False tvrage = False @@ -514,33 +514,33 @@ class TraktChecker(): tvdb = True if not watchlist_el['show']['ids']["tvrage"] is None: tvrage = True - + title = watchlist_el['show']['title'] - year = str(watchlist_el['show']['year']) + year = str(watchlist_el['show']['year']) season = str(watchlist_el['episode']['season']) episode = str(watchlist_el['episode']['number']) if tvdb: showid = str(watchlist_el['show']['ids'][tvdb_id]) if not showid in self.EpisodeWatchlist[tvdb_id + '_id'].keys(): - self.EpisodeWatchlist[tvdb_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } - - if not season in self.EpisodeWatchlist[tvdb_id + '_id'][showid]['seasons'].keys(): + self.EpisodeWatchlist[tvdb_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } + + if not season in self.EpisodeWatchlist[tvdb_id + '_id'][showid]['seasons'].keys(): self.EpisodeWatchlist[tvdb_id + '_id'][showid]['seasons'][season] = { 's': season , 'episodes' : {} } - + if not episode in self.EpisodeWatchlist[tvdb_id + '_id'][showid]['seasons'][season]['episodes'].keys(): self.EpisodeWatchlist[tvdb_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode if tvrage: showid = str(watchlist_el['show']['ids'][tvrage_id]) if not showid in self.EpisodeWatchlist[tvrage_id + '_id'].keys(): - self.EpisodeWatchlist[tvrage_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } - - if not season in self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'].keys(): + self.EpisodeWatchlist[tvrage_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } + + if not season in self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'].keys(): self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'][season] = { 's': season , 'episodes' : {} } - + if not episode in self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'].keys(): - self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode + self.EpisodeWatchlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode except traktException as e: logger.log(u"Could not connect to trakt service, cannot download Episode Watchlist: %s" % ex(e), logger.WARNING) @@ -552,15 +552,15 @@ class TraktChecker(): """ Get Collection and parse once into addressable structure """ - + try: - + self.Collectionlist = { 'tvdb_id' : {}, 'tvrage_id': {} } logger.log(u"Getting Show Collection", logger.DEBUG) TraktCollectionList = self.trakt_api.traktRequest("sync/collection/shows") tvdb_id = 'tvdb' tvrage_id = 'tvrage' - + for watchlist_el in TraktCollectionList: tvdb = False tvrage = False @@ -571,8 +571,8 @@ class TraktChecker(): title = watchlist_el['show']['title'] year = str(watchlist_el['show']['year']) - - if 'seasons' in watchlist_el: + + if 'seasons' in watchlist_el: for season_el in watchlist_el['seasons']: for episode_el in season_el['episodes']: season = str(season_el['number']) @@ -581,25 +581,25 @@ class TraktChecker(): if tvdb: showid = str(watchlist_el['show']['ids'][tvdb_id]) if not showid in self.Collectionlist[tvdb_id + '_id'].keys(): - self.Collectionlist[tvdb_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } - - if not season in self.Collectionlist[tvdb_id + '_id'][showid]['seasons'].keys(): + self.Collectionlist[tvdb_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } + + if not season in self.Collectionlist[tvdb_id + '_id'][showid]['seasons'].keys(): self.Collectionlist[tvdb_id + '_id'][showid]['seasons'][season] = { 's': season , 'episodes' : {} } - + if not episode in self.Collectionlist[tvdb_id + '_id'][showid]['seasons'][season]['episodes'].keys(): self.Collectionlist[tvdb_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode if tvrage: showid = str(watchlist_el['show']['ids'][tvrage_id]) if not showid in self.Collectionlist[tvrage_id + '_id'].keys(): - self.Collectionlist[tvrage_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } - - if not season in self.Collectionlist[tvrage_id + '_id'][showid]['seasons'].keys(): + self.Collectionlist[tvrage_id + '_id'][showid] = { 'id': showid , 'title' : title , 'year': year , 'seasons' : {} } + + if not season in self.Collectionlist[tvrage_id + '_id'][showid]['seasons'].keys(): self.Collectionlist[tvrage_id + '_id'][showid]['seasons'][season] = { 's': season , 'episodes' : {} } - + if not episode in self.Collectionlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'].keys(): - self.Collectionlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode - + self.Collectionlist[tvrage_id + '_id'][showid]['seasons'][season]['episodes'][episode] = episode + except traktException as e: logger.log(u"Could not connect to trakt service, cannot download Show Collection: %s" % ex(e), logger.ERROR) return False @@ -610,7 +610,7 @@ class TraktChecker(): """ Build the JSON structure to send back to Trakt """ - + uniqueShows = {} uniqueSeasons = {} for showid,indexerid,show_name,startyear,season,episode in data: @@ -620,11 +620,11 @@ class TraktChecker(): if trakt_id == 'tvdb_id': uniqueShows[showid]['ids']["tvdb"] = showid else: - uniqueShows[showid]['ids']["tvrage"] = showid + uniqueShows[showid]['ids']["tvrage"] = showid uniqueSeasons[showid] = [] # Get the unique seasons per Show - for showid,indexerid,show_name,startyear,season,episode in data: + for showid,indexerid,show_name,startyear,season,episode in data: if season not in uniqueSeasons[showid]: uniqueSeasons[showid].append(season) @@ -643,173 +643,3 @@ class TraktChecker(): showList.append(show) post_data = {'shows': showList} return post_data - -class TraktRolling(): - - def __init__(self): - self.trakt_api = TraktAPI(sickbeard.SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) - self.EpisodeWatched = [] - - def run(self, force=False): - logger.log(u"Start getting list from Traktv", logger.DEBUG) - - logger.log(u"Getting EpisodeWatched", logger.DEBUG) - if not self._getEpisodeWatched(): - return - - self.updateWantedList() - - def _getEpisodeWatched(self): - - try: - self.EpisodeWatched = self.trakt_api.traktRequest("sync/watched/shows") - except traktException as e: - logger.log(u"Could not connect to trakt service, cannot download show from library: %s" % ex(e), logger.ERROR) - return False - - return True - - def refreshEpisodeWatched(self): - - if not (sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT): - return False - - if not self._getEpisodeWatched(): - return False - - return True - - def updateWantedList(self, indexer_id = None): - - if not (sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT): - return False - - if not self.refreshEpisodeWatched(): - return False - - num_of_download = sickbeard.TRAKT_ROLLING_NUM_EP - - if not len(self.EpisodeWatched) or num_of_download == 0: - return True - - logger.log(u"Start looking if having " + str(num_of_download) + " episode(s) not watched", logger.DEBUG) - - myDB = db.DBConnection() - - sql_selection="SELECT indexer, indexer_id, imdb_id, show_name, season, episode, paused FROM (SELECT * FROM tv_shows s,tv_episodes e WHERE s.indexer_id = e.showid) T1 WHERE T1.episode_id IN (SELECT T2.episode_id FROM tv_episodes T2 WHERE T2.showid = T1.indexer_id and T2.status in (?) and T2.season!=0 and airdate is not null ORDER BY T2.season,T2.episode LIMIT 1)" - - if indexer_id is not None: - sql_selection=sql_selection + " and indexer_id = " + str(indexer_id) - else: - sql_selection=sql_selection + " and T1.paused = 0" - - sql_selection=sql_selection + " ORDER BY T1.show_name,season,episode" - - results = myDB.select(sql_selection,[SKIPPED]) - - for cur_result in results: - - indexer_id = str(cur_result["indexer_id"]) - show_name = (cur_result["show_name"]) - sn_sb = cur_result["season"] - ep_sb = cur_result["episode"] - - newShow = helpers.findCertainShow(sickbeard.showList, int(indexer_id)) - imdb_id = cur_result["imdb_id"] - - num_of_ep=0 - season = 1 - episode = 0 - - last_per_season = self.trakt_api.traktRequest("shows/" + str(imdb_id) + "/seasons?extended=full") - if not last_per_season: - logger.log(u"Could not connect to trakt service, cannot download last season for show", logger.ERROR) - return False - - logger.log(u"indexer_id: " + str(indexer_id) + ", Show: " + show_name + " - First skipped Episode: Season " + str(sn_sb) + ", Episode " + str(ep_sb), logger.DEBUG) - - if imdb_id not in (show['show']['ids']['imdb'] for show in self.EpisodeWatched): - logger.log(u"Show not founded in Watched list", logger.DEBUG) - if (sn_sb*100+ep_sb) > 100+num_of_download: - logger.log(u"First " + str(num_of_download) + " episode already downloaded", logger.DEBUG) - continue - else: - sn_sb = 1 - ep_sb = 1 - num_of_ep = num_of_download - else: - logger.log(u"Show founded in Watched list", logger.DEBUG) - - show_watched = [show for show in self.EpisodeWatched if show['show']['ids']['imdb'] == imdb_id] - - season = show_watched[0]['seasons'][-1]['number'] - episode = show_watched[0]['seasons'][-1]['episodes'][-1]['number'] - logger.log(u"Last watched, Season: " + str(season) + " - Episode: " + str(episode), logger.DEBUG) - - num_of_ep = num_of_download - (self._num_ep_for_season(last_per_season, sn_sb, ep_sb) - self._num_ep_for_season(last_per_season, season, episode)) + 1 - - logger.log(u"Number of Episode to Download: " + str(num_of_ep), logger.DEBUG) - - s = sn_sb - e = ep_sb - - for x in range(0,num_of_ep): - - last_s = [last_x_s for last_x_s in last_per_season if last_x_s['number'] == s] - if last_s is None: - break - if episode == 0 or (s*100+e) <= (int(last_s[0]['number'])*100+int(last_s[0]['episode_count'])): - - if (s*100+e) > (season*100+episode): - if not cur_result["paused"]: - if newShow is not None: - setEpisodeToWanted(newShow, s, e) - else: - self.todoWanted.append(int(indexer_id), s, e) - else: - self.setEpisodeToDefaultWatched(newShow, s, e) - - if (s*100+e) == (int(last_s[0]['number'])*100+int(last_s[0]['episode_count'])): - s = s + 1 - e = 1 - else: - e = e + 1 - - logger.log(u"Stop looking if having " + str(num_of_download) + " episode not watched", logger.DEBUG) - return True - - def setEpisodeToDefaultWatched(self, show, s, e): - """ - Sets an episode to ignored, only if it is currently skipped or failed - """ - epObj = show.getEpisode(int(s), int(e)) - if epObj: - - with epObj.lock: - if epObj.status != SKIPPED: - return - - logger.log(u"Setting episode %s S%02dE%02d to %s " % (show.name, s, e, statusStrings[sickbeard.EP_DEFAULT_DELETED_STATUS] )) - - epObj.status = sickbeard.EP_DEFAULT_DELETED_STATUS - epObj.saveToDB() - - def _num_ep_for_season(self, show, season, episode): - - num_ep = 0 - - for curSeason in show: - - sn = int(curSeason["number"]) - ep = int(curSeason["episode_count"]) - - if (sn < season): - num_ep = num_ep + (ep) - elif (sn == season): - num_ep = num_ep + episode - elif (sn == 0): - continue - else: - continue - - return num_ep diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index e00908b4a893b1c346cfb7610b83b3a82d12d6bb..ca6f97ba1e44e0320c658b7ab1ea5ad00449b61c 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1547,12 +1547,6 @@ class Home(WebRoot): except exceptions.CantUpdateException, e: errors.append("Unable to force an update on scene exceptions of the show.") - if not paused and (sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT): - # Checking if trakt and rolling_download are enable because updateWantedList() - # doesn't do the distinction between a failuire and being not activated(Return false) - if not sickbeard.traktRollingScheduler.action.updateWantedList(showObj.indexerid): - errors.append("Unable to force an update on wanted episode") - if do_update_scene_numbering: try: sickbeard.scene_numbering.xem_refresh(showObj.indexerid, showObj.indexer) @@ -1586,12 +1580,6 @@ class Home(WebRoot): showObj.saveToDB() - if not showObj.paused and sickbeard.TRAKT_USE_ROLLING_DOWNLOAD and sickbeard.USE_TRAKT: - # Checking if trakt and rolling_download are enable because updateWantedList() - # doesn't do the distinction between a failuire and being not activated(Return false) - if not sickbeard.traktRollingScheduler.action.updateWantedList(showObj.indexerid): - errors.append("Unable to force an update on wanted episode") - ui.notifications.message('%s has been %s' % (showObj.name,('resumed', 'paused')[showObj.paused])) return self.redirect("/home/displayShow?show=" + show) @@ -2213,7 +2201,7 @@ class HomeIRC(Home): def index(self): t = PageTemplate(rh=self, file="IRC.mako") - return t.render(topmenu="IRC", header="IRC", title="IRC", submenu=self.HomeMenu()) + return t.render(topmenu="irc", header="IRC", title="IRC", submenu=self.HomeMenu()) @route('/news(/?.*)') class HomeNews(Home): @@ -2221,7 +2209,6 @@ class HomeNews(Home): super(HomeNews, self).__init__(*args, **kwargs) def index(self): - try: news = helpers.getURL('http://sickragetv.github.io/sickrage-news/news.md', session=requests.Session()) except Exception: @@ -2884,7 +2871,7 @@ class Manage(Home, WebRoot): def index(self): t = PageTemplate(rh=self, file="manage.mako") - return t.render(submenu=self.ManageMenu(), title='Mass Update', header='Mass Update') + return t.render(submenu=self.ManageMenu(), title='Mass Update', header='Mass Update', topmenu='manage') def showEpisodeStatuses(self, indexer_id, whichStatus): @@ -2947,7 +2934,7 @@ class Manage(Home, WebRoot): sorted_show_ids.append(cur_indexer_id) return t.render(title="Episode Overview", header="Episode Overview", - topmenu="manage", submenu=self.ManageMenu(), whichStatus=whichStatus, + topmenu='manage', submenu=self.ManageMenu(), whichStatus=whichStatus, show_names=show_names, ep_counts=ep_counts, sorted_show_ids=sorted_show_ids) @@ -3024,7 +3011,7 @@ class Manage(Home, WebRoot): t = PageTemplate(rh=self, file="manage_subtitleMissed.mako") if not whichSubs: - return t.render(submenu=self.ManageMenu(), whichSubs=whichSubs, title='Episode Overview', header='Episode Overview') + return t.render(submenu=self.ManageMenu(), whichSubs=whichSubs, title='Episode Overview', header='Episode Overview', topmenu='manage') myDB = db.DBConnection() status_results = myDB.select( @@ -3054,7 +3041,7 @@ class Manage(Home, WebRoot): sorted_show_ids.append(cur_indexer_id) return t.render(submenu=self.ManageMenu(), whichSubs=whichSubs, show_names=show_names, ep_counts=ep_counts, sorted_show_ids=sorted_show_ids, - title='Episode Overview', header='Episode Overview') + title='Episode Overview', header='Episode Overview', topmenu='manage') def downloadSubtitleMissed(self, *args, **kwargs): @@ -3137,7 +3124,7 @@ class Manage(Home, WebRoot): showSQLResults[curShow.indexerid] = sqlResults return t.render(submenu=self.ManageMenu(), showCounts=showCounts, showCats=showCats, showSQLResults=showSQLResults, - title='Backlog Overview', header='Backlog Overview') + title='Backlog Overview', header='Backlog Overview', topmenu='manage') def massEdit(self, toEdit=None): @@ -3272,7 +3259,7 @@ class Manage(Home, WebRoot): return t.render(submenu=self.ManageMenu(), showList=toEdit, archive_firstmatch_value=archive_firstmatch_value, default_ep_status_value=default_ep_status_value, paused_value=paused_value, anime_value=anime_value, flatten_folders_value=flatten_folders_value, quality_value=quality_value, subtitles_value=subtitles_value, scene_value=scene_value, sports_value=sports_value, - air_by_date_value=air_by_date_value, root_dir_list=root_dir_list, title='Mass Edit', header='Mass Edit') + air_by_date_value=air_by_date_value, root_dir_list=root_dir_list, title='Mass Edit', header='Mass Edit', topmenu='manage') def massEditSubmit(self, archive_firstmatch=None, paused=None, default_ep_status=None, @@ -3532,7 +3519,7 @@ class Manage(Home, WebRoot): webui_url = re.sub('://', '://' + str(sickbeard.TORRENT_USERNAME) + ':' + str(sickbeard.TORRENT_PASSWORD) + '@' ,webui_url) return t.render(submenu=self.ManageMenu(), webui_url=webui_url, info_download_station=info_download_station, - title='Manage Torrents', header='Manage Torrents') + title='Manage Torrents', header='Manage Torrents', topmenu='manage') def failedDownloads(self, limit=100, toRemove=None): @@ -3554,7 +3541,7 @@ class Manage(Home, WebRoot): t = PageTemplate(rh=self, file="manage_failedDownloads.mako") - return t.render(submenu=self.ManageMenu(), limit=limit, failedResults=sqlResults, title='Failed Downloads', header='Failed Downloads') + return t.render(submenu=self.ManageMenu(), limit=limit, failedResults=sqlResults, title='Failed Downloads', header='Failed Downloads', topmenu='manage') @route('/manage/manageSearches(/?.*)') @@ -3569,7 +3556,7 @@ class ManageSearches(Manage): return t.render(submenu=self.ManageMenu(), backlogPaused=sickbeard.searchQueueScheduler.action.is_backlog_paused(), backlogRunning=sickbeard.searchQueueScheduler.action.is_backlog_in_progress(), dailySearchStatus=sickbeard.dailySearchScheduler.action.amActive, findPropersStatus=sickbeard.properFinderScheduler.action.amActive, queueLength=sickbeard.searchQueueScheduler.action.queue_length(), - title='Manage Searches', header='Manage Searches') + title='Manage Searches', header='Manage Searches', topmenu='manage') def forceBacklog(self): # force it to run the next time it looks @@ -3681,7 +3668,7 @@ class History(WebRoot): {'title': 'Trim History', 'path': 'history/trimHistory'}, ] - return t.render(historyResults=sqlResults, compactResults=compact, limit=limit, submenu=submenu, title='History', header='History') + return t.render(historyResults=sqlResults, compactResults=compact, limit=limit, submenu=submenu, title='History', header='History', topmenu="history") def clearHistory(self): @@ -3956,7 +3943,7 @@ class ConfigSearch(Config): def index(self): t = PageTemplate(rh=self, file="config_search.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Episode Search', header='Search Settings') + return t.render(submenu=self.ConfigMenu(), title='Config - Episode Search', header='Search Settings', topmenu='config') def saveSearch(self, use_nzbs=None, use_torrents=None, nzb_dir=None, sab_username=None, sab_password=None, @@ -4056,7 +4043,7 @@ class ConfigPostProcessing(Config): def index(self): t = PageTemplate(rh=self, file="config_postProcessing.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Post Processing', header='Post Processing') + return t.render(submenu=self.ConfigMenu(), title='Config - Post Processing', header='Post Processing', topmenu='config') def savePostProcessing(self, naming_pattern=None, naming_multi_ep=None, @@ -4246,7 +4233,7 @@ class ConfigProviders(Config): def index(self): t = PageTemplate(rh=self, file="config_providers.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Providers', header='Search Providers') + return t.render(submenu=self.ConfigMenu(), title='Config - Providers', header='Search Providers', topmenu='config') def canAddNewznabProvider(self, name): @@ -4723,7 +4710,7 @@ class ConfigNotifications(Config): def index(self): t = PageTemplate(rh=self, file="config_notifications.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Notifications', header='Notifications') + return t.render(submenu=self.ConfigMenu(), title='Config - Notifications', header='Notifications', topmenu='config') def saveNotifications(self, use_kodi=None, kodi_always_on=None, kodi_notify_onsnatch=None, @@ -4758,7 +4745,6 @@ class ConfigNotifications(Config): trakt_remove_watchlist=None, trakt_sync_watchlist=None, trakt_remove_show_from_sickrage=None, trakt_method_add=None, trakt_start_paused=None, trakt_use_recommended=None, trakt_sync=None, trakt_sync_remove=None, trakt_default_indexer=None, trakt_remove_serieslist=None, trakt_timeout=None, trakt_blacklist_name=None, - trakt_use_rolling_download=None, trakt_rolling_num_ep=None, trakt_rolling_add_paused=None, trakt_rolling_frequency=None, use_synologynotifier=None, synologynotifier_notify_onsnatch=None, synologynotifier_notify_ondownload=None, synologynotifier_notify_onsubtitledownload=None, use_pytivo=None, pytivo_notify_onsnatch=None, pytivo_notify_ondownload=None, @@ -4894,10 +4880,6 @@ class ConfigNotifications(Config): sickbeard.TRAKT_DEFAULT_INDEXER = int(trakt_default_indexer) sickbeard.TRAKT_TIMEOUT = int(trakt_timeout) sickbeard.TRAKT_BLACKLIST_NAME = trakt_blacklist_name - config.change_TRAKT_USE_ROLLING_DOWNLOAD(trakt_use_rolling_download) - sickbeard.TRAKT_ROLLING_NUM_EP = int(trakt_rolling_num_ep) - sickbeard.TRAKT_ROLLING_ADD_PAUSED = config.checkbox_to_value(trakt_rolling_add_paused) - sickbeard.TRAKT_ROLLING_FREQUENCY = int(trakt_rolling_frequency) sickbeard.USE_IMDB_POPULAR = config.checkbox_to_value(use_imdb_popular) @@ -4963,7 +4945,7 @@ class ConfigSubtitles(Config): def index(self): t = PageTemplate(rh=self, file="config_subtitles.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Subtitles', header='Subtitles') + return t.render(submenu=self.ConfigMenu(), title='Config - Subtitles', header='Subtitles', topmenu='config') def saveSubtitles(self, use_subtitles=None, subtitles_plugins=None, subtitles_languages=None, subtitles_dir=None, @@ -5016,7 +4998,7 @@ class ConfigAnime(Config): t = PageTemplate(rh=self, file="config_anime.mako") - return t.render(submenu=self.ConfigMenu(), title='Config - Anime', header='Anime') + return t.render(submenu=self.ConfigMenu(), title='Config - Anime', header='Anime', topmenu='config') def saveAnime(self, use_anidb=None, anidb_username=None, anidb_password=None, anidb_use_mylist=None, @@ -5136,7 +5118,6 @@ class ErrorLogs(WebRoot): 'TORNADO': u'Tornado', 'Thread': u'Thread', 'MAIN': u'Main', - 'TRAKTROLLING': u'Trakt Rolling' } if logFilter not in logNameFilters: