upsies.uis.tui.commands.submit

Generate all required metadata and upload to tracker

Classes

class upsies.uis.tui.commands.submit.submit(args, config)[source]

Bases: CommandBase

Generate all required metadata and upload to TRACKER

names = ('submit',)

Sequence of command names

The first name is the full name and the rest are short aliases.

cli_arguments = {}

CLI argument definitions for this command

This is a dict in which keys are option names or flags (e.g. "PATH" or ("--path", "-p") and each value is a dict with keyword arguments for argparse.ArgumentParser.add_argument().

Additionally, you may specify a group in each keyword argument dictionary. Arguments with the same group value are mutually exclusive, meaning the user can only specify one of them.

subcommand_name = 'TRACKER'

Reference to expected subcommand in help texts

subcommands = {'ant': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--nfo',): {'help': 'Path to NFO file (supersedes any *.nfo file found in the release directory)'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--tmdb', '--tm'): {'help': 'TMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to ANT.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit ant --howto-setup\n'}, 'bhd': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--custom-edition', '--ce'): {'default': '', 'help': 'Non-standard edition, e.g. "Final Cut"'}, ('--draft', '--dr'): {'action': 'store_true', 'default': None, 'help': 'Upload as draft'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--nfo',): {'help': 'Path to NFO file (supersedes any *.nfo file found in the release directory)'}, ('--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)'}, ('--personal-rip', '--pr'): {'action': 'store_true', 'help': 'Tag submission as your own encode'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}, ('--special', '--sp'): {'action': 'store_true', 'help': 'Tag as special episode, e.g. Christmas special (ignored for movie uploads)'}, ('--tmdb', '--tm'): {'help': 'TMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to BHD.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit bhd --howto-setup\n'}, 'cbr': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--nfo',): {'help': 'Path to NFO file (supersedes any *.nfo file found in the release directory)'}, ('--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)'}, ('--personal-rip', '--pr'): {'action': 'store_true', 'help': 'Tag submission as your own encode'}, ('--queue', '--qe'): {'action': 'store_true', 'help': 'Send to moderation queue'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}, ('--tmdb', '--tm'): {'help': 'TMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to CBR.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit cbr --howto-setup\n'}, 'fld': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--only-description', '--od'): {'action': 'store_true', 'group': 'generate-metadata', 'help': 'Only generate description (do not submit)'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}, ('--tmdb', '--tm'): {'help': 'TMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to FLD.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit fld --howto-setup\n'}, 'mtv': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-dupes', '--id'): {'action': 'store_true', 'help': 'Force submission even if the tracker reports duplicates'}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--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)'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}}, 'description': 'Generate all required metadata and upload it to MTV.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit mtv --howto-setup\n'}, 'nbl': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--tvmaze', '--tv'): {'help': 'TVmaze ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to NBL.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit nbl --howto-setup\n'}, 'ptp': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--hardcoded-subtitles', '--hs'): {'action': 'store_true', 'help': 'Release is trumpable because of hardcoded subtitles'}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--nfo',): {'help': 'Path to NFO file (supersedes any *.nfo file found in the release directory)'}, ('--no-english-subtitles', '--nes'): {'help': 'Whether release contains no English audio and no English subtitles.\nThis is autodetected reliably if all audio and subtitle tracks have a correct language tag. If not, you are asked interactively.\nSubtitle languages are detected in *.idx/sub, VIDEO_TS trees, BDMV trees and *.srt/ssa/ass/vtt by language code in the file name, e.g. "Foo.en.srt".', 'metavar': 'BOOL', 'type': <function bool_or_none>}, ('--not-main-movie', '--nmm'): {'action': 'store_true', 'help': 'Upload ONLY contains extras, Rifftrax, Workprints'}, ('--only-description', '--od'): {'action': 'store_true', 'group': 'generate-metadata', 'help': 'Only generate description (do not submit)'}, ('--personal-rip', '--pr'): {'action': 'store_true', 'help': 'Tag submission as your own encode'}, ('--poster', '--po'): {'help': 'Path or URL to movie poster'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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 per video file', 'type': functools.partial(<function integer>, min=1, max=10)}, ('--source', '--so'): {'help': 'Original source of this release\nShould vaguely match: Blu-ray, DVD, WEB, HD-DVD, HDTV, TV, VHS'}, ('--subtitles', '--su'): {'help': 'Comma-separated list of subtitle language codes.\nUse this if subtitles are hardcoded or missing language tags.', 'metavar': 'LANGUAGES', 'type': <class 'upsies.utils.types.ListOfSubtitle'>}, ('--trailer', '--tr'): {'help': 'YouTube trailer URL'}, ('--type', '--ty'): {'help': 'General category of this release\nMust vaguely match: Feature Film, Short Film, Miniseries, Stand-up Comedy, Live Performance, Movie Collection', 'type': <class 'upsies.trackers.ptp.config.PtpReleaseType'>}, ('--upload-token', '--ut'): {'help': 'Upload token from staff'}}, 'description': 'Generate all required metadata and upload it to PTP.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit ptp --howto-setup\n'}, 'rfx': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--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>}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--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)'}, ('--personal-release', '--pr'): {'action': 'store_true', 'help': 'Tag submission as your own release'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}, ('--tmdb', '--tm'): {'help': 'TMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}}, 'description': 'Generate all required metadata and upload it to RFX.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit rfx --howto-setup\n'}, 'sc': {'cli': {'CONTENT': {'help': 'Path to release content', 'type': <function content>}, ('--add-to', '-a'): {'help': 'BitTorrent client name.\nValid names are section names in ~/.config/upsies/clients.ini.', 'metavar': 'CLIENT'}, ('--confirm', '--co'): {'default': None, 'help': 'Whether to ask if you really want to submit after all metadata is generated\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--copy-to', '-c'): {'help': 'Copy the created torrent to PATH (file or directory)', 'metavar': 'PATH'}, ('--edition',): {'help': 'Edition information in the format "YEAR,TITLE,DISTRIBUTOR,CATALOGUE_NUMBER"\nEvery value except for YEAR may be empty.'}, ('--edition-catalogue-number', '--ec'): {'help': 'Editon year (overloads CATALOGUE_NUMBER in --edition)'}, ('--edition-distributor', '--ed'): {'help': 'Editon year (overloads DISTRIBUTOR in --edition)'}, ('--edition-title', '--et'): {'help': 'Editon title (overloads TITLE from --edition)'}, ('--edition-year', '--ey'): {'help': 'Editon year (overloads YEAR from --edition)'}, ('--exclude-files', '--ef'): {'action': 'extend', 'default': [], 'help': 'Glob pattern to exclude from torrent (matched case-insensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+'}, ('--exclude-files-regex', '--efr'): {'action': 'extend', 'default': [], 'help': 'Regular expression to exclude from torrent (matched case-sensitively against path in torrent)', 'metavar': 'PATTERN', 'nargs': '+', 'type': <function regex>}, ('--howto-setup',): {'action': <class 'upsies.uis.tui.commands.base.PrintText.<locals>.PrintText'>, 'help': 'Show detailed instructions on how to do your first upload', 'nargs': 0}, ('--ignore-rules', '--ir'): {'action': 'store_true', 'help': 'Allow submission if it is against tracker rules'}, ('--imdb', '--im'): {'help': 'IMDb ID or URL', 'type': <function webdb_id.<locals>.webdb_id>}, ('--is-scene',): {'default': None, 'help': 'Whether this is a scene release (usually autodetected)\nValid values: true/false, yes/no, 1/0, on/off, aye/nay', 'type': <function bool_or_none>}, ('--only-description', '--od'): {'action': 'store_true', 'group': 'generate-metadata', 'help': 'Only generate description (do not submit)'}, ('--poster', '--po'): {'help': 'Path or URL to poster image'}, ('--reuse-torrent', '-t'): {'default': (), 'help': "Use hashed pieces from TORRENT instead of generating them again or getting them from ~/.cache/upsies/generic_torrents\nTORRENT may also be a directory, which is searched recursively for a matching *.torrent file.\nNOTE: This option is ignored if TORRENT doesn't match properly.", 'metavar': 'TORRENT', 'nargs': '+', 'type': <function existing_path>}, ('--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)}, ('--trailer', '--tr'): {'help': 'Trailer URL (Vimeo or YouTube)'}}, 'description': 'Generate all required metadata and upload it to SC.\n\nFor step-by-step instructions run this command:\n\n    $ upsies submit sc --howto-setup\n'}}

Subcommands of commands (or subsubcommands from a CLI point of view)

This is a dict where keys are subcommand names and values are cli_arguments.

property jobs

Iterable of JobBase instances

Each JobBase instance may also be None for inactive jobs.

property main_job

The main job in jobs_active

This job’s output is the output of the command.

In the default implementation, this is the last job in jobs_active that is_enabled.

property tracker_name

Lower-case abbreviation of tracker name

property tracker_options

tracker_name section in trackers configuration file combined with CLI arguments where CLI arguments take precedence unless their value is None

property tracker

TrackerBase instance from one of the submodules of trackers

property tracker_jobs

TrackerJobsBase instance from one of the submodules of trackers