Source code for upsies.trackers.nbl.jobs

"""
Concrete :class:`~.TrackerJobsBase` subclass for NBL
"""

import functools

from ... import jobs, utils
from .. import base

import logging  # isort:skip
_log = logging.getLogger(__name__)


[docs] class NblTrackerJobs(base.TrackerJobsBase): @functools.cached_property def jobs_before_upload(self): return ( # Interactive jobs self.tvmaze_job, self.category_job, # Background jobs self.create_torrent_job, self.mediainfo_job, self.rules_job, self.confirm_submission_job, ) @functools.cached_property def category_job(self): return jobs.dialog.ChoiceJob( name=self.get_job_name('category'), label='Category', precondition=self.make_precondition('category_job'), options=( ('Season', '3'), ('Episode', '1'), ), autodetected=self.autodetected_category, **self.common_job_args(), ) @functools.cached_property def autodetected_category(self): if self.release_name.type is utils.release.ReleaseType.season: return 'Season' else: # Sometimes a series is continued or finalized as one or more # movies. We submit them as episodes. # TODO: Once the API supports it, we should add the special tag. # Example: https://www.tvmaze.com/shows/3646/alien-nation/episodes return 'Episode' @property def post_data(self): return { 'api_key': self.options['apikey'], 'category': self.get_job_attribute(self.category_job, 'choice'), 'tvmazeid': self.get_job_output(self.tvmaze_job, slice=0), 'mediainfo': self.get_job_output(self.mediainfo_job, slice=0), 'anonymous': '1' if self.options.get('anonymous', False) else None, }