diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index d3b960e2c2..383ea9bd4f 100644 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -33,22 +33,26 @@ from configobj import ConfigObj from github import Github -from sickbeard import daily -from sickbeard import db -from sickbeard import helpers -from sickbeard import logger -from sickbeard import metadata -from sickbeard import naming -from sickbeard import providers -from sickbeard import scheduler -from sickbeard import queue from sickbeard import ( - showUpdater, versionChecker, proper, auto_postprocessor, subtitles, traktChecker, + auto_postprocessor, + db, + helpers, + logger, + metadata, + naming, + providers, + scheduler, + show_queue, + showUpdater, + subtitles, + traktChecker, + versionChecker, +) +from sickbeard.common import ( + SD, + SKIPPED, + WANTED, ) -from sickbeard import show_queue -from sickbeard.common import SD -from sickbeard.common import SKIPPED -from sickbeard.common import WANTED from sickbeard.config import ( CheckSection, ConfigMigrator, check_provider_setting, check_setting_int, check_setting_bool, check_setting_str, check_setting_float, @@ -56,11 +60,27 @@ ) from sickbeard.databases import main_db, cache_db, failed_db from sickbeard.indexers import indexer_api -from sickbeard.indexers.indexer_exceptions import indexer_shownotfound, indexer_showincomplete, indexer_exception, \ - indexer_error, indexer_episodenotfound, indexer_attributenotfound, indexer_seasonnotfound, indexer_userabort +from sickbeard.indexers.indexer_exceptions import ( + indexer_attributenotfound, + indexer_episodenotfound, + indexer_error, + indexer_exception, + indexer_seasonnotfound, + indexer_showincomplete, + indexer_shownotfound, + indexer_userabort, +) from sickbeard.providers.newznab import NewznabProvider from sickbeard.providers.rsstorrent import TorrentRssProvider -from sickbeard.search import backlog, daily, proper, queue +from sickbeard.search.daily import DailySearcher +from sickbeard.search.proper import ProperFinder +from sickbeard.search.backlog import BacklogSearchScheduler, BacklogSearcher +from sickbeard.search.queue import ( + ForcedSearchQueue, + SearchQueue, + SnatchQueue, +) + from sickrage.helper.encoding import ek from sickrage.helper.exceptions import ex from sickrage.providers.GenericProvider import GenericProvider @@ -1389,27 +1409,27 @@ def path_leaf(path): start_time=datetime.time(hour=SHOWUPDATE_HOUR, minute=random.randint(0, 59))) # snatcher used for manual search, manual picked results - manualSnatchScheduler = scheduler.Scheduler(queue.SnatchQueue(), + manualSnatchScheduler = scheduler.Scheduler(SnatchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="MANUALSNATCHQUEUE") # searchers - searchQueueScheduler = scheduler.Scheduler(queue.SearchQueue(), + searchQueueScheduler = scheduler.Scheduler(SearchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="SEARCHQUEUE") - forcedSearchQueueScheduler = scheduler.Scheduler(queue.ForcedSearchQueue(), + forcedSearchQueueScheduler = scheduler.Scheduler(ForcedSearchQueue(), cycleTime=datetime.timedelta(seconds=3), threadName="FORCEDSEARCHQUEUE") # TODO: update_interval should take last daily/backlog times into account! update_interval = datetime.timedelta(minutes=DAILYSEARCH_FREQUENCY) - dailySearchScheduler = scheduler.Scheduler(daily.DailySearcher(), + dailySearchScheduler = scheduler.Scheduler(DailySearcher(), cycleTime=update_interval, threadName="DAILYSEARCHER", run_delay=update_interval) update_interval = datetime.timedelta(minutes=BACKLOG_FREQUENCY) - backlogSearchScheduler = backlog.BacklogSearchScheduler(backlog.BacklogSearcher(), + backlogSearchScheduler = BacklogSearchScheduler(BacklogSearcher(), cycleTime=update_interval, threadName="BACKLOG", run_delay=update_interval) @@ -1422,7 +1442,7 @@ def path_leaf(path): update_interval = datetime.timedelta(hours=1) run_at = datetime.time(hour=1) # 1 AM - properFinderScheduler = scheduler.Scheduler(proper.ProperFinder(), + properFinderScheduler = scheduler.Scheduler(ProperFinder(), cycleTime=update_interval, threadName="FINDPROPERS", start_time=run_at, diff --git a/sickbeard/failedProcessor.py b/sickbeard/failedProcessor.py index f9db982fa3..a07618f712 100644 --- a/sickbeard/failedProcessor.py +++ b/sickbeard/failedProcessor.py @@ -22,7 +22,7 @@ from sickbeard import logger from sickbeard import show_name_helpers from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException -from sickbeard.search import queue +from sickbeard.search.queue import FailedQueueItem from sickrage.helper.exceptions import FailedPostProcessingFailedException @@ -69,7 +69,7 @@ def process(self): for episode in parsed.episode_numbers: segment = parsed.show.get_episode(parsed.season_number, episode) - cur_failed_queue_item = queue.FailedQueueItem(parsed.show, [segment]) + cur_failed_queue_item = FailedQueueItem(parsed.show, [segment]) sickbeard.forcedSearchQueueScheduler.action.add_item(cur_failed_queue_item) return True diff --git a/sickbeard/search/backlog.py b/sickbeard/search/backlog.py index a503d4ace9..b5a25ad2ef 100644 --- a/sickbeard/search/backlog.py +++ b/sickbeard/search/backlog.py @@ -27,8 +27,7 @@ from sickbeard import ( db, scheduler, logger, ui, common, ) -from sickbeard.search import queue - +from sickbeard.search.queue import BacklogQueueItem class BacklogSearchScheduler(scheduler.Scheduler): def forceSearch(self): @@ -106,7 +105,7 @@ def searchBacklog(self, which_shows=None): for season, segment in iteritems(segments): self.currentSearchInfo = {'title': curShow.name + " Season " + str(season)} - backlog_queue_item = queue.BacklogQueueItem(curShow, segment) + backlog_queue_item = BacklogQueueItem(curShow, segment) sickbeard.searchQueueScheduler.action.add_item(backlog_queue_item) # @UndefinedVariable if not segments: diff --git a/sickbeard/search/manual.py b/sickbeard/search/manual.py index fd26e0dbd1..81268257d4 100644 --- a/sickbeard/search/manual.py +++ b/sickbeard/search/manual.py @@ -25,8 +25,8 @@ import sickbeard from sickbeard import logger, db +from sickbeard.search.queue import ForcedSearchQueueItem from sickbeard.common import Quality, Overview, statusStrings, cpu_presets -from sickbeard.search import queue from sickrage.helper.common import enabled_providers from sickrage.show.Show import Show @@ -123,7 +123,7 @@ def update_finished_search_queue_item(snatch_queue_item): if snatch_queue_item.show and not search_thread.show.indexerid == snatch_queue_item.show.indexerid: continue - if isinstance(search_thread, sickbeard.search.queue.ForcedSearchQueueItem): + if isinstance(search_thread, ForcedSearchQueueItem): if not isinstance(search_thread.segment, list): search_thread.segment = [search_thread.segment] @@ -165,7 +165,7 @@ def collectEpisodesFromSearchThread(show): if show and not search_thread.show.indexerid == int(show): continue - if isinstance(search_thread, sickbeard.search.queue.ForcedSearchQueueItem): + if isinstance(search_thread, ForcedSearchQueueItem): if not [x for x in episodes if x['episodeindexid'] in [search.indexerid for search in search_thread.segment]]: episodes += getEpisodes(search_thread, searchstatus) else: @@ -259,7 +259,7 @@ def get_provider_cache_results(indexer, show_all_results=None, perform_search=No and episode: {1}x{2}'.format(show_obj.name, season, episode) # make a queue item for it and put it on the queue - ep_queue_item = queue.ForcedSearchQueueItem(ep_obj.show, [ep_obj], bool(int(down_cur_quality)), True, manual_search_type) # pylint: disable=maybe-no-member + ep_queue_item = ForcedSearchQueueItem(ep_obj.show, [ep_obj], bool(int(down_cur_quality)), True, manual_search_type) # pylint: disable=maybe-no-member sickbeard.forcedSearchQueueScheduler.action.add_item(ep_queue_item) diff --git a/sickbeard/search/queue.py b/sickbeard/search/queue.py index 84f8dc364b..2c92dc1781 100644 --- a/sickbeard/search/queue.py +++ b/sickbeard/search/queue.py @@ -23,13 +23,20 @@ import traceback import sickbeard -from sickbeard import common -from sickbeard import failed_history, history -from sickbeard import generic_queue -from sickbeard import logger -from sickbeard import providers -from sickbeard import ui -from sickbeard.search import core +from sickbeard import ( + common, + failed_history, + history, + generic_queue, + logger, + providers, + ui, +) +from sickbeard.search.core import ( + searchForNeededEpisodes, + snatchEpisode, + searchProviders, +) search_queue_lock = threading.Lock() @@ -247,7 +254,7 @@ def run(self): try: logger.log(u"Beginning daily search for new episodes") - found_results = core.searchForNeededEpisodes() + found_results = searchForNeededEpisodes() if not found_results: logger.log(u"No needed episodes found") @@ -259,7 +266,7 @@ def run(self): result.seeders, result.leechers, result.provider.name)) else: logger.log(u"Downloading {0} from {1}".format(result.name, result.provider.name)) - self.success = core.snatchEpisode(result) + self.success = snatchEpisode(result) # give the CPU a break time.sleep(common.cpu_presets[sickbeard.CPU_PRESET]) @@ -314,7 +321,7 @@ def run(self): format(('forced', 'manual')[bool(self.manual_search)], ('', 'season pack ')[bool(self.manual_search_type == 'season')], self.segment[0].pretty_name())) - search_result = core.searchProviders(self.show, self.segment, True, self.downCurQuality, + search_result = searchProviders(self.show, self.segment, True, self.downCurQuality, self.manual_search, self.manual_search_type) if not self.manual_search and search_result: @@ -325,7 +332,7 @@ def run(self): search_result[0].seeders, search_result[0].leechers, search_result[0].provider.name)) else: logger.log(u"Downloading {0} from {1}".format(search_result[0].name, search_result[0].provider.name)) - self.success = core.snatchEpisode(search_result[0]) + self.success = snatchEpisode(search_result[0]) # give the CPU a break time.sleep(common.cpu_presets[sickbeard.CPU_PRESET]) @@ -410,7 +417,7 @@ def run(self): search_result.seeders, search_result.leechers, search_result.provider.name)) else: logger.log(u"Downloading {0} from {1}".format(search_result.name, search_result.provider.name)) - self.success = core.snatchEpisode(search_result) + self.success = snatchEpisode(search_result) else: logger.log(u"Unable to snatch release: {0}".format(search_result.name)) @@ -451,7 +458,7 @@ def run(self): if not self.show.paused: try: logger.log(u"Beginning backlog search for: [" + self.show.name + "]") - search_result = core.searchProviders(self.show, self.segment, False, False) + search_result = searchProviders(self.show, self.segment, False, False) if search_result: for result in search_result: @@ -462,7 +469,7 @@ def run(self): result.seeders, result.leechers, result.provider.name)) else: logger.log(u"Downloading {0} from {1}".format(result.name, result.provider.name)) - self.success = core.snatchEpisode(result) + self.success = snatchEpisode(result) # give the CPU a break time.sleep(common.cpu_presets[sickbeard.CPU_PRESET]) @@ -516,7 +523,7 @@ def run(self): # If it is wanted, self.downCurQuality doesnt matter # if it isnt wanted, we need to make sure to not overwrite the existing ep that we reverted to! - search_result = core.searchProviders(self.show, self.segment, True, False, False) + search_result = searchProviders(self.show, self.segment, True, False, False) if search_result: for result in search_result: @@ -526,7 +533,7 @@ def run(self): result.seeders, result.leechers, result.provider.name)) else: logger.log(u"Downloading {0} from {1}".format(result.name, result.provider.name)) - self.success = core.snatchEpisode(result) + self.success = snatchEpisode(result) # give the CPU a break time.sleep(common.cpu_presets[sickbeard.CPU_PRESET]) diff --git a/sickbeard/server/api/core.py b/sickbeard/server/api/core.py index 7432a08143..2efe6ec7c7 100644 --- a/sickbeard/server/api/core.py +++ b/sickbeard/server/api/core.py @@ -46,7 +46,7 @@ ARCHIVED, DOWNLOADED, FAILED, IGNORED, SKIPPED, SNATCHED, SNATCHED_PROPER, UNAIRED, UNKNOWN, WANTED, ) -from sickbeard.search import queue +from sickbeard.search.queue import BacklogQueueItem, ForcedSearchQueueItem from sickbeard.versionChecker import CheckVersion from sickrage.helper.common import ( dateFormat, dateTimeFormat, pretty_file_size, sanitize_filename, @@ -782,7 +782,7 @@ def run(self): return _responds(RESULT_FAILURE, msg="Episode not found") # make a queue item for it and put it on the queue - ep_queue_item = queue.ForcedSearchQueueItem(show_obj, [ep_obj]) + ep_queue_item = ForcedSearchQueueItem(show_obj, [ep_obj]) sickbeard.forcedSearchQueueScheduler.action.add_item(ep_queue_item) # @UndefinedVariable # wait until the queue item tells us whether it worked or not @@ -902,7 +902,7 @@ def _ep_result(result_code, ep, msg=""): extra_msg = "" if start_backlog: for season, segment in iteritems(segments): - cur_backlog_queue_item = queue.BacklogQueueItem(show_obj, segment) + cur_backlog_queue_item = BacklogQueueItem(show_obj, segment) sickbeard.searchQueueScheduler.action.add_item(cur_backlog_queue_item) # @UndefinedVariable logger.log(u"API :: Starting backlog for " + show_obj.name + " season " + str( diff --git a/sickbeard/server/web/home/handler.py b/sickbeard/server/web/home/handler.py index fdaf315d37..9e32fcfed0 100644 --- a/sickbeard/server/web/home/handler.py +++ b/sickbeard/server/web/home/handler.py @@ -35,7 +35,9 @@ get_xem_absolute_numbering_for_show, get_xem_numbering_for_show, set_scene_numbering, ) -from sickbeard.search import queue +from sickbeard.search.queue import ( + FailedQueueItem, ForcedSearchQueueItem, BacklogQueueItem, ManualSnatchQueueItem +) from sickbeard.search.manual import ( collectEpisodesFromSearchThread, get_provider_cache_results, getEpisode, update_finished_search_queue_item, SEARCH_STATUS_FINISHED, SEARCH_STATUS_SEARCHING, SEARCH_STATUS_QUEUED, @@ -952,7 +954,7 @@ def pickManualSearch(self, provider=None, rowid=None, manual_search_type='episod ep_objs.append(show_obj.get_episode(int(cached_result[b'season']), int(episode))) # Create the queue item - snatch_queue_item = queue.ManualSnatchQueueItem(show_obj, ep_objs, provider, cached_result) + snatch_queue_item = ManualSnatchQueueItem(show_obj, ep_objs, provider, cached_result) # Add the queue item to the queue sickbeard.manualSnatchScheduler.action.add_item(snatch_queue_item) @@ -1726,7 +1728,7 @@ def setStatus(self, show=None, eps=None, status=None, direct=False): msg += '