plugins Package

plugins Package

Standard plugin package.

api_tmdb Module

class flexget.plugins.api_tmdb.ApiTmdb

Bases: object

Does lookups to TMDb and provides movie information. Caches lookups.

static get_movie_details(movie, session, result=None)

Populate details for this :movie: from TMDb

static lookup(*args, **kwargs)
class flexget.plugins.api_tmdb.TMDBContainer(init_object=None)

Bases: object

Base class for TMDb objects

update_from_dict(update_dict)

Populates any simple (string or number) attributes from a dict

update_from_object(update_object)

Populates any simple (string or number) attributes from object attributes

class flexget.plugins.api_tmdb.TMDBGenre(init_object=None)

Bases: flexget.plugins.api_tmdb.TMDBContainer, sqlalchemy.ext.declarative.api.Base

id
name
class flexget.plugins.api_tmdb.TMDBMovie(init_object=None)

Bases: flexget.plugins.api_tmdb.TMDBContainer, sqlalchemy.ext.declarative.api.Base

adult
alternative_name
budget
certification
genres
homepage
id
imdb_id
language
movie_type
name
original_name
overview
popularity
posters
rating
released
revenue
runtime
tagline
trailer
translated
update_from_object(update_object)
updated
url
votes
year = <sqlalchemy.sql.elements.Extract object>
class flexget.plugins.api_tmdb.TMDBPoster(init_object=None)

Bases: flexget.plugins.api_tmdb.TMDBContainer, sqlalchemy.ext.declarative.api.Base

db_id
file
get_file(only_cached=False)

Makes sure the poster is downloaded to the local cache (in userstatic folder) and returns the path split into a list of directory and file components

movie_id
size
url
class flexget.plugins.api_tmdb.TMDBSearchResult(**kwargs)

Bases: sqlalchemy.ext.declarative.api.Base

id
movie
movie_id
search
flexget.plugins.api_tmdb.register_plugin()

api_tvdb Module

plugin_change_warn Module

class flexget.plugins.plugin_change_warn.ChangeWarn

Bases: object

Gives warning if user has deprecated / changed configuration in the root level.

Will be replaced by root level validation in the future!

Contains ugly hacks, better to include all deprecation warnings here during 1.0 BETA phase

on_task_start(task, config)
flexget.plugins.plugin_change_warn.register_plugin()

plugin_cookies Module

class flexget.plugins.plugin_cookies.PluginCookies

Adds cookie to all requests (rss, resolvers, download). Anything that uses urllib2 to be exact.

Currently supports Firefox 3 cookies only.

Example:

cookies: /path/firefox/profile/something/cookies.sqlite
cookiejars = TimedDict({})
on_task_abort(task, config)

Task exiting, remove cookiejar

on_task_exit(task, config)

Task exiting, remove cookiejar

on_task_start(task, config)

Task starting, install cookiejar

prepare_config(config)
schema = {u'oneOf': [{u'type': u'string', u'format': u'file'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'type': {u'enum': [u'firefox3', u'mozilla', u'lwp'], u'type': u'string'}, u'file': {u'type': u'string', u'format': u'file'}}}]}
sqlite2cookie(filename)
flexget.plugins.plugin_cookies.register_plugin()

plugin_deluge Module

class flexget.plugins.plugin_deluge.DelugePlugin

Bases: object

Base class for deluge plugins, contains settings and methods for connecting to a deluge daemon.

on_task_abort(task, config)
on_task_start(task, config)

Raise a DependencyError if our dependencies aren’t available

prepare_connection_info(config)
class flexget.plugins.plugin_deluge.InputDeluge

Bases: flexget.plugins.plugin_deluge.DelugePlugin

Create entries for torrents in the deluge session.

on_connect_success(result, task, config)

Creates a list of FlexGet entries from items loaded in deluge and stores them to self.entries

on_task_input(task, config)

Generates and returns a list of entries from the deluge daemon.

prepare_config(config)
schema = {u'anyOf': [{u'type': u'boolean'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'username': {u'type': u'string'}, u'config_path': {u'type': u'string', u'format': u'path'}, u'filter': {u'additionalProperties': False, u'type': u'object', u'properties': {u'state': {u'enum': [u'active', u'downloading', u'seeding', u'queued', u'paused'], u'type': u'string'}, u'label': {u'type': u'string'}}}, u'host': {u'type': u'string'}, u'password': {u'type': u'string'}, u'port': {u'type': u'integer'}}}]}
settings_map = {u'files': (u'content_files', <function <lambda> at 0x7f7a09759e60>), u'hash': u'torrent_info_hash', u'private': u'deluge_private', u'seeding_time': (u'deluge_seed_time', <function <lambda> at 0x7f7a08a8cf50>), u'num_peers': u'torrent_peers', u'move_on_completed_path': u'deluge_movedone', u'num_seeds': u'torrent_seeds', u'ratio': u'deluge_ratio', u'name': u'title', u'total_size': (u'content_size', <function <lambda> at 0x7f7a09759398>), u'label': u'deluge_label', u'state': u'deluge_state', u'eta': u'deluge_eta', u'save_path': u'deluge_path', u'progress': u'deluge_progress'}
class flexget.plugins.plugin_deluge.OutputDeluge

Bases: flexget.plugins.plugin_deluge.DelugePlugin

Add the torrents directly to deluge, supporting custom save paths.

add_to_deluge11(task, config)

Add torrents to deluge using deluge 1.1.x api.

on_connect_success(result, task, config)

Gets called when successfully connected to a daemon.

on_task_abort(task, config)

Make sure normal cleanup tasks still happen on abort.

on_task_download(task, config)

Call download plugin to generate the temp files we will load into deluge then verify they are valid torrents

on_task_exit(task, config)

Make sure all temp files are cleaned up when task exits

on_task_output(task, config)

Add torrents to deluge at exit.

on_task_start(task, config)

Detect what version of deluge is loaded.

prepare_config(config)
schema = {u'anyOf': [{u'type': u'boolean'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'automanaged': {u'type': u'boolean'}, u'maxdownspeed': {u'type': u'number'}, u'maxconnections': {u'type': u'integer'}, u'main_file_only': {u'type': u'boolean'}, u'port': {u'type': u'integer'}, u'compact': {u'type': u'boolean'}, u'keep_subs': {u'type': u'boolean'}, u'magnetization_timeout': {u'type': u'integer'}, u'ratio': {u'type': u'number'}, u'addpaused': {u'type': u'boolean'}, u'main_file_ratio': {u'type': u'number'}, u'label': {u'type': u'string'}, u'movedone': {u'type': u'string'}, u'username': {u'type': u'string'}, u'queuetotop': {u'type': u'boolean'}, u'maxupslots': {u'type': u'integer'}, u'content_filename': {u'type': u'string'}, u'host': {u'type': u'string'}, u'path': {u'type': u'string'}, u'password': {u'type': u'string'}, u'maxupspeed': {u'type': u'number'}, u'removeatratio': {u'type': u'boolean'}, u'enabled': {u'type': u'boolean'}, u'hide_sparse_files': {u'type': u'boolean'}}}]}
flexget.plugins.plugin_deluge.add_deluge_windows_install_dir_to_sys_path()
flexget.plugins.plugin_deluge.register_plugin()

plugin_entry_trace Module

class flexget.plugins.plugin_entry_trace.EntryOperations

Bases: object

Records accept, reject and fail metainfo into entries.

Creates fields:

accepted_by: <plugin name>
rejected_by: <plugin name>
failed_by: <plugin name>

reason: <given message by plugin>
on_task_input(task, config)
flexget.plugins.plugin_entry_trace.on_entry_action(entry, act=None, task=None, reason=None, **kwargs)
flexget.plugins.plugin_entry_trace.register_plugin()

plugin_formlogin Module

class flexget.plugins.plugin_formlogin.FormLogin

Bases: object

Login on form

on_task_abort(task, config)

Task exiting, remove cookiejar

on_task_exit(task, config)

Task exiting, remove cookiejar

on_task_start(task, config)
schema = {u'additionalProperties': False, u'required': [u'url', u'username', u'password'], u'type': u'object', u'properties': {u'url': {u'type': u'string', u'format': u'url'}, u'username': {u'type': u'string'}, u'password': {u'type': u'string'}, u'userfield': {u'type': u'string'}, u'passfield': {u'type': u'string'}}}
flexget.plugins.plugin_formlogin.register_plugin()

plugin_import_series Module

plugin_include Module

class flexget.plugins.plugin_include.PluginInclude

Bases: object

Include configuration from another yaml file.

Example:

include: series.yml

File content must be valid for a task configuration

on_task_start(task, config)
schema = {u'oneOf': [{u'minItems': 1, u'items': {u'type': u'string', u'title': u'single value'}, u'type': u'array', u'title': u'multiple values'}, {u'type': u'string', u'title': u'single value'}]}
flexget.plugins.plugin_include.register_plugin()

plugin_preset Module

plugin_sort_by Module

class flexget.plugins.plugin_sort_by.PluginSortBy

Bases: object

Sort task entries based on a field

Example:

sort_by: title

More complex:

sort_by:
  field: imdb_score
  reverse: yes

Reverse the order of the entries, without sorting on a field:

sort_by:
  reverse: yes
on_task_filter(task, config)
schema = {u'oneOf': [{u'type': u'string'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'field': {u'type': u'string'}, u'reverse': {u'type': u'boolean'}}}]}
flexget.plugins.plugin_sort_by.register_plugin()

plugin_spy_headers Module

class flexget.plugins.plugin_spy_headers.CustomHTTPConnection(*args, **kwargs)

Bases: httplib.HTTPConnection

putheader(header, value)
class flexget.plugins.plugin_spy_headers.HTTPCaptureHeaderHandler(debuglevel=0)

Bases: urllib2.AbstractHTTPHandler

do_open(http_class, req)
handler_order = 400
http_open(req)
http_request(request)
https_open(req)
https_request(request)
class flexget.plugins.plugin_spy_headers.PluginSpyHeaders

Bases: object

Logs all headers sent in http requests. Useful for resolving issues.

WARNING: At the moment this modifies requests somehow!

static log_requests_headers(response, **kwargs)
on_task_abort(task, config)

Task exiting, remove additions

on_task_exit(task, config)

Task exiting, remove additions

on_task_start(task, config)
schema = {u'type': u'boolean'}
flexget.plugins.plugin_spy_headers.register_plugin()

plugin_transmission Module

class flexget.plugins.plugin_transmission.PluginTransmission

Bases: flexget.plugins.plugin_transmission.TransmissionBase

Add url from entry url to transmission

Example:

transmission:
  host: localhost
  port: 9091
  netrc: /home/flexget/.tmnetrc
  username: myusername
  password: mypassword
  path: the download location

Default values for the config elements:

transmission:
  host: localhost
  port: 9091
  enabled: yes
add_to_transmission(cli, task, config)

Adds accepted entries to transmission

on_task_abort(task, config)

Make sure all temp files are cleaned up when task exits

on_task_download(task, config)

Call download plugin to generate the temp files we will load into deluge then verify they are valid torrents

on_task_exit(task, config)

Make sure all temp files are cleaned up when task exits

on_task_output(*args, **kwargs)
prepare_config(config)
schema = {u'anyOf': [{u'type': u'boolean'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'bandwidthpriority': {u'type': u'number'}, u'maxdownspeed': {u'type': u'number'}, u'maxconnections': {u'type': u'integer'}, u'main_file_only': {u'type': u'boolean'}, u'port': {u'type': u'integer'}, u'magnetization_timeout': {u'type': u'integer'}, u'ratio': {u'type': u'number'}, u'skip_files': {u'oneOf': [{u'minItems': 1, u'items': {u'type': u'string', u'title': u'single value'}, u'type': u'array', u'title': u'multiple values'}, {u'type': u'string', u'title': u'single value'}]}, u'main_file_ratio': {u'type': u'number'}, u'username': {u'type': u'string'}, u'rename_like_files': {u'type': u'boolean'}, u'addpaused': {u'type': u'boolean'}, u'content_filename': {u'type': u'string'}, u'host': {u'type': u'string'}, u'include_files': {u'oneOf': [{u'minItems': 1, u'items': {u'type': u'string', u'title': u'single value'}, u'type': u'array', u'title': u'multiple values'}, {u'type': u'string', u'title': u'single value'}]}, u'password': {u'type': u'string'}, u'include_subs': {u'type': u'boolean'}, u'maxupspeed': {u'type': u'number'}, u'enabled': {u'type': u'boolean'}, u'netrc': {u'type': u'string'}, u'honourlimits': {u'type': u'boolean'}, u'path': {u'type': u'string'}}}]}
class flexget.plugins.plugin_transmission.PluginTransmissionClean

Bases: flexget.plugins.plugin_transmission.TransmissionBase

Remove completed torrents from Transmission.

Examples:

clean_transmission: yes  # ignore both time and ratio

clean_transmission:      # uses transmission's internal limits for idle time and seed ratio ( if defined )
  transmission_seed_limits: yes

clean_transmission:      # matches time only
  finished_for: 2 hours

clean_transmission:      # matches ratio only
  min_ratio: 0.5

clean_transmission:      # matches time OR ratio
  finished_for: 2 hours
  min_ratio: 0.5

Default values for the config elements:

clean_transmission:
  host: localhost
  port: 9091
  enabled: yes
on_task_exit(task, config)
validator()

Return config validator

class flexget.plugins.plugin_transmission.PluginTransmissionInput

Bases: flexget.plugins.plugin_transmission.TransmissionBase

on_task_input(task, config)
prepare_config(config)
validator()

Return config validator

class flexget.plugins.plugin_transmission.TransmissionBase

Bases: object

check_seed_limits(torrent, session)
create_rpc_client(config)
on_task_start(*args, **kwargs)
prepare_config(config)
torrent_info(torrent, config)
flexget.plugins.plugin_transmission.register_plugin()
flexget.plugins.plugin_transmission.save_opener(f)

Transmissionrpc sets a new default opener for urllib2 We use this as a decorator to capture and restore it when needed

plugin_try_regexp Module

class flexget.plugins.plugin_try_regexp.PluginTryRegexp

Bases: object

This plugin allows user to test regexps for a task.

matches(entry, regexp)

Return True if any of the entry string fields match given regexp

on_task_filter(task, config)
flexget.plugins.plugin_try_regexp.register_parser_arguments()
flexget.plugins.plugin_try_regexp.register_plugin()

plugin_urlrewriting Module

class flexget.plugins.plugin_urlrewriting.DisableUrlRewriter

Bases: object

Disable certain urlrewriters.

on_task_abort(task, config)
on_task_exit(task, config)
on_task_start(task, config)
schema = {u'items': {u'type': u'string'}, u'type': u'array'}
class flexget.plugins.plugin_urlrewriting.PluginUrlRewriting

Bases: object

Provides URL rewriting framework

on_task_urlrewrite(task, config)
url_rewritable(task, entry)

Return True if entry is urlrewritable by registered rewriter.

url_rewrite(task, entry)

Rewrites given entry url. Raises UrlRewritingError if failed.

exception flexget.plugins.plugin_urlrewriting.UrlRewritingError(value)

Bases: exceptions.Exception

flexget.plugins.plugin_urlrewriting.register_plugin()

plugin_verbose Module

class flexget.plugins.plugin_verbose.Verbose

Bases: object

Verbose entry accept, reject and failure

on_task_exit(task, config)
on_task_metainfo(task, config)
verbose_details(entry, task=None, act=None, reason=None, **kwargs)
flexget.plugins.plugin_verbose.register_parser_arguments()
flexget.plugins.plugin_verbose.register_plugin()

plugin_verbose_details Module

class flexget.plugins.plugin_verbose_details.NoEntriesOk

Bases: object

Allows manually silencing the warning message for tasks that regularly produce no entries.

on_task_start(task, config)
schema = {u'type': u'boolean'}
class flexget.plugins.plugin_verbose_details.PluginDetails

Bases: object

on_task_download(task, config)
on_task_input(task, config)
on_task_start(task, config)
flexget.plugins.plugin_verbose_details.register_plugin()

search_kat Module

class flexget.plugins.search_kat.SearchKAT

Bases: object

KAT search plugin.

should accept: kat:

category: <category> verified: yes/no
categories:
all movies tv music books xxx other
schema = {u'additionalProperties': False, u'type': u'object', u'properties': {u'category': {u'enum': [u'all', u'movies', u'tv', u'music', u'books', u'xxx', u'other'], u'type': u'string'}, u'verified': {u'type': u'boolean'}}}
search(task, entry, config)
flexget.plugins.search_kat.register_plugin()

search_rss Module

class flexget.plugins.search_rss.SearchRSS

Bases: object

A generic search plugin that can use rss based search feeds. Configure it like rss plugin, but include {{{search_term}}} in the url where the search term should go.

schema = {u'$ref': u'/schema/plugin/rss'}
search(task, entry, config=None)
flexget.plugins.search_rss.register_plugin()

urlrewrite_bakabt Module

class flexget.plugins.urlrewrite_bakabt.UrlRewriteBakaBT

Bases: object

BakaBT urlrewriter.

parse_download_page(*args, **kwargs)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_bakabt.register_plugin()

urlrewrite_btchat Module

class flexget.plugins.urlrewrite_btchat.UrlRewriteBtChat

Bases: object

BtChat urlrewriter.

url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_btchat.register_plugin()

urlrewrite_btjunkie Module

class flexget.plugins.urlrewrite_btjunkie.UrlRewriteBtJunkie

Bases: object

BtJunkie urlrewriter.

url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_btjunkie.register_plugin()

urlrewrite_deadfrog Module

class flexget.plugins.urlrewrite_deadfrog.UrlRewriteDeadFrog

Bases: object

DeadFrog urlrewriter.

parse_download_page(*args, **kwargs)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_deadfrog.register_plugin()

urlrewrite_extratorrent Module

class flexget.plugins.urlrewrite_extratorrent.UrlRewriteExtraTorrent

Bases: object

ExtraTorrent search plugin.

should accept: kat:

category: <category>
categories:
all music anime adult movies tv
schema = {'additionalProperties': False, 'type': 'object', 'properties': {'category': {'enum': ['all', 'music', 'anime', 'adult', 'movies', 'tv'], 'type': 'string'}}}
search(task, entry, config=None)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_extratorrent.register_plugin()

urlrewrite_google_cse Module

class flexget.plugins.urlrewrite_google_cse.UrlRewriteGoogle

Bases: object

url_rewritable(task, entry)
url_rewrite(task, entry)
class flexget.plugins.urlrewrite_google_cse.UrlRewriteGoogleCse

Bases: object

Google custom query urlrewriter.

url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_google_cse.register_plugin()

urlrewrite_isohunt Module

class flexget.plugins.urlrewrite_isohunt.UrlRewriteIsoHunt

Bases: object

IsoHunt urlrewriter and search plugin.

should accept: isohunt: <category>

categories: empty or -1: All 0 : Misc. 1 : Video/Movies 2 : Audio 3 : TV 4 : Games 5 : Apps 6 : Pics 7 : Anime 8 : Comics 9 : Books 10: Music Video 11: Unclassified 12: ALL
schema = {u'enum': [u'misc', u'movies', u'audio', u'tv', u'games', u'apps', u'pics', u'anime', u'comics', u'books', u'music video', u'unclassified', u'all'], u'type': u'string'}
search(task, entry, config)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_isohunt.register_plugin()

urlrewrite_newtorrents Module

class flexget.plugins.urlrewrite_newtorrents.NewTorrents

NewTorrents urlrewriter and search plugin.

search(task, entry, config=None)
url_from_page(*args, **kwargs)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_newtorrents.register_plugin()

urlrewrite_newzleech Module

class flexget.plugins.urlrewrite_newzleech.UrlRewriteNewzleech

Bases: object

UrlRewriter or search by using newzleech.com TODO: implement basic url rewriting

search(*args, **kwargs)
flexget.plugins.urlrewrite_newzleech.register_plugin()

urlrewrite_nyaa Module

class flexget.plugins.urlrewrite_nyaa.UrlRewriteNyaa

Bases: object

Nyaa urlrewriter and search plugin.

search(task, entry, config)
url_rewritable(task, entry)
url_rewrite(task, entry)
validator()
flexget.plugins.urlrewrite_nyaa.register_plugin()

urlrewrite_piratebay Module

class flexget.plugins.urlrewrite_piratebay.UrlRewritePirateBay

Bases: object

PirateBay urlrewriter.

parse_download_page(*args, **kwargs)
schema = {u'oneOf': [{u'type': u'boolean'}, {u'additionalProperties': False, u'type': u'object', u'properties': {u'category': {u'oneOf': [{u'enum': [u'movies', u'all', u'highres movies', u'music', u'tv', u'video', u'audio', u'highres tv', u'comics'], u'type': u'string'}, {u'type': u'integer'}]}, u'sort_reverse': {u'type': u'boolean'}, u'sort_by': {u'enum': [u'default', u'date', u'seeds', u'leechers', u'size'], u'type': u'string'}}}]}
search(*args, **kwargs)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_piratebay.register_plugin()

urlrewrite_redskunk Module

class flexget.plugins.urlrewrite_redskunk.UrlRewriteRedskunk

Bases: object

Redskunk urlrewriter.

url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_redskunk.register_plugin()

urlrewrite_stmusic Module

class flexget.plugins.urlrewrite_stmusic.UrlRewriteSTMusic

Bases: object

STMusic urlrewriter.

url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_stmusic.register_plugin()

urlrewrite_torrentz Module

class flexget.plugins.urlrewrite_torrentz.UrlRewriteTorrentz

Bases: object

Torrentz urlrewriter.

process_config(config)

Return plugin configuration in advanced form

schema = {u'oneOf': [{u'additionalProperties': False, u'type': u'object', u'properties': {u'extra_terms': {u'type': u'string'}, u'reputation': {u'default': u'good', u'enum': [u'good', u'verified', u'any', u'low']}}, u'title': u'specify options'}, {u'default': u'good', u'enum': [u'good', u'verified', u'any', u'low'], u'title': u'specify reputation'}]}
search(task, entry, config=None)
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_torrentz.register_plugin()

urlrewrite_urlrewrite Module

class flexget.plugins.urlrewrite_urlrewrite.UrlRewrite

Bases: object

Generic configurable urlrewriter.

Example:

urlrewrite:
  demonoid:
    regexp: http://www\.demonoid\.com/files/details/
    format: http://www.demonoid.com/files/download/HTTP/
on_task_start(task, config)
resolves = {}
schema = {u'additionalProperties': {u'additionalProperties': False, u'required': [u'regexp', u'format'], u'type': u'object', u'properties': {u'regexp': {u'type': u'string', u'format': u'regex'}, u'format': {u'type': u'string'}}}, u'type': u'object'}
url_rewritable(task, entry)
url_rewrite(task, entry)
flexget.plugins.urlrewrite_urlrewrite.register_plugin()

Subpackages