flexget 3.22.1__tar.gz → 3.22.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flexget-3.22.1 → flexget-3.22.2}/PKG-INFO +1 -1
- {flexget-3.22.1 → flexget-3.22.2}/flexget/_version.py +1 -1
- flexget-3.22.2/flexget/components/floppy/floppy_list.py +532 -0
- flexget-3.22.2/flexget/utils/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/pyproject.toml +1 -1
- {flexget-3.22.1 → flexget-3.22.2}/.gitignore +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/LICENSE +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/README.rst +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/app.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/authentication.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/cached.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/database.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/format_checker.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/plugins.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/schema.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/server.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/tasks.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/user.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/templates/api_response.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/api/templates/swagger-ui.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/README.md +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/archive.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/archives.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/decompress.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/utils.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/backlog.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/convert_magnet.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/magnet_info_hash.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/private_torrents.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_alive.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_files.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_match.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_scrub.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_size.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/trackers.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/api_emby.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_lookup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_refresh.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_util.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/from_emby.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimate_release.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_movies_bluray.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_released_movies.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_series_tvmaze.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/retry_failed.py +0 -0
- {flexget-3.22.1/flexget/components/ftp → flexget-3.22.2/flexget/components/floppy}/__init__.py +0 -0
- {flexget-3.22.1/flexget/components/history → flexget-3.22.2/flexget/components/ftp}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/ftp_download.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/ftp_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/sftp.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/sftp_client.py +0 -0
- {flexget-3.22.1/flexget/components/imdb → flexget-3.22.2/flexget/components/history}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/history.py +0 -0
- {flexget-3.22.1/flexget/components/irc → flexget-3.22.2/flexget/components/imdb}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/from_imdb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_lookup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_url.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_watchlist.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/utils.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/waf.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists → flexget-3.22.2/flexget/components/irc}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/irc.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists/lists → flexget-3.22.2/flexget/components/managed_lists}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_add.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_clear.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_match.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_remove.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists/lists/entry_list → flexget-3.22.2/flexget/components/managed_lists/lists}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/couchpotato_list.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists/lists/movie_list → flexget-3.22.2/flexget/components/managed_lists/lists/entry_list}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/entry_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/imdb_list.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists/lists/pending_list → flexget-3.22.2/flexget/components/managed_lists/lists/movie_list}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/movie_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/ombi_list.py +0 -0
- {flexget-3.22.1/flexget/components/managed_lists/lists/regexp_list → flexget-3.22.2/flexget/components/managed_lists/lists/pending_list}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/pending_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/plex_watchlist.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/radarr_list.py +0 -0
- {flexget-3.22.1/flexget/components/notify → flexget-3.22.2/flexget/components/managed_lists/lists/regexp_list}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/regexp_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/scrob_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/sonarr_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/subtitle_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/thetvdb_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/yaml_list.py +0 -0
- {flexget-3.22.1/flexget/components/notify/notifiers → flexget-3.22.2/flexget/components/notify}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notification_framework.py +0 -0
- {flexget-3.22.1/flexget/components/parsing → flexget-3.22.2/flexget/components/notify/notifiers}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/bark.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/cronitor.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/discord.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/email.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/gotify.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/ifttt.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/join.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/matrix.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/microsoftteams.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/mqtt.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/notifymyandroid.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/ntfysh.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/prowl.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushalot.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushbullet.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushover.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushsafer.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/rapidpush.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/slack.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/sms_ru.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/telegram.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/toast.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/xmpp.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notify.py +0 -0
- {flexget-3.22.1/flexget/components/parsing/parsers → flexget-3.22.2/flexget/components/parsing}/__init__.py +0 -0
- {flexget-3.22.1/flexget/components/pending_approval → flexget-3.22.2/flexget/components/parsing/parsers}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_common.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_guessit.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_internal.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/plugin_parsing.py +0 -0
- {flexget-3.22.1/flexget/components/rejected → flexget-3.22.2/flexget/components/pending_approval}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/pending_approval.py +0 -0
- {flexget-3.22.1/flexget/components/scheduler → flexget-3.22.2/flexget/components/rejected}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/remember_rejected.py +0 -0
- {flexget-3.22.1/flexget/components/seen → flexget-3.22.2/flexget/components/scheduler}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/scheduler/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/scheduler/scheduler.py +0 -0
- {flexget-3.22.1/flexget/components/series → flexget-3.22.2/flexget/components/seen}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen_info_hash.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen_movies.py +0 -0
- {flexget-3.22.1/flexget/components/sites → flexget-3.22.2/flexget/components/series}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/all_series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/configure_series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/gen_series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/internal_estimator.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/metainfo_series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/next_series_episodes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/next_series_seasons.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_begin.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_premiere.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_remove.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/utils.py +0 -0
- {flexget-3.22.1/flexget/components/sites → flexget-3.22.2/flexget/components}/sites/__init__.py +0 -0
- {flexget-3.22.1/flexget/components/status → flexget-3.22.2/flexget/components/sites/sites}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/allyoulike.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/alpharatio.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/anirena.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/argenteam.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/awesomehd.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/bakabt.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/btn.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/cinemageddon.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/cpasbien.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/ettv.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/eztv.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/filelist_api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/google_cse.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/hebits.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/horriblesubs.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/iptorrents.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/koreus.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/limetorrents.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/lostfilm.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/morethantv.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/ncore.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/newznab.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/nyaa.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/passthepopcorn.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/piratebay.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/redirect.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rlsbb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rss.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rutracker.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/serienjunkies.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/shortened.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/site_1337x.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/site_rutracker.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/solidtorrents.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrent_cache.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentday.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentleech.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentz.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/uindex.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/wordpress.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/yts.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewrite.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewrite_search.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewriting.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/utils.py +0 -0
- {flexget-3.22.1/flexget/components/thetvdb → flexget-3.22.2/flexget/components/status}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/status.py +0 -0
- {flexget-3.22.1/flexget/components/tmdb → flexget-3.22.2/flexget/components/thetvdb}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/api_tvdb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/thetvdb_lookup.py +0 -0
- {flexget-3.22.1/flexget/components/trakt → flexget-3.22.2/flexget/components/tmdb}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/api_tmdb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/tmdb_lookup.py +0 -0
- {flexget-3.22.1/flexget/components/tvmaze → flexget-3.22.2/flexget/components/trakt}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/api_trakt.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/cli.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/db.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/next_trakt_episodes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_calendar.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_lookup.py +0 -0
- {flexget-3.22.1/flexget/components/variables → flexget-3.22.2/flexget/components/tvmaze}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/api_tvmaze.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/tvmaze_lookup.py +0 -0
- {flexget-3.22.1/flexget/plugins/clients → flexget-3.22.2/flexget/components/variables}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/variables/api.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/components/variables/variables.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/config_schema.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/db_schema.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/entry.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/event.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ipc.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/log.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/manager.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/options.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugin.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/README.md +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/check.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/cli_config.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/database.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/debug_info.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/doc.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/explain_sql.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/filters.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/inject.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/perf_tests.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/performance.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/plugins.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/templates.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/try_regexp.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/web.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/wiki_qualities.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/win32_service.py +0 -0
- {flexget-3.22.1/flexget/ui → flexget-3.22.2/flexget/plugins/clients}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/aria2.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/deluge.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/nzbget.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/pyload.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/qbittorrent.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/rtorrent.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/transmission.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/daemon/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/daemon/web_server.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/abort_if_exists.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/accept_all.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/age.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/best_quality.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/content_filter.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/content_size.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/crossmatch.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/delay.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/duplicates.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists_movie.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists_series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/if_condition.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/limit_new.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/magnets.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/only_new.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/proper_movies.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/quality.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/regexp.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/require_field.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/rottentomatoes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/thetvdb.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/timeframe.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/unique.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/upgrade.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/cron_env.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/db_analyze.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/db_vacuum.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/log_start.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/urlfix.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/welcome.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/anidb_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/anilist.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/apple_trailers.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/betaseries_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/discover.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/filesystem.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/filmweb_watchlist.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_piratebay.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_task.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_telegram.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/gazelle.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/generate.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/html.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/input_csv.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/inputs.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/json.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/kitsu.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/letterboxd.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/limit.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/medusa.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/mock.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/my_anime_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/myepisodes_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/next_sonarr_episodes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/npo_watchlist.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/parameterize.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/plex.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/pogcal.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/regexp_parse.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rlslog.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rottentomatoes_list.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rss.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/sceper.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/sickbeard.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/tail.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/text.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/torznab.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/twitterfeed.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/api_bluray.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/api_rottentomatoes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/change_warn.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/assume_quality.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/bluray_lookup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/check_subtitles.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/content_size.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/media_id.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/metainfo_movie.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/nfo_lookup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/nzb_size.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/quality.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/rottentomatoes_lookup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/task.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/extension.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/headers.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/manipulate.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/path_by_ext.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/path_by_space.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/plugin_priority.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/regex_extract.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/reorder_quality.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/set_field.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/sort_by.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/sort_by_weight.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/abort.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/cookies.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/debug_db_sessions.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/debug_warnings.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/digest.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/disable.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/disable_phases.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/domain_delay.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/entry_trace.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/formlogin.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/free_space.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/include.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/interval.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/log_filter.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/manual.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/max_reruns.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/pathscrub.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/priority.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/proxy.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/rerun.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/run_task.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/sequence.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/sleep.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/spy_headers.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/template.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verbose.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verbose_details.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verify_ssl_certificates.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/version_checker.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/download.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/download_auth.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/dump.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/dump_config.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/exec.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/file_operations.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/html.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/memusage.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/mock_output.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/rss.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/rtorrent_magnet.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/sabnzbd.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/sns.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles_periscope.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles_subliminal.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/symlink.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/utorrent.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/kodi_library.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/myepisodes.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/pogcal_acquired.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/resources/flexget.png +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/task.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/task_queue.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/entry/default.template +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/default.template +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/html.template +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/rss.template +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/terminal.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/tray_icon.py +0 -0
- {flexget-3.22.1/flexget/utils → flexget-3.22.2/flexget/ui}/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/.eslintignore +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/.eslintrc +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/README.rst +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/bower.json +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/build.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/inject.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/lint.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/proxy.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/scripts.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/server.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/styles.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/test.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/watch.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulpfile.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/karma.conf.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/load.failure.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/package.json +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/specs.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.loading.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.utils.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/assets/icons/ic_movie_black_24px.svg +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/assets/images/header.png +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/_error-dialog.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/_pagination.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.filter.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.provider.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.provider.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/_login.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.config.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/components.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.provider.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/_database.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/_sidenav.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.semver.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.provider.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/user/user.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/construction.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/directives/directives.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/directives/palette-background/palette-background.directive.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/favicon.ico +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/layout.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.filter.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.filter.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.tmpl.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.tmpl.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-input.directive.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.controller.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.tmpl.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/plugins.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-begin-dialog/series-begin-dialog.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-begin-dialog/series-begin-dialog.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.component.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.route.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.service.spec.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/loading-dialog.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/loading-dialog.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.component.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.module.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.route.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.tmpl.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.tmpl.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_header.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_loading-bar.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_variables.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/flexget.scss +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/services/schema.service.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/config.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/execute.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/history.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/movie_list.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/registerPlugin.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/schedules.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/seen.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/series.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/states.js +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/README.rst +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/index.html +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/bittorrent.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/cache.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/cached_input.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/database.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/json.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/lazy_dict.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/log.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/generic.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/movie.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/parser.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/series.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/pathscrub.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/qualities.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/requests.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/serialization.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/simple_persistence.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/soup.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/sqlalchemy_utils.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/template.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/tools.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/README.md +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/__init__.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/aws.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/crypto.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/fingerprint.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/verify.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/webgl.json +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/flexget/webserver.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/scripts/build_locked_extras.py +0 -0
- {flexget-3.22.1 → flexget-3.22.2}/scripts/bundle_webui.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: flexget
|
|
3
|
-
Version: 3.22.
|
|
3
|
+
Version: 3.22.2
|
|
4
4
|
Summary: FlexGet is a program aimed to automate downloading or processing content (torrents, podcasts, etc.) from different sources like RSS-feeds, html-pages, various sites and more.
|
|
5
5
|
Project-URL: Issue Tracker, https://github.com/Flexget/Flexget/issues
|
|
6
6
|
Project-URL: Forum, https://github.com/Flexget/Flexget/discussions
|
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
from collections.abc import MutableSet
|
|
2
|
+
|
|
3
|
+
from loguru import logger
|
|
4
|
+
|
|
5
|
+
from flexget import plugin
|
|
6
|
+
from flexget.components.tmdb.api_tmdb import tmdb_request
|
|
7
|
+
from flexget.entry import Entry
|
|
8
|
+
from flexget.event import event
|
|
9
|
+
from flexget.utils.cached_input import cached
|
|
10
|
+
from flexget.utils.requests import RequestException, Session
|
|
11
|
+
from flexget.utils.tools import split_title_year
|
|
12
|
+
|
|
13
|
+
logger = logger.bind(name='floppy_list')
|
|
14
|
+
|
|
15
|
+
# Floppy media types -> the kind of entry they become
|
|
16
|
+
KINDS = {'movie': 'movie', 'tv': 'show', 'anime': 'show', 'season': 'season', 'episode': 'episode'}
|
|
17
|
+
TYPE_KINDS = {'movies': 'movie', 'shows': 'show', 'seasons': 'season', 'episodes': 'episode'}
|
|
18
|
+
# Floppy addresses movies and shows by tmdb id only. Remember the ids resolved from tvdb/imdb.
|
|
19
|
+
_tmdb_id_cache = {}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def search_tmdb_id(entry, kind):
|
|
23
|
+
"""Return the tmdb id of the movie or show an entry names, or None."""
|
|
24
|
+
if kind == 'movie':
|
|
25
|
+
name, year = entry.get('movie_name'), entry.get('movie_year')
|
|
26
|
+
endpoint, year_param, title_keys = 'search/movie', 'year', ['title', 'original_title']
|
|
27
|
+
else:
|
|
28
|
+
name, year = split_title_year(entry.get('series_name') or '')
|
|
29
|
+
endpoint, year_param = 'search/tv', 'first_air_date_year'
|
|
30
|
+
title_keys = ['name', 'original_name']
|
|
31
|
+
if not name:
|
|
32
|
+
return None
|
|
33
|
+
cache_key = (endpoint, name.lower(), year)
|
|
34
|
+
if cache_key not in _tmdb_id_cache:
|
|
35
|
+
params = {'query': name}
|
|
36
|
+
if year:
|
|
37
|
+
params[year_param] = year
|
|
38
|
+
try:
|
|
39
|
+
results = tmdb_request(endpoint, **params).get('results') or []
|
|
40
|
+
except RequestException as e:
|
|
41
|
+
logger.warning('Error searching for {} on tmdb: {}', name, e)
|
|
42
|
+
return None
|
|
43
|
+
# tmdb sorts by relevance, but prefer a result with exactly the name asked for
|
|
44
|
+
exact = [
|
|
45
|
+
result
|
|
46
|
+
for result in results
|
|
47
|
+
if name.lower() in [(result.get(key) or '').lower() for key in title_keys]
|
|
48
|
+
]
|
|
49
|
+
found = (exact or results or [None])[0]
|
|
50
|
+
if found:
|
|
51
|
+
logger.verbose(
|
|
52
|
+
'Found tmdb id {} for `{}` by searching for its name', found['id'], name
|
|
53
|
+
)
|
|
54
|
+
_tmdb_id_cache[cache_key] = found['id'] if found else None
|
|
55
|
+
return _tmdb_id_cache[cache_key]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def find_tmdb_id(entry, kind):
|
|
59
|
+
"""Return the tmdb id of the movie or show an entry is about, or None.
|
|
60
|
+
|
|
61
|
+
Ids already on the entry are preferred, then ids from lazy lookups, then a search by name.
|
|
62
|
+
|
|
63
|
+
:param entry: The entry to find the id for.
|
|
64
|
+
:param kind: ``movie`` or ``show``. For a season or episode, the id of its show is returned.
|
|
65
|
+
"""
|
|
66
|
+
results_key = 'movie_results' if kind == 'movie' else 'tv_results'
|
|
67
|
+
if entry.get('tmdb_id', eval_lazy=False):
|
|
68
|
+
return entry['tmdb_id']
|
|
69
|
+
# On a series entry a lazy tmdb_id or imdb_id may come from a movie lookup, and tmdb cannot
|
|
70
|
+
# look a movie up by tvdb id
|
|
71
|
+
fields = [('imdb_id', True)] if kind == 'movie' else [('tvdb_id', True), ('imdb_id', False)]
|
|
72
|
+
for field, lazy in fields:
|
|
73
|
+
external_id = entry.get(field, eval_lazy=lazy)
|
|
74
|
+
if not external_id:
|
|
75
|
+
continue
|
|
76
|
+
cache_key = (results_key, field, external_id)
|
|
77
|
+
if cache_key not in _tmdb_id_cache:
|
|
78
|
+
try:
|
|
79
|
+
result = tmdb_request(f'find/{external_id}', external_source=field)
|
|
80
|
+
except RequestException as e:
|
|
81
|
+
logger.warning('Error looking up {} {} on tmdb: {}', field, external_id, e)
|
|
82
|
+
continue
|
|
83
|
+
found = result.get(results_key) or []
|
|
84
|
+
_tmdb_id_cache[cache_key] = found[0]['id'] if found else None
|
|
85
|
+
if _tmdb_id_cache[cache_key]:
|
|
86
|
+
return _tmdb_id_cache[cache_key]
|
|
87
|
+
if kind == 'movie' and entry.get('tmdb_id'):
|
|
88
|
+
return entry['tmdb_id']
|
|
89
|
+
return search_tmdb_id(entry, kind)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def as_int(value):
|
|
93
|
+
try:
|
|
94
|
+
return int(value)
|
|
95
|
+
except (TypeError, ValueError):
|
|
96
|
+
return value
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class FloppySet(MutableSet):
|
|
100
|
+
"""A list or the collection of a Floppy server, as a set of entries.
|
|
101
|
+
|
|
102
|
+
Floppy lists hold movies, shows and seasons. The ``collection`` list is the media the user
|
|
103
|
+
owns, and holds movies and episodes. Floppy identifies all of them by tmdb id, so an entry
|
|
104
|
+
needs a ``tmdb_id``, or a ``tvdb_id`` or ``imdb_id`` it can be resolved from, to be submitted.
|
|
105
|
+
|
|
106
|
+
:param config: The ``floppy_list`` plugin configuration, see :class:`FloppyList`.
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
schema = {
|
|
110
|
+
'type': 'object',
|
|
111
|
+
'properties': {
|
|
112
|
+
'base_url': {'type': 'string', 'format': 'url'},
|
|
113
|
+
'api_key': {'type': 'string'},
|
|
114
|
+
'list': {'type': 'string'},
|
|
115
|
+
'type': {
|
|
116
|
+
'type': 'string',
|
|
117
|
+
'enum': ['shows', 'seasons', 'episodes', 'movies', 'auto'],
|
|
118
|
+
'default': 'auto',
|
|
119
|
+
},
|
|
120
|
+
'strip_dates': {'type': 'boolean', 'default': False},
|
|
121
|
+
},
|
|
122
|
+
'required': ['base_url', 'api_key', 'list'],
|
|
123
|
+
'additionalProperties': False,
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def immutable(self):
|
|
128
|
+
return None
|
|
129
|
+
|
|
130
|
+
def __init__(self, config):
|
|
131
|
+
self.config = config
|
|
132
|
+
self.config.setdefault('type', 'auto')
|
|
133
|
+
self.base_url = self.config['base_url'].rstrip('/')
|
|
134
|
+
self.session = Session()
|
|
135
|
+
self.session.headers.update({'Authorization': 'Bearer {}'.format(self.config['api_key'])})
|
|
136
|
+
self._cached_items = None
|
|
137
|
+
self._list_id = None
|
|
138
|
+
|
|
139
|
+
@property
|
|
140
|
+
def is_collection(self):
|
|
141
|
+
return self.config['list'].lower() == 'collection'
|
|
142
|
+
|
|
143
|
+
def __iter__(self):
|
|
144
|
+
return iter(self.items)
|
|
145
|
+
|
|
146
|
+
def __len__(self):
|
|
147
|
+
return len(self.items)
|
|
148
|
+
|
|
149
|
+
def add(self, entry):
|
|
150
|
+
self.submit([entry])
|
|
151
|
+
|
|
152
|
+
def __ior__(self, entries):
|
|
153
|
+
# Optimization to submit multiple entries at same time
|
|
154
|
+
self.submit(entries)
|
|
155
|
+
return self
|
|
156
|
+
|
|
157
|
+
def discard(self, entry):
|
|
158
|
+
self.submit([entry], remove=True)
|
|
159
|
+
|
|
160
|
+
def __isub__(self, entries):
|
|
161
|
+
# Optimization to submit multiple entries at same time
|
|
162
|
+
self.submit(entries, remove=True)
|
|
163
|
+
return self
|
|
164
|
+
|
|
165
|
+
def _find_entry(self, entry):
|
|
166
|
+
for item in self.items:
|
|
167
|
+
# An item only matches as what it is: an episode in the list must not match every
|
|
168
|
+
# episode of its season, but a show or season in the list matches all its episodes.
|
|
169
|
+
if item.get('series_episode') is not None:
|
|
170
|
+
match = self.episode_match
|
|
171
|
+
elif item.get('series_season') is not None:
|
|
172
|
+
match = self.season_match
|
|
173
|
+
elif item.get('series_name'):
|
|
174
|
+
match = self.show_match
|
|
175
|
+
else:
|
|
176
|
+
match = self.movie_match
|
|
177
|
+
if match(entry, item):
|
|
178
|
+
return item
|
|
179
|
+
return None
|
|
180
|
+
|
|
181
|
+
def __contains__(self, entry):
|
|
182
|
+
return self._find_entry(entry) is not None
|
|
183
|
+
|
|
184
|
+
def clear(self):
|
|
185
|
+
if self.items:
|
|
186
|
+
self.submit(list(self.items), remove=True)
|
|
187
|
+
self._cached_items = None
|
|
188
|
+
|
|
189
|
+
def get(self, entry):
|
|
190
|
+
return self._find_entry(entry)
|
|
191
|
+
|
|
192
|
+
# -- Public interface ends here -- #
|
|
193
|
+
|
|
194
|
+
def request(self, method, endpoint, **kwargs):
|
|
195
|
+
url = '{}/api/v1/{}/'.format(self.base_url, '/'.join(str(part) for part in endpoint))
|
|
196
|
+
return self.session.request(method, url, raise_status=False, **kwargs)
|
|
197
|
+
|
|
198
|
+
def get_pages(self, endpoint):
|
|
199
|
+
"""Iterate over the results of a paginated floppy endpoint."""
|
|
200
|
+
offset = 0
|
|
201
|
+
while True:
|
|
202
|
+
result = self.request('get', endpoint, params={'limit': 200, 'offset': offset})
|
|
203
|
+
if result.status_code == 404:
|
|
204
|
+
raise plugin.PluginError(
|
|
205
|
+
'List does not appear to exist on floppy: {}'.format(self.config['list'])
|
|
206
|
+
)
|
|
207
|
+
if result.status_code in [401, 403]:
|
|
208
|
+
raise plugin.PluginError(
|
|
209
|
+
'Authentication error: check the floppy `api_key` and its permissions.'
|
|
210
|
+
)
|
|
211
|
+
if result.status_code != 200:
|
|
212
|
+
raise plugin.PluginError(f'Error getting data from floppy: {result.text}')
|
|
213
|
+
try:
|
|
214
|
+
data = result.json()
|
|
215
|
+
except ValueError:
|
|
216
|
+
logger.debug('Could not decode json from response: {}', result.text)
|
|
217
|
+
raise plugin.PluginError('Error getting list from floppy.')
|
|
218
|
+
yield from data['results']
|
|
219
|
+
if not data['pagination'].get('next'):
|
|
220
|
+
return
|
|
221
|
+
offset += data['pagination']['limit']
|
|
222
|
+
|
|
223
|
+
@property
|
|
224
|
+
def list_id(self):
|
|
225
|
+
if self._list_id is None:
|
|
226
|
+
for floppy_list in self.get_pages(('lists',)):
|
|
227
|
+
if floppy_list['name'].lower() == self.config['list'].lower():
|
|
228
|
+
self._list_id = floppy_list['id']
|
|
229
|
+
break
|
|
230
|
+
else:
|
|
231
|
+
raise plugin.PluginError(
|
|
232
|
+
'List does not appear to exist on floppy: {}'.format(self.config['list'])
|
|
233
|
+
)
|
|
234
|
+
return self._list_id
|
|
235
|
+
|
|
236
|
+
def get_list_endpoint(self):
|
|
237
|
+
if self.is_collection:
|
|
238
|
+
return ('collection',)
|
|
239
|
+
return ('lists', self.list_id, 'items')
|
|
240
|
+
|
|
241
|
+
def get_items(self):
|
|
242
|
+
"""Iterate over retrieved items from the floppy api."""
|
|
243
|
+
logger.verbose('Retrieving `{}` list `{}`', self.config['type'], self.config['list'])
|
|
244
|
+
try:
|
|
245
|
+
items = [row['item'] for row in self.get_pages(self.get_list_endpoint())]
|
|
246
|
+
except RequestException as e:
|
|
247
|
+
raise plugin.PluginError(f'Could not retrieve list from floppy ({e})')
|
|
248
|
+
|
|
249
|
+
# Seasons and episodes only carry the id of their show, so take its name from the list.
|
|
250
|
+
show_titles = {
|
|
251
|
+
(item['source'], item['media_id']): self.generate_title(item)
|
|
252
|
+
for item in items
|
|
253
|
+
if KINDS.get(item['media_type']) == 'show'
|
|
254
|
+
}
|
|
255
|
+
for item in items:
|
|
256
|
+
kind = KINDS.get(item['media_type'])
|
|
257
|
+
if kind is None:
|
|
258
|
+
logger.debug('Skipping {} because it is a {}', item['title'], item['media_type'])
|
|
259
|
+
continue
|
|
260
|
+
if self.config['type'] != 'auto' and TYPE_KINDS[self.config['type']] != kind:
|
|
261
|
+
logger.debug('Skipping {} because it is not a {}', item['title'], kind)
|
|
262
|
+
continue
|
|
263
|
+
if not item['title']:
|
|
264
|
+
logger.warning('Item in floppy list does not appear to have a title, skipping.')
|
|
265
|
+
continue
|
|
266
|
+
yield self.entry_from_item(item, kind, show_titles)
|
|
267
|
+
|
|
268
|
+
def generate_title(self, item):
|
|
269
|
+
year = (item.get('release_datetime') or '')[:4]
|
|
270
|
+
if year and not self.config.get('strip_dates'):
|
|
271
|
+
return '{} ({})'.format(item['title'], year)
|
|
272
|
+
return item['title']
|
|
273
|
+
|
|
274
|
+
def entry_from_item(self, item, kind, show_titles):
|
|
275
|
+
entry = Entry()
|
|
276
|
+
url = '{}{}'.format(
|
|
277
|
+
self.base_url,
|
|
278
|
+
item.get('url')
|
|
279
|
+
or '/details/{}/{}/{}'.format(item['source'], item['media_type'], item['media_id']),
|
|
280
|
+
)
|
|
281
|
+
# Seasons and episodes share the page of their show, but every entry needs its own url
|
|
282
|
+
if kind == 'season':
|
|
283
|
+
url += '#S{:02d}'.format(item['season_number'])
|
|
284
|
+
elif kind == 'episode':
|
|
285
|
+
url += '#S{:02d}E{:02d}'.format(item['season_number'], item['episode_number'])
|
|
286
|
+
entry['url'] = url
|
|
287
|
+
ids = dict(item.get('ids') or {})
|
|
288
|
+
if item['source'] in ['tmdb', 'tvdb']:
|
|
289
|
+
ids[item['source']] = item['media_id']
|
|
290
|
+
if kind in ['season', 'episode']:
|
|
291
|
+
# The other ids of a season or episode item are not the show's
|
|
292
|
+
ids = {'tmdb': ids.get('tmdb')} if item['source'] == 'tmdb' else {}
|
|
293
|
+
for name, value in ids.items():
|
|
294
|
+
if value:
|
|
295
|
+
entry[f'{name}_id'] = as_int(value)
|
|
296
|
+
|
|
297
|
+
if kind == 'movie':
|
|
298
|
+
entry['title'] = self.generate_title(item)
|
|
299
|
+
entry['movie_name'] = item['title']
|
|
300
|
+
year = (item.get('release_datetime') or '')[:4]
|
|
301
|
+
if year:
|
|
302
|
+
entry['movie_year'] = int(year)
|
|
303
|
+
return entry
|
|
304
|
+
|
|
305
|
+
if kind == 'show':
|
|
306
|
+
entry['title'] = entry['series_name'] = self.generate_title(item)
|
|
307
|
+
return entry
|
|
308
|
+
|
|
309
|
+
series_name = show_titles.get((item['source'], item['media_id']), item['title'])
|
|
310
|
+
entry['series_name'] = series_name
|
|
311
|
+
entry['series_season'] = item['season_number']
|
|
312
|
+
if kind == 'season':
|
|
313
|
+
entry['title'] = '{} S{:02d}'.format(series_name, item['season_number'])
|
|
314
|
+
return entry
|
|
315
|
+
|
|
316
|
+
entry['series_episode'] = item['episode_number']
|
|
317
|
+
entry['series_id'] = 'S{:02d}E{:02d}'.format(item['season_number'], item['episode_number'])
|
|
318
|
+
entry['title'] = '{} {}'.format(series_name, entry['series_id'])
|
|
319
|
+
return entry
|
|
320
|
+
|
|
321
|
+
@property
|
|
322
|
+
def items(self):
|
|
323
|
+
if self._cached_items is None:
|
|
324
|
+
self._cached_items = list(self.get_items())
|
|
325
|
+
return self._cached_items
|
|
326
|
+
|
|
327
|
+
def invalidate_cache(self):
|
|
328
|
+
self._cached_items = None
|
|
329
|
+
|
|
330
|
+
def show_match(self, entry1, entry2):
|
|
331
|
+
if not entry1.get('series_name'):
|
|
332
|
+
return False
|
|
333
|
+
if any(
|
|
334
|
+
entry1.get(ident) is not None and entry1[ident] == entry2.get(ident)
|
|
335
|
+
for ident in ['tmdb_id', 'tvdb_id', 'imdb_id']
|
|
336
|
+
):
|
|
337
|
+
return True
|
|
338
|
+
if not (entry1.get('series_name') and entry2.get('series_name')):
|
|
339
|
+
return False
|
|
340
|
+
# Floppy only knows the year of a show when the show itself is in the list
|
|
341
|
+
name1, year1 = split_title_year(entry1['series_name'])
|
|
342
|
+
name2, year2 = split_title_year(entry2['series_name'])
|
|
343
|
+
return name1.lower() == name2.lower() and (not year1 or not year2 or year1 == year2)
|
|
344
|
+
|
|
345
|
+
def season_match(self, entry1, entry2):
|
|
346
|
+
return (
|
|
347
|
+
self.show_match(entry1, entry2)
|
|
348
|
+
and entry1.get('series_season') is not None
|
|
349
|
+
and entry1['series_season'] == entry2.get('series_season')
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
def episode_match(self, entry1, entry2):
|
|
353
|
+
return (
|
|
354
|
+
self.season_match(entry1, entry2)
|
|
355
|
+
and entry1.get('series_episode') is not None
|
|
356
|
+
and entry1['series_episode'] == entry2.get('series_episode')
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
def movie_match(self, entry1, entry2):
|
|
360
|
+
# tmdb ids of movies and shows overlap, so an id alone does not tell them apart
|
|
361
|
+
if entry1.get('series_name') or entry2.get('series_name'):
|
|
362
|
+
return False
|
|
363
|
+
if any(
|
|
364
|
+
entry1.get(id) is not None and entry1[id] == entry2.get(id)
|
|
365
|
+
for id in ['imdb_id', 'tmdb_id']
|
|
366
|
+
):
|
|
367
|
+
return True
|
|
368
|
+
return bool(
|
|
369
|
+
entry1.get('movie_name')
|
|
370
|
+
and (entry1.get('movie_name'), entry1.get('movie_year'))
|
|
371
|
+
== (entry2.get('movie_name'), entry2.get('movie_year'))
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
def get_submit_endpoint(self, entry):
|
|
375
|
+
"""Return the floppy endpoint an entry is added to or removed from, or None.
|
|
376
|
+
|
|
377
|
+
With ``type: auto`` the most specific thing the entry describes is submitted: an episode,
|
|
378
|
+
else a season, else a show, else a movie. Lists do not take episodes, and the collection
|
|
379
|
+
does not take shows or seasons.
|
|
380
|
+
"""
|
|
381
|
+
list_type = self.config['type']
|
|
382
|
+
if list_type in ['auto', 'shows', 'seasons', 'episodes'] and entry.get('series_name'):
|
|
383
|
+
season = entry.get('series_season')
|
|
384
|
+
episode = entry.get('series_episode')
|
|
385
|
+
if list_type in ['auto', 'episodes'] and season is not None and episode is not None:
|
|
386
|
+
kind = 'episode'
|
|
387
|
+
elif list_type in ['auto', 'seasons'] and season is not None:
|
|
388
|
+
kind = 'season'
|
|
389
|
+
elif list_type in ['auto', 'shows']:
|
|
390
|
+
kind = 'show'
|
|
391
|
+
else:
|
|
392
|
+
logger.debug('Not submitting `{}`, no {} found.', entry['title'], list_type[:-1])
|
|
393
|
+
return None
|
|
394
|
+
elif list_type in ['auto', 'movies']:
|
|
395
|
+
kind = 'movie'
|
|
396
|
+
else:
|
|
397
|
+
return None
|
|
398
|
+
|
|
399
|
+
# Floppy collects shows per episode, and its lists do not hold single episodes
|
|
400
|
+
if self.is_collection and kind in ['show', 'season']:
|
|
401
|
+
logger.warning(
|
|
402
|
+
'Not submitting `{}`, floppy collection only takes movies and episodes.',
|
|
403
|
+
entry['title'],
|
|
404
|
+
)
|
|
405
|
+
return None
|
|
406
|
+
if not self.is_collection and kind == 'episode':
|
|
407
|
+
logger.warning(
|
|
408
|
+
'Not submitting `{}`, floppy lists do not take episodes. '
|
|
409
|
+
'Set `type` to `shows` or `seasons` to submit its show or season.',
|
|
410
|
+
entry['title'],
|
|
411
|
+
)
|
|
412
|
+
return None
|
|
413
|
+
|
|
414
|
+
tmdb_id = find_tmdb_id(entry, 'movie' if kind == 'movie' else 'show')
|
|
415
|
+
if not tmdb_id:
|
|
416
|
+
logger.warning('Not submitting `{}`, no tmdb id found.', entry['title'])
|
|
417
|
+
return None
|
|
418
|
+
|
|
419
|
+
endpoint = ('media', 'movie' if kind == 'movie' else 'tv', 'tmdb', tmdb_id)
|
|
420
|
+
if kind in ['season', 'episode']:
|
|
421
|
+
endpoint += (entry['series_season'],)
|
|
422
|
+
if kind == 'episode':
|
|
423
|
+
endpoint += ('episodes', entry['series_episode'])
|
|
424
|
+
if self.is_collection:
|
|
425
|
+
return (*endpoint, 'collection')
|
|
426
|
+
return (*endpoint, 'lists', self.list_id)
|
|
427
|
+
|
|
428
|
+
def submit(self, entries, remove=False):
|
|
429
|
+
"""Submit movies, shows or episodes to the floppy api."""
|
|
430
|
+
action = 'deleted' if remove else 'added'
|
|
431
|
+
changed = 0
|
|
432
|
+
for entry in entries:
|
|
433
|
+
endpoint = self.get_submit_endpoint(entry)
|
|
434
|
+
if endpoint is None:
|
|
435
|
+
continue
|
|
436
|
+
kwargs = {}
|
|
437
|
+
if self.is_collection and not remove:
|
|
438
|
+
quality = entry.get('quality')
|
|
439
|
+
resolution = getattr(quality, 'resolution', None)
|
|
440
|
+
kwargs['json'] = {'resolution': resolution.name} if resolution else {}
|
|
441
|
+
logger.debug('Submitting data to floppy ({}): {}', endpoint, kwargs)
|
|
442
|
+
try:
|
|
443
|
+
result = self.request('delete' if remove else 'put', endpoint, **kwargs)
|
|
444
|
+
except RequestException as e:
|
|
445
|
+
logger.error('Error submitting data to floppy: {}', e)
|
|
446
|
+
return
|
|
447
|
+
if 200 <= result.status_code < 300:
|
|
448
|
+
changed += 1
|
|
449
|
+
elif result.status_code == 409:
|
|
450
|
+
logger.debug('`{}` is already in list {}', entry['title'], self.config['list'])
|
|
451
|
+
elif result.status_code == 404:
|
|
452
|
+
logger.debug('floppy did not find `{}`: {}', entry['title'], result.text)
|
|
453
|
+
elif result.status_code in [401, 403]:
|
|
454
|
+
logger.error(
|
|
455
|
+
'Authentication error: check the floppy `api_key` and its permissions.'
|
|
456
|
+
)
|
|
457
|
+
logger.debug('floppy response: {}', result.text)
|
|
458
|
+
return
|
|
459
|
+
else:
|
|
460
|
+
logger.error('Unknown error submitting data to floppy: {}', result.text)
|
|
461
|
+
|
|
462
|
+
if changed:
|
|
463
|
+
logger.info(
|
|
464
|
+
'Successfully {} to/from list {}: {} item(s).',
|
|
465
|
+
action,
|
|
466
|
+
self.config['list'],
|
|
467
|
+
changed,
|
|
468
|
+
)
|
|
469
|
+
# Mark the results expired if we added or removed anything
|
|
470
|
+
self.invalidate_cache()
|
|
471
|
+
|
|
472
|
+
@property
|
|
473
|
+
def online(self):
|
|
474
|
+
"""Set the online status of the plugin.
|
|
475
|
+
|
|
476
|
+
Online plugin should be treated differently in certain situations, like test mode
|
|
477
|
+
"""
|
|
478
|
+
return True
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
class FloppyList:
|
|
482
|
+
"""Use the lists and the collection of a Floppy server, a self-hosted media tracker.
|
|
483
|
+
|
|
484
|
+
Can be used as an input, and with the list plugins (``list_add``, ``list_remove``,
|
|
485
|
+
``list_match``, ``list_clear``).
|
|
486
|
+
|
|
487
|
+
Options:
|
|
488
|
+
|
|
489
|
+
``base_url``
|
|
490
|
+
Address of the Floppy server.
|
|
491
|
+
``api_key``
|
|
492
|
+
A Floppy app token. Needs the ``lists:read`` and ``lists:write`` permissions for lists,
|
|
493
|
+
``watchlist:read`` and ``watchlist:write`` for the collection.
|
|
494
|
+
``list``
|
|
495
|
+
Name of a Floppy list, or ``collection`` for the media the user owns.
|
|
496
|
+
``type``
|
|
497
|
+
One of ``movies``, ``shows``, ``seasons``, ``episodes`` or ``auto`` (default).
|
|
498
|
+
``strip_dates``
|
|
499
|
+
Do not add the year to titles. Defaults to no.
|
|
500
|
+
|
|
501
|
+
Example, download the movies of a Floppy list::
|
|
502
|
+
|
|
503
|
+
floppy_list:
|
|
504
|
+
base_url: http://localhost:8000
|
|
505
|
+
api_key: flp_xxxxxxxx
|
|
506
|
+
list: To Download
|
|
507
|
+
type: movies
|
|
508
|
+
|
|
509
|
+
Example, mark accepted movies and episodes as collected::
|
|
510
|
+
|
|
511
|
+
list_add:
|
|
512
|
+
- floppy_list:
|
|
513
|
+
base_url: http://localhost:8000
|
|
514
|
+
api_key: flp_xxxxxxxx
|
|
515
|
+
list: collection
|
|
516
|
+
"""
|
|
517
|
+
|
|
518
|
+
schema = FloppySet.schema
|
|
519
|
+
|
|
520
|
+
def get_list(self, config):
|
|
521
|
+
return FloppySet(config)
|
|
522
|
+
|
|
523
|
+
# TODO: we should somehow invalidate this cache when the list is modified
|
|
524
|
+
@cached('floppy_list', persist='2 hours')
|
|
525
|
+
def on_task_input(self, task, config):
|
|
526
|
+
# We use the generator here rather than the cached list in case limit plugin is used.
|
|
527
|
+
return FloppySet(config).get_items()
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
@event('plugin.register')
|
|
531
|
+
def register_plugin():
|
|
532
|
+
plugin.register(FloppyList, 'floppy_list', api_ver=2, interfaces=['task', 'list'])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|