upsies.trackers

API for trackers

TrackerBase provides a uniform interface for all trackers. Its subclasses have two main purposes:

  1. Specify jobs that generate metadata, e.g. torrent creation, mediainfo output, IMDb ID, etc.

  2. Provide coroutine methods, e.g. for uploading the generated metadata.

Modules

ant

ANT API

base

Abstract base classes for trackers

bhd

BHD API

cbr

CBR API

dummy

Dummy tracker for testing and debugging

fld

FLD API

mtv

MTV API

nbl

NBL API

ptp

PTP API

rfx

RFX API

sc

SC API

Functions

upsies.trackers.tracker(name, **kwargs)[source]

Create TrackerBase instance

Parameters:
  • name (str) – Name of the tracker. A subclass of TrackerBase with the same name must exist in one of this package’s submodules.

  • kwargs – All keyword arguments are passed to the subclass specified by name

Raises:

ValueError – if no matching subclass can be found

Returns:

TrackerBase instance

upsies.trackers.tracker_classes()[source]

Return list of TrackerBase subclasses

upsies.trackers.tracker_names()[source]

Return sequence of valid name arguments for tracker()

Classes

class upsies.trackers.TrackersConfig(*, ant: AntTrackerConfig = AntTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://anthelion.me', apikey=SecretStr(''), announce_url=SecretStr(''), anonymous=Bool('no'), confirm=Bool('no')), bhd: BhdTrackerConfig = BhdTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'), Regex('\\.(?i:srt|idx|sub)$'))), add_to='', copy_to='', upload_url='https://beyond-hd.me/api/upload', announce_url='https://tracker.beyond-hd.me:2053/announce', announce_passkey=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), draft=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('imgbb', 'imgbox', 'pixhost', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), cbr: CbrTrackerConfig = CbrTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://capybarabr.com', announce_url=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')))), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), fld: FldTrackerConfig = FldTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', upload_url='https://flood.st/api/torrents/upload', announce_url='https://flood.st/announce', announce_key=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), mtv: MtvTrackerConfig = MtvTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'), Regex('\\.(?i:srt|idx|sub)$'))), add_to='', copy_to='', base_url='https://www.morethantv.me', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('imgbox', options=('imgbb', 'imgbox', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), anonymous=Bool('no'), confirm=Bool('no')), nbl: NblTrackerConfig = NblTrackerConfig(exclude=ListOfRegex((Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'),)), add_to='', copy_to='', upload_url='https://nebulance.io/upload.php', apikey=SecretStr(''), announce_url=SecretStr(''), anonymous=Bool('no'), confirm=Bool('no')), ptp: PtpTrackerConfig = PtpTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://passthepopcorn.me', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('ptpimg', options=('freeimage', 'imgbb', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'pixhost', 'ptpimg', 'ra')))), screenshots_from_movie=Integer(3, min=3, max=10), screenshots_from_episode=Integer(2, min=2, max=10), confirm=Bool('no')), rfx: RfxTrackerConfig = RfxTrackerConfig(exclude=ListOfRegex((Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'),)), add_to='', copy_to='', upload_url='https://reelflix.cc/api/torrents/upload', announce_url='https://reelflix.cc/announce', announce_passkey=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra', 'rfximg')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra', 'rfximg')))), screenshots_count=Integer(3, min=3, max=10), confirm=Bool('no')), sc: ScTrackerConfig = ScTrackerConfig(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://secret-cinema.pw/', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')))), screenshots_count=Integer(3, min=3, max=10), confirm=Bool('no')))

Bases: _TrackersConfig

defaults = TrackersConfigDefaults(ant=AntTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://anthelion.me', apikey=SecretStr(''), announce_url=SecretStr(''), anonymous=Bool('no'), confirm=Bool('no')), bhd=BhdTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'), Regex('\\.(?i:srt|idx|sub)$'))), add_to='', copy_to='', upload_url='https://beyond-hd.me/api/upload', announce_url='https://tracker.beyond-hd.me:2053/announce', announce_passkey=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), draft=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('imgbb', 'imgbox', 'pixhost', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), cbr=CbrTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://capybarabr.com', announce_url=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')))), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), fld=FldTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', upload_url='https://flood.st/api/torrents/upload', announce_url='https://flood.st/announce', announce_key=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), confirm=Bool('no')), mtv=MtvTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'), Regex('\\.(?i:srt|idx|sub)$'))), add_to='', copy_to='', base_url='https://www.morethantv.me', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('imgbox', options=('imgbb', 'imgbox', 'ptpimg')),)), screenshots_count=Integer(4, min=3, max=10), anonymous=Bool('no'), confirm=Bool('no')), nbl=NblTrackerConfigDefaults(exclude=ListOfRegex((Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'),)), add_to='', copy_to='', upload_url='https://nebulance.io/upload.php', apikey=SecretStr(''), announce_url=SecretStr(''), anonymous=Bool('no'), confirm=Bool('no')), ptp=PtpTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://passthepopcorn.me', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('ptpimg', options=('freeimage', 'imgbb', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'pixhost', 'ptpimg', 'ra')))), screenshots_from_movie=Integer(3, min=3, max=10), screenshots_from_episode=Integer(2, min=2, max=10), confirm=Bool('no')), rfx=RfxTrackerConfigDefaults(exclude=ListOfRegex((Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'),)), add_to='', copy_to='', upload_url='https://reelflix.cc/api/torrents/upload', announce_url='https://reelflix.cc/announce', announce_passkey=SecretStr(''), apikey=SecretStr(''), anonymous=Bool('no'), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra', 'rfximg')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra', 'rfximg')))), screenshots_count=Integer(3, min=3, max=10), confirm=Bool('no')), sc=ScTrackerConfigDefaults(exclude=ListOfRegex((Regex('\\.(?i:sfv|md5)$'), Regex('(?i:/extras/|/.+[\\. ]extras[\\. ]|/.+[\\. ]extra[\\. ]?\\d+[\\.])'), Regex('/(?:\\.fuse_hidden\\d+|\\.Trash/.*|\\.Trash-\\d+/.*|\\.DS_Store|\\.Trashes/.*|desktop\\.ini|Thumbs\\.db|@eaDir/.*|.*@SynoEAStream|.*@SynoResource|.*\\.miniso|.*dvdid\\.xml|.*\\.nzb|.*\\.par2|.*\\.srr|.*\\.srs|.*\\.torrent)$'), Regex('(?i:^(?!.*/(BDMV|VIDEO_TS)/).*\\.(png|jpg|jpeg)$)'), Regex('\\.(?i:nfo)$'), Regex('(?i:/[!_0-]?sample/|[^/][\\.\\-_ ]sample\\.mkv|/sample[\\!\\-_].+\\.mkv|[\\.\\-_!]?sample-[a-zA-Z0-9]+\\.mkv|/[!#$%&*+\\-\\.]?sample\\.mkv)'))), add_to='', copy_to='', base_url='https://secret-cinema.pw/', username='', password=SecretStr(''), cookies_filepath='', announce_url=SecretStr(''), image_host=ListOfImagehost((Imagehost('imgbox', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')), Imagehost('freeimage', options=('freeimage', 'imgbb', 'imgbox', 'pixhost', 'ptpimg', 'ra')))), screenshots_count=Integer(3, min=3, max=10), confirm=Bool('no')))

Class property that holds an instance of this class with default values

See _CreateDefaults.

model_config = {'arbitrary_types_allowed': True, 'extra': 'forbid', 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].