upsies.trackers.mtv.tracker

Concrete TrackerBase subclass for MTV

Classes

class upsies.trackers.mtv.tracker.MtvTracker(options=None)[source]

Bases: TrackerBase

setup_howto_template = '{howto.introduction}\n\n{howto.next_section}. Login Credentials\n\n   {howto.current_section}.1 $ upsies set trackers.{tracker.name}.username USERNAME\n   {howto.current_section}.2 $ upsies set trackers.{tracker.name}.password PASSWORD\n   {howto.current_section}.3 Store the login session cookie. (optional)\n       $ upsies set trackers.{tracker.name}.cookies_filepath "~/.cache/upsies/{tracker.name}.cookies"\n       WARNING: Anyone with acces to that file has full control over your {tracker.label} account.\n\n{howto.next_section}. Announce URL (Optional)\n\n   The announce URL is fetched from the website on demand, but you can\n   also configure it explicitly.\n\n   {howto.current_section}.1 $ upsies set trackers.{tracker.name}.announce_url ANNOUNCE_URL\n\n{howto.screenshots}\n\n{howto.autoseed}\n\n{howto.reuse_torrents}\n\n{howto.upload}\n'

Step-by-step guide that explains how to make your first upload

Note

This MUST be a class attribute and not a property.

The following placeholders can be used in f-string format:

  • howto - Howto instance

  • tracker - TrackerBase subclass

  • executable - Name of the executable that runs the application

TrackerJobs

alias of MtvTrackerJobs

TrackerConfig

alias of MtvTrackerConfig

cli_arguments = {'submit': {('--anonymous', '--an'): {'help': 'Hide your username for this submission\nValid BOOL values: true/false, yes/no, 1/0, on/off, aye/nay', 'metavar': 'BOOL', 'type': <function bool_or_none>}, ('--ignore-dupes', '--id'): {'action': 'store_true', 'help': 'Force submission even if the tracker reports duplicates'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--only-description', '--od'): {'action': 'store_true', 'group': 'generate-metadata', 'help': 'Only generate description (do not submit)'}, ('--only-title', '--ot'): {'action': 'store_true', 'group': 'generate-metadata', 'help': 'Only generate title (do not submit)'}, ('--screenshots', '--ss'): {'action': 'extend', 'help': 'Path(s) to existing screenshot file(s)\nDirectories are searched recursively.\nMore screenshots are created if necessary.', 'metavar': 'SCREENSHOT', 'nargs': '+', 'type': <function files_with_extension.<locals>.files_with_extension>}, ('--screenshots-count', '--ssc'): {'help': 'How many screenshots to make (min=3, max=10)', 'type': functools.partial(<function integer>, min=3, max=10)}}}

CLI argument definitions (see CommandBase.cli_arguments)

rules = (<class 'upsies.trackers.mtv.rules.MtvBannedContainerFormat'>, <class 'upsies.trackers.mtv.rules.MtvBannedGroup'>, <class 'upsies.trackers.mtv.rules.MtvHevcUhdOnly'>)

Sequence of TrackerRuleBase subclasses or None

For convenience, this may also be a ModuleType that provides TrackerRuleBase subclasses.

async confirm_logged_in()[source]

Check if we are logged in by doing a website request

This method is called by login() to make sure _login() succeeded. It is also called by still_logged_in(), which is used check if a stored user session is still working or if a new session must be started (e.g. because the cookie expired).

Raises:

errors.RequestError – if we are not logged in

async get_announce_url()[source]

Get announce URL from options or tracker website

Warning

You should expect that login() was called first when implementing this method and raise RuntimeError if is_logged_in is False.

Raises:

errors.RequestError – on any kind of failure

static calculate_piece_size_min_max(_bytes)[source]

Anything from 32 KiB to 8 MiB is fine, regardless of content size

async upload(tracker_jobs)[source]

Upload torrent and other metadata from jobs

Parameters:

tracker_jobs (TrackerJobsBase) – TrackerJobs instance