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.
Files changed (756) hide show
  1. {flexget-3.22.1 → flexget-3.22.2}/PKG-INFO +1 -1
  2. {flexget-3.22.1 → flexget-3.22.2}/flexget/_version.py +1 -1
  3. flexget-3.22.2/flexget/components/floppy/floppy_list.py +532 -0
  4. flexget-3.22.2/flexget/utils/__init__.py +0 -0
  5. {flexget-3.22.1 → flexget-3.22.2}/pyproject.toml +1 -1
  6. {flexget-3.22.1 → flexget-3.22.2}/.gitignore +0 -0
  7. {flexget-3.22.1 → flexget-3.22.2}/LICENSE +0 -0
  8. {flexget-3.22.1 → flexget-3.22.2}/README.rst +0 -0
  9. {flexget-3.22.1 → flexget-3.22.2}/flexget/__init__.py +0 -0
  10. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/__init__.py +0 -0
  11. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/app.py +0 -0
  12. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/__init__.py +0 -0
  13. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/authentication.py +0 -0
  14. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/cached.py +0 -0
  15. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/database.py +0 -0
  16. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/format_checker.py +0 -0
  17. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/plugins.py +0 -0
  18. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/schema.py +0 -0
  19. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/server.py +0 -0
  20. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/tasks.py +0 -0
  21. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/core/user.py +0 -0
  22. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/templates/api_response.html +0 -0
  23. {flexget-3.22.1 → flexget-3.22.2}/flexget/api/templates/swagger-ui.html +0 -0
  24. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/README.md +0 -0
  25. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/__init__.py +0 -0
  26. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/__init__.py +0 -0
  27. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/archive.py +0 -0
  28. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/cli.py +0 -0
  29. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archive/db.py +0 -0
  30. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/__init__.py +0 -0
  31. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/archives.py +0 -0
  32. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/decompress.py +0 -0
  33. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/archives/utils.py +0 -0
  34. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/__init__.py +0 -0
  35. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/backlog.py +0 -0
  36. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/cli.py +0 -0
  37. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/backlog/db.py +0 -0
  38. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/__init__.py +0 -0
  39. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/convert_magnet.py +0 -0
  40. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/magnet_info_hash.py +0 -0
  41. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/private_torrents.py +0 -0
  42. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent.py +0 -0
  43. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_alive.py +0 -0
  44. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_files.py +0 -0
  45. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_match.py +0 -0
  46. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_scrub.py +0 -0
  47. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/torrent_size.py +0 -0
  48. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/bittorrent/trackers.py +0 -0
  49. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/__init__.py +0 -0
  50. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/api_emby.py +0 -0
  51. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_list.py +0 -0
  52. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_lookup.py +0 -0
  53. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_refresh.py +0 -0
  54. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/emby_util.py +0 -0
  55. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/emby/from_emby.py +0 -0
  56. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/__init__.py +0 -0
  57. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimate_release.py +0 -0
  58. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/__init__.py +0 -0
  59. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_movies_bluray.py +0 -0
  60. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_released_movies.py +0 -0
  61. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/estimate_release/estimators/est_series_tvmaze.py +0 -0
  62. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/__init__.py +0 -0
  63. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/api.py +0 -0
  64. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/cli.py +0 -0
  65. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/db.py +0 -0
  66. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/failed/retry_failed.py +0 -0
  67. {flexget-3.22.1/flexget/components/ftp → flexget-3.22.2/flexget/components/floppy}/__init__.py +0 -0
  68. {flexget-3.22.1/flexget/components/history → flexget-3.22.2/flexget/components/ftp}/__init__.py +0 -0
  69. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/ftp_download.py +0 -0
  70. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/ftp_list.py +0 -0
  71. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/sftp.py +0 -0
  72. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/ftp/sftp_client.py +0 -0
  73. {flexget-3.22.1/flexget/components/imdb → flexget-3.22.2/flexget/components/history}/__init__.py +0 -0
  74. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/api.py +0 -0
  75. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/cli.py +0 -0
  76. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/db.py +0 -0
  77. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/history/history.py +0 -0
  78. {flexget-3.22.1/flexget/components/irc → flexget-3.22.2/flexget/components/imdb}/__init__.py +0 -0
  79. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/api.py +0 -0
  80. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/db.py +0 -0
  81. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/from_imdb.py +0 -0
  82. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb.py +0 -0
  83. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_lookup.py +0 -0
  84. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_url.py +0 -0
  85. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/imdb_watchlist.py +0 -0
  86. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/utils.py +0 -0
  87. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/imdb/waf.py +0 -0
  88. {flexget-3.22.1/flexget/components/managed_lists → flexget-3.22.2/flexget/components/irc}/__init__.py +0 -0
  89. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/api.py +0 -0
  90. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/cli.py +0 -0
  91. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/irc/irc.py +0 -0
  92. {flexget-3.22.1/flexget/components/managed_lists/lists → flexget-3.22.2/flexget/components/managed_lists}/__init__.py +0 -0
  93. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_add.py +0 -0
  94. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_clear.py +0 -0
  95. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_match.py +0 -0
  96. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/list_remove.py +0 -0
  97. {flexget-3.22.1/flexget/components/managed_lists/lists/entry_list → flexget-3.22.2/flexget/components/managed_lists/lists}/__init__.py +0 -0
  98. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/couchpotato_list.py +0 -0
  99. {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
  100. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/api.py +0 -0
  101. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/cli.py +0 -0
  102. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/db.py +0 -0
  103. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/entry_list/entry_list.py +0 -0
  104. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/imdb_list.py +0 -0
  105. {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
  106. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/api.py +0 -0
  107. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/cli.py +0 -0
  108. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/db.py +0 -0
  109. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/movie_list/movie_list.py +0 -0
  110. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/ombi_list.py +0 -0
  111. {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
  112. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/api.py +0 -0
  113. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/cli.py +0 -0
  114. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/db.py +0 -0
  115. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/pending_list/pending_list.py +0 -0
  116. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/plex_watchlist.py +0 -0
  117. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/radarr_list.py +0 -0
  118. {flexget-3.22.1/flexget/components/notify → flexget-3.22.2/flexget/components/managed_lists/lists/regexp_list}/__init__.py +0 -0
  119. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/cli.py +0 -0
  120. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/db.py +0 -0
  121. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/regexp_list/regexp_list.py +0 -0
  122. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/scrob_list.py +0 -0
  123. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/sonarr_list.py +0 -0
  124. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/subtitle_list.py +0 -0
  125. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/thetvdb_list.py +0 -0
  126. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/managed_lists/lists/yaml_list.py +0 -0
  127. {flexget-3.22.1/flexget/components/notify/notifiers → flexget-3.22.2/flexget/components/notify}/__init__.py +0 -0
  128. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notification_framework.py +0 -0
  129. {flexget-3.22.1/flexget/components/parsing → flexget-3.22.2/flexget/components/notify/notifiers}/__init__.py +0 -0
  130. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/bark.py +0 -0
  131. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/cronitor.py +0 -0
  132. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/discord.py +0 -0
  133. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/email.py +0 -0
  134. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/gotify.py +0 -0
  135. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/ifttt.py +0 -0
  136. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/join.py +0 -0
  137. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/matrix.py +0 -0
  138. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/microsoftteams.py +0 -0
  139. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/mqtt.py +0 -0
  140. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/notifymyandroid.py +0 -0
  141. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/ntfysh.py +0 -0
  142. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/prowl.py +0 -0
  143. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushalot.py +0 -0
  144. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushbullet.py +0 -0
  145. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushover.py +0 -0
  146. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/pushsafer.py +0 -0
  147. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/rapidpush.py +0 -0
  148. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/slack.py +0 -0
  149. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/sms_ru.py +0 -0
  150. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/telegram.py +0 -0
  151. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/toast.py +0 -0
  152. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notifiers/xmpp.py +0 -0
  153. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/notify/notify.py +0 -0
  154. {flexget-3.22.1/flexget/components/parsing/parsers → flexget-3.22.2/flexget/components/parsing}/__init__.py +0 -0
  155. {flexget-3.22.1/flexget/components/pending_approval → flexget-3.22.2/flexget/components/parsing/parsers}/__init__.py +0 -0
  156. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_common.py +0 -0
  157. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_guessit.py +0 -0
  158. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/parsers/parser_internal.py +0 -0
  159. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/parsing/plugin_parsing.py +0 -0
  160. {flexget-3.22.1/flexget/components/rejected → flexget-3.22.2/flexget/components/pending_approval}/__init__.py +0 -0
  161. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/api.py +0 -0
  162. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/cli.py +0 -0
  163. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/db.py +0 -0
  164. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/pending_approval/pending_approval.py +0 -0
  165. {flexget-3.22.1/flexget/components/scheduler → flexget-3.22.2/flexget/components/rejected}/__init__.py +0 -0
  166. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/api.py +0 -0
  167. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/cli.py +0 -0
  168. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/db.py +0 -0
  169. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/rejected/remember_rejected.py +0 -0
  170. {flexget-3.22.1/flexget/components/seen → flexget-3.22.2/flexget/components/scheduler}/__init__.py +0 -0
  171. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/scheduler/api.py +0 -0
  172. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/scheduler/scheduler.py +0 -0
  173. {flexget-3.22.1/flexget/components/series → flexget-3.22.2/flexget/components/seen}/__init__.py +0 -0
  174. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/api.py +0 -0
  175. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/cli.py +0 -0
  176. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/db.py +0 -0
  177. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen.py +0 -0
  178. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen_info_hash.py +0 -0
  179. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/seen/seen_movies.py +0 -0
  180. {flexget-3.22.1/flexget/components/sites → flexget-3.22.2/flexget/components/series}/__init__.py +0 -0
  181. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/all_series.py +0 -0
  182. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/api.py +0 -0
  183. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/cli.py +0 -0
  184. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/configure_series.py +0 -0
  185. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/db.py +0 -0
  186. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/gen_series.py +0 -0
  187. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/internal_estimator.py +0 -0
  188. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/metainfo_series.py +0 -0
  189. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/next_series_episodes.py +0 -0
  190. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/next_series_seasons.py +0 -0
  191. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series.py +0 -0
  192. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_begin.py +0 -0
  193. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_premiere.py +0 -0
  194. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/series_remove.py +0 -0
  195. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/series/utils.py +0 -0
  196. {flexget-3.22.1/flexget/components/sites → flexget-3.22.2/flexget/components}/sites/__init__.py +0 -0
  197. {flexget-3.22.1/flexget/components/status → flexget-3.22.2/flexget/components/sites/sites}/__init__.py +0 -0
  198. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/allyoulike.py +0 -0
  199. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/alpharatio.py +0 -0
  200. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/anirena.py +0 -0
  201. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/argenteam.py +0 -0
  202. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/awesomehd.py +0 -0
  203. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/bakabt.py +0 -0
  204. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/btn.py +0 -0
  205. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/cinemageddon.py +0 -0
  206. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/cpasbien.py +0 -0
  207. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/ettv.py +0 -0
  208. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/eztv.py +0 -0
  209. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/filelist_api.py +0 -0
  210. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/google_cse.py +0 -0
  211. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/hebits.py +0 -0
  212. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/horriblesubs.py +0 -0
  213. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/iptorrents.py +0 -0
  214. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/koreus.py +0 -0
  215. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/limetorrents.py +0 -0
  216. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/lostfilm.py +0 -0
  217. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/morethantv.py +0 -0
  218. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/ncore.py +0 -0
  219. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/newznab.py +0 -0
  220. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/nyaa.py +0 -0
  221. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/passthepopcorn.py +0 -0
  222. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/piratebay.py +0 -0
  223. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/redirect.py +0 -0
  224. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rlsbb.py +0 -0
  225. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rss.py +0 -0
  226. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/rutracker.py +0 -0
  227. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/serienjunkies.py +0 -0
  228. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/shortened.py +0 -0
  229. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/site_1337x.py +0 -0
  230. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/site_rutracker.py +0 -0
  231. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/solidtorrents.py +0 -0
  232. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrent_cache.py +0 -0
  233. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentday.py +0 -0
  234. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentleech.py +0 -0
  235. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/torrentz.py +0 -0
  236. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/uindex.py +0 -0
  237. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/wordpress.py +0 -0
  238. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/sites/yts.py +0 -0
  239. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewrite.py +0 -0
  240. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewrite_search.py +0 -0
  241. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/urlrewriting.py +0 -0
  242. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/sites/utils.py +0 -0
  243. {flexget-3.22.1/flexget/components/thetvdb → flexget-3.22.2/flexget/components/status}/__init__.py +0 -0
  244. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/api.py +0 -0
  245. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/cli.py +0 -0
  246. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/db.py +0 -0
  247. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/status/status.py +0 -0
  248. {flexget-3.22.1/flexget/components/tmdb → flexget-3.22.2/flexget/components/thetvdb}/__init__.py +0 -0
  249. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/api.py +0 -0
  250. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/api_tvdb.py +0 -0
  251. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/thetvdb/thetvdb_lookup.py +0 -0
  252. {flexget-3.22.1/flexget/components/trakt → flexget-3.22.2/flexget/components/tmdb}/__init__.py +0 -0
  253. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/api.py +0 -0
  254. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/api_tmdb.py +0 -0
  255. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tmdb/tmdb_lookup.py +0 -0
  256. {flexget-3.22.1/flexget/components/tvmaze → flexget-3.22.2/flexget/components/trakt}/__init__.py +0 -0
  257. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/api.py +0 -0
  258. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/api_trakt.py +0 -0
  259. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/cli.py +0 -0
  260. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/db.py +0 -0
  261. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/next_trakt_episodes.py +0 -0
  262. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_calendar.py +0 -0
  263. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_list.py +0 -0
  264. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/trakt/trakt_lookup.py +0 -0
  265. {flexget-3.22.1/flexget/components/variables → flexget-3.22.2/flexget/components/tvmaze}/__init__.py +0 -0
  266. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/api.py +0 -0
  267. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/api_tvmaze.py +0 -0
  268. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/tvmaze/tvmaze_lookup.py +0 -0
  269. {flexget-3.22.1/flexget/plugins/clients → flexget-3.22.2/flexget/components/variables}/__init__.py +0 -0
  270. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/variables/api.py +0 -0
  271. {flexget-3.22.1 → flexget-3.22.2}/flexget/components/variables/variables.py +0 -0
  272. {flexget-3.22.1 → flexget-3.22.2}/flexget/config_schema.py +0 -0
  273. {flexget-3.22.1 → flexget-3.22.2}/flexget/db_schema.py +0 -0
  274. {flexget-3.22.1 → flexget-3.22.2}/flexget/entry.py +0 -0
  275. {flexget-3.22.1 → flexget-3.22.2}/flexget/event.py +0 -0
  276. {flexget-3.22.1 → flexget-3.22.2}/flexget/ipc.py +0 -0
  277. {flexget-3.22.1 → flexget-3.22.2}/flexget/log.py +0 -0
  278. {flexget-3.22.1 → flexget-3.22.2}/flexget/manager.py +0 -0
  279. {flexget-3.22.1 → flexget-3.22.2}/flexget/options.py +0 -0
  280. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugin.py +0 -0
  281. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/README.md +0 -0
  282. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/__init__.py +0 -0
  283. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/__init__.py +0 -0
  284. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/check.py +0 -0
  285. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/cli_config.py +0 -0
  286. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/database.py +0 -0
  287. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/debug_info.py +0 -0
  288. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/doc.py +0 -0
  289. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/explain_sql.py +0 -0
  290. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/filters.py +0 -0
  291. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/inject.py +0 -0
  292. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/perf_tests.py +0 -0
  293. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/performance.py +0 -0
  294. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/plugins.py +0 -0
  295. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/templates.py +0 -0
  296. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/try_regexp.py +0 -0
  297. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/web.py +0 -0
  298. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/wiki_qualities.py +0 -0
  299. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/cli/win32_service.py +0 -0
  300. {flexget-3.22.1/flexget/ui → flexget-3.22.2/flexget/plugins/clients}/__init__.py +0 -0
  301. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/aria2.py +0 -0
  302. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/deluge.py +0 -0
  303. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/nzbget.py +0 -0
  304. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/pyload.py +0 -0
  305. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/qbittorrent.py +0 -0
  306. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/rtorrent.py +0 -0
  307. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/clients/transmission.py +0 -0
  308. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/daemon/__init__.py +0 -0
  309. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/daemon/web_server.py +0 -0
  310. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/__init__.py +0 -0
  311. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/abort_if_exists.py +0 -0
  312. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/accept_all.py +0 -0
  313. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/age.py +0 -0
  314. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/best_quality.py +0 -0
  315. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/content_filter.py +0 -0
  316. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/content_size.py +0 -0
  317. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/crossmatch.py +0 -0
  318. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/delay.py +0 -0
  319. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/duplicates.py +0 -0
  320. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists.py +0 -0
  321. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists_movie.py +0 -0
  322. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/exists_series.py +0 -0
  323. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/if_condition.py +0 -0
  324. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/limit_new.py +0 -0
  325. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/magnets.py +0 -0
  326. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/only_new.py +0 -0
  327. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/proper_movies.py +0 -0
  328. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/quality.py +0 -0
  329. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/regexp.py +0 -0
  330. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/require_field.py +0 -0
  331. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/rottentomatoes.py +0 -0
  332. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/thetvdb.py +0 -0
  333. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/timeframe.py +0 -0
  334. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/unique.py +0 -0
  335. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/filter/upgrade.py +0 -0
  336. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/__init__.py +0 -0
  337. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/cron_env.py +0 -0
  338. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/db_analyze.py +0 -0
  339. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/db_vacuum.py +0 -0
  340. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/log_start.py +0 -0
  341. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/urlfix.py +0 -0
  342. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/generic/welcome.py +0 -0
  343. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/__init__.py +0 -0
  344. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/anidb_list.py +0 -0
  345. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/anilist.py +0 -0
  346. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/apple_trailers.py +0 -0
  347. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/betaseries_list.py +0 -0
  348. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/discover.py +0 -0
  349. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/filesystem.py +0 -0
  350. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/filmweb_watchlist.py +0 -0
  351. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_piratebay.py +0 -0
  352. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_task.py +0 -0
  353. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/from_telegram.py +0 -0
  354. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/gazelle.py +0 -0
  355. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/generate.py +0 -0
  356. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/html.py +0 -0
  357. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/input_csv.py +0 -0
  358. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/inputs.py +0 -0
  359. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/json.py +0 -0
  360. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/kitsu.py +0 -0
  361. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/letterboxd.py +0 -0
  362. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/limit.py +0 -0
  363. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/medusa.py +0 -0
  364. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/mock.py +0 -0
  365. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/my_anime_list.py +0 -0
  366. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/myepisodes_list.py +0 -0
  367. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/next_sonarr_episodes.py +0 -0
  368. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/npo_watchlist.py +0 -0
  369. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/parameterize.py +0 -0
  370. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/plex.py +0 -0
  371. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/pogcal.py +0 -0
  372. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/regexp_parse.py +0 -0
  373. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rlslog.py +0 -0
  374. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rottentomatoes_list.py +0 -0
  375. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/rss.py +0 -0
  376. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/sceper.py +0 -0
  377. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/sickbeard.py +0 -0
  378. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/tail.py +0 -0
  379. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/text.py +0 -0
  380. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/torznab.py +0 -0
  381. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/input/twitterfeed.py +0 -0
  382. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/__init__.py +0 -0
  383. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/api_bluray.py +0 -0
  384. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/api_rottentomatoes.py +0 -0
  385. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/internal/change_warn.py +0 -0
  386. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/__init__.py +0 -0
  387. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/assume_quality.py +0 -0
  388. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/bluray_lookup.py +0 -0
  389. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/check_subtitles.py +0 -0
  390. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/content_size.py +0 -0
  391. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/media_id.py +0 -0
  392. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/metainfo_movie.py +0 -0
  393. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/nfo_lookup.py +0 -0
  394. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/nzb_size.py +0 -0
  395. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/quality.py +0 -0
  396. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/rottentomatoes_lookup.py +0 -0
  397. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/metainfo/task.py +0 -0
  398. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/__init__.py +0 -0
  399. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/extension.py +0 -0
  400. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/headers.py +0 -0
  401. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/manipulate.py +0 -0
  402. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/path_by_ext.py +0 -0
  403. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/path_by_space.py +0 -0
  404. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/plugin_priority.py +0 -0
  405. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/regex_extract.py +0 -0
  406. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/reorder_quality.py +0 -0
  407. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/set_field.py +0 -0
  408. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/sort_by.py +0 -0
  409. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/modify/sort_by_weight.py +0 -0
  410. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/__init__.py +0 -0
  411. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/abort.py +0 -0
  412. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/cookies.py +0 -0
  413. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/debug_db_sessions.py +0 -0
  414. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/debug_warnings.py +0 -0
  415. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/digest.py +0 -0
  416. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/disable.py +0 -0
  417. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/disable_phases.py +0 -0
  418. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/domain_delay.py +0 -0
  419. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/entry_trace.py +0 -0
  420. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/formlogin.py +0 -0
  421. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/free_space.py +0 -0
  422. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/include.py +0 -0
  423. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/interval.py +0 -0
  424. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/log_filter.py +0 -0
  425. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/manual.py +0 -0
  426. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/max_reruns.py +0 -0
  427. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/pathscrub.py +0 -0
  428. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/priority.py +0 -0
  429. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/proxy.py +0 -0
  430. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/rerun.py +0 -0
  431. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/run_task.py +0 -0
  432. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/sequence.py +0 -0
  433. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/sleep.py +0 -0
  434. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/spy_headers.py +0 -0
  435. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/template.py +0 -0
  436. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verbose.py +0 -0
  437. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verbose_details.py +0 -0
  438. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/verify_ssl_certificates.py +0 -0
  439. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/operate/version_checker.py +0 -0
  440. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/__init__.py +0 -0
  441. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/download.py +0 -0
  442. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/download_auth.py +0 -0
  443. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/dump.py +0 -0
  444. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/dump_config.py +0 -0
  445. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/exec.py +0 -0
  446. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/file_operations.py +0 -0
  447. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/html.py +0 -0
  448. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/memusage.py +0 -0
  449. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/mock_output.py +0 -0
  450. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/rss.py +0 -0
  451. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/rtorrent_magnet.py +0 -0
  452. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/sabnzbd.py +0 -0
  453. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/sns.py +0 -0
  454. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles.py +0 -0
  455. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles_periscope.py +0 -0
  456. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/subtitles_subliminal.py +0 -0
  457. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/symlink.py +0 -0
  458. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/output/utorrent.py +0 -0
  459. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/__init__.py +0 -0
  460. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/kodi_library.py +0 -0
  461. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/myepisodes.py +0 -0
  462. {flexget-3.22.1 → flexget-3.22.2}/flexget/plugins/services/pogcal_acquired.py +0 -0
  463. {flexget-3.22.1 → flexget-3.22.2}/flexget/resources/flexget.png +0 -0
  464. {flexget-3.22.1 → flexget-3.22.2}/flexget/task.py +0 -0
  465. {flexget-3.22.1 → flexget-3.22.2}/flexget/task_queue.py +0 -0
  466. {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/entry/default.template +0 -0
  467. {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/default.template +0 -0
  468. {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/html.template +0 -0
  469. {flexget-3.22.1 → flexget-3.22.2}/flexget/templates/task/rss.template +0 -0
  470. {flexget-3.22.1 → flexget-3.22.2}/flexget/terminal.py +0 -0
  471. {flexget-3.22.1 → flexget-3.22.2}/flexget/tray_icon.py +0 -0
  472. {flexget-3.22.1/flexget/utils → flexget-3.22.2/flexget/ui}/__init__.py +0 -0
  473. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/.eslintignore +0 -0
  474. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/.eslintrc +0 -0
  475. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/README.rst +0 -0
  476. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/__init__.py +0 -0
  477. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/bower.json +0 -0
  478. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/build.js +0 -0
  479. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/inject.js +0 -0
  480. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/lint.js +0 -0
  481. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/proxy.js +0 -0
  482. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/scripts.js +0 -0
  483. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/server.js +0 -0
  484. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/styles.js +0 -0
  485. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/test.js +0 -0
  486. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulp/watch.js +0 -0
  487. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/gulpfile.js +0 -0
  488. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/karma.conf.js +0 -0
  489. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/load.failure.html +0 -0
  490. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/package.json +0 -0
  491. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/specs.html +0 -0
  492. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.html +0 -0
  493. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.loading.js +0 -0
  494. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.module.js +0 -0
  495. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.scss +0 -0
  496. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/app.utils.js +0 -0
  497. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/assets/icons/ic_movie_black_24px.svg +0 -0
  498. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/assets/images/header.png +0 -0
  499. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/_error-dialog.scss +0 -0
  500. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.component.js +0 -0
  501. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.component.spec.js +0 -0
  502. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error-dialog.tmpl.html +0 -0
  503. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.module.js +0 -0
  504. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.service.js +0 -0
  505. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/error/error.service.spec.js +0 -0
  506. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.module.js +0 -0
  507. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.service.js +0 -0
  508. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/exception/exception.service.spec.js +0 -0
  509. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/_pagination.scss +0 -0
  510. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.component.js +0 -0
  511. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.filter.js +0 -0
  512. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.module.js +0 -0
  513. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/pagination/pagination.tmpl.html +0 -0
  514. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.module.js +0 -0
  515. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.provider.js +0 -0
  516. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/router/router-helper.provider.spec.js +0 -0
  517. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.config.js +0 -0
  518. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.module.js +0 -0
  519. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.js +0 -0
  520. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.spec.js +0 -0
  521. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.component.js +0 -0
  522. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.component.spec.js +0 -0
  523. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.module.js +0 -0
  524. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.route.js +0 -0
  525. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.route.spec.js +0 -0
  526. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/404/404.tmpl.html +0 -0
  527. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/_login.scss +0 -0
  528. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.config.js +0 -0
  529. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.config.spec.js +0 -0
  530. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.module.js +0 -0
  531. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.service.js +0 -0
  532. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/auth.service.spec.js +0 -0
  533. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.component.js +0 -0
  534. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.component.spec.js +0 -0
  535. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.route.js +0 -0
  536. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.route.spec.js +0 -0
  537. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/auth/login.tmpl.html +0 -0
  538. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/components.module.js +0 -0
  539. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.config.js +0 -0
  540. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.module.js +0 -0
  541. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.provider.js +0 -0
  542. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.route.js +0 -0
  543. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/core/core.route.spec.js +0 -0
  544. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/_database.scss +0 -0
  545. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.component.js +0 -0
  546. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.config.js +0 -0
  547. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.module.js +0 -0
  548. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.service.js +0 -0
  549. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/database/database.tmpl.html +0 -0
  550. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.component.js +0 -0
  551. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.component.spec.js +0 -0
  552. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.module.js +0 -0
  553. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.route.js +0 -0
  554. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.route.spec.js +0 -0
  555. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/home/home.tmpl.html +0 -0
  556. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/_sidenav.scss +0 -0
  557. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.component.js +0 -0
  558. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.component.spec.js +0 -0
  559. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.module.js +0 -0
  560. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.semver.js +0 -0
  561. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.service.js +0 -0
  562. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.service.spec.js +0 -0
  563. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/sidenav/sidenav.tmpl.html +0 -0
  564. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.component.js +0 -0
  565. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.component.spec.js +0 -0
  566. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.config.js +0 -0
  567. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.module.js +0 -0
  568. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.provider.js +0 -0
  569. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/toolbar/toolbar.tmpl.html +0 -0
  570. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/components/user/user.module.js +0 -0
  571. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/construction.tmpl.html +0 -0
  572. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/directives/directives.module.js +0 -0
  573. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/directives/palette-background/palette-background.directive.js +0 -0
  574. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/favicon.ico +0 -0
  575. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/layout.tmpl.html +0 -0
  576. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.component.js +0 -0
  577. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.component.spec.js +0 -0
  578. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.module.js +0 -0
  579. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.route.js +0 -0
  580. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.route.spec.js +0 -0
  581. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.service.js +0 -0
  582. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/config/config.tmpl.html +0 -0
  583. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.js +0 -0
  584. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.spec.js +0 -0
  585. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.tmpl.html +0 -0
  586. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.js +0 -0
  587. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.spec.js +0 -0
  588. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.tmpl.html +0 -0
  589. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.component.js +0 -0
  590. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.component.spec.js +0 -0
  591. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.filter.js +0 -0
  592. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.filter.spec.js +0 -0
  593. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.module.js +0 -0
  594. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.route.js +0 -0
  595. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.route.spec.js +0 -0
  596. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.service.js +0 -0
  597. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.service.spec.js +0 -0
  598. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.tmpl.html +0 -0
  599. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/execute/execute.tmpl.scss +0 -0
  600. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.component.js +0 -0
  601. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.component.spec.js +0 -0
  602. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.module.js +0 -0
  603. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.route.js +0 -0
  604. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.route.spec.js +0 -0
  605. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.service.js +0 -0
  606. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.service.spec.js +0 -0
  607. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/history/history.tmpl.html +0 -0
  608. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.component.js +0 -0
  609. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.component.spec.js +0 -0
  610. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.module.js +0 -0
  611. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.route.js +0 -0
  612. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.route.spec.js +0 -0
  613. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.service.js +0 -0
  614. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.tmpl.html +0 -0
  615. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/log/log.tmpl.scss +0 -0
  616. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-input.directive.js +0 -0
  617. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.component.js +0 -0
  618. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.tmpl.html +0 -0
  619. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.controller.js +0 -0
  620. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.service.js +0 -0
  621. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.tmpl.html +0 -0
  622. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.js +0 -0
  623. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.spec.js +0 -0
  624. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.scss +0 -0
  625. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.tmpl.html +0 -0
  626. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.js +0 -0
  627. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.spec.js +0 -0
  628. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.tmpl.html +0 -0
  629. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.js +0 -0
  630. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.spec.js +0 -0
  631. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.tmpl.html +0 -0
  632. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.component.js +0 -0
  633. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.component.spec.js +0 -0
  634. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.module.js +0 -0
  635. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.route.js +0 -0
  636. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.route.spec.js +0 -0
  637. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.service.js +0 -0
  638. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.service.spec.js +0 -0
  639. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.tmpl.html +0 -0
  640. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/movies/movies.tmpl.scss +0 -0
  641. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.component.js +0 -0
  642. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.module.js +0 -0
  643. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.route.js +0 -0
  644. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.scss +0 -0
  645. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.service.js +0 -0
  646. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/pending/pending.tmpl.html +0 -0
  647. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/plugins.module.js +0 -0
  648. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.component.js +0 -0
  649. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.component.spec.js +0 -0
  650. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.module.js +0 -0
  651. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.route.js +0 -0
  652. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.route.spec.js +0 -0
  653. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.service.js +0 -0
  654. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.service.spec.js +0 -0
  655. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/schedule/schedule.tmpl.html +0 -0
  656. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.js +0 -0
  657. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.spec.js +0 -0
  658. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.tmpl.html +0 -0
  659. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.component.js +0 -0
  660. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.tmpl.html +0 -0
  661. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.component.js +0 -0
  662. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.component.spec.js +0 -0
  663. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.module.js +0 -0
  664. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.route.js +0 -0
  665. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.route.spec.js +0 -0
  666. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.service.js +0 -0
  667. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.service.spec.js +0 -0
  668. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/seen/seen.tmpl.html +0 -0
  669. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.js +0 -0
  670. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.spec.js +0 -0
  671. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.scss +0 -0
  672. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.tmpl.html +0 -0
  673. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.js +0 -0
  674. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.spec.js +0 -0
  675. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.tmpl.html +0 -0
  676. {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
  677. {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
  678. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.js +0 -0
  679. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.spec.js +0 -0
  680. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.scss +0 -0
  681. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.tmpl.html +0 -0
  682. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.js +0 -0
  683. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.spec.js +0 -0
  684. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.scss +0 -0
  685. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.tmpl.html +0 -0
  686. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.js +0 -0
  687. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.spec.js +0 -0
  688. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.scss +0 -0
  689. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.tmpl.html +0 -0
  690. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.component.js +0 -0
  691. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.component.spec.js +0 -0
  692. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.module.js +0 -0
  693. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.route.js +0 -0
  694. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.route.spec.js +0 -0
  695. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.service.js +0 -0
  696. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.service.spec.js +0 -0
  697. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/series/series.tmpl.html +0 -0
  698. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/loading-dialog.component.js +0 -0
  699. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/loading-dialog.tmpl.html +0 -0
  700. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.config.js +0 -0
  701. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.module.js +0 -0
  702. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/server/server.service.js +0 -0
  703. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.component.js +0 -0
  704. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.module.js +0 -0
  705. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.route.js +0 -0
  706. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.service.js +0 -0
  707. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.tmpl.html +0 -0
  708. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/plugins/status/status.tmpl.scss +0 -0
  709. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_header.scss +0 -0
  710. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_loading-bar.scss +0 -0
  711. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/_variables.scss +0 -0
  712. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/scss/flexget.scss +0 -0
  713. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/src/services/schema.service.js +0 -0
  714. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/config.js +0 -0
  715. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/execute.js +0 -0
  716. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/history.js +0 -0
  717. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/movie_list.js +0 -0
  718. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/registerPlugin.js +0 -0
  719. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/schedules.js +0 -0
  720. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/seen.js +0 -0
  721. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/series.js +0 -0
  722. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v1/tests-mock-data/states.js +0 -0
  723. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/README.rst +0 -0
  724. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/__init__.py +0 -0
  725. {flexget-3.22.1 → flexget-3.22.2}/flexget/ui/v2/index.html +0 -0
  726. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/bittorrent.py +0 -0
  727. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/cache.py +0 -0
  728. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/cached_input.py +0 -0
  729. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/database.py +0 -0
  730. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/json.py +0 -0
  731. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/lazy_dict.py +0 -0
  732. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/log.py +0 -0
  733. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/__init__.py +0 -0
  734. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/generic.py +0 -0
  735. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/movie.py +0 -0
  736. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/parser.py +0 -0
  737. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/parsers/series.py +0 -0
  738. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/pathscrub.py +0 -0
  739. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/qualities.py +0 -0
  740. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/requests.py +0 -0
  741. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/serialization.py +0 -0
  742. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/simple_persistence.py +0 -0
  743. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/soup.py +0 -0
  744. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/sqlalchemy_utils.py +0 -0
  745. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/template.py +0 -0
  746. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/tools.py +0 -0
  747. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/README.md +0 -0
  748. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/__init__.py +0 -0
  749. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/aws.py +0 -0
  750. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/crypto.py +0 -0
  751. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/fingerprint.py +0 -0
  752. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/verify.py +0 -0
  753. {flexget-3.22.1 → flexget-3.22.2}/flexget/utils/waf/webgl.json +0 -0
  754. {flexget-3.22.1 → flexget-3.22.2}/flexget/webserver.py +0 -0
  755. {flexget-3.22.1 → flexget-3.22.2}/scripts/build_locked_extras.py +0 -0
  756. {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.1
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
@@ -10,4 +10,4 @@ and update the version again for continued development.
10
10
  NOTE: Should always have all three parts of the version, even on major and minor bumps. i.e. 4.0.0.dev, not 4.0.dev
11
11
  """
12
12
 
13
- __version__ = '3.22.1'
13
+ __version__ = '3.22.2'
@@ -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
@@ -91,7 +91,7 @@ test = [
91
91
  { include-group = "all" },
92
92
  ]
93
93
  docs = [
94
- "pydata-sphinx-theme~=0.20.0",
94
+ "pydata-sphinx-theme~=0.23.0",
95
95
  "sphinx~=9.1",
96
96
  "sphinx-copybutton~=0.5.2",
97
97
  "sphinx-design~=0.7.0",
File without changes
File without changes
File without changes
File without changes
File without changes