flexget 3.14.0__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 (978) hide show
  1. flexget-3.14.0/.gitignore +52 -0
  2. flexget-3.14.0/LICENSE +23 -0
  3. flexget-3.14.0/PKG-INFO +314 -0
  4. flexget-3.14.0/README.rst +84 -0
  5. flexget-3.14.0/build_locked_extras.py +62 -0
  6. flexget-3.14.0/bundle_webui.py +106 -0
  7. flexget-3.14.0/dev_tools.py +126 -0
  8. flexget-3.14.0/flexget/__init__.py +80 -0
  9. flexget-3.14.0/flexget/_version.py +13 -0
  10. flexget-3.14.0/flexget/api/__init__.py +12 -0
  11. flexget-3.14.0/flexget/api/app.py +464 -0
  12. flexget-3.14.0/flexget/api/core/__init__.py +1 -0
  13. flexget-3.14.0/flexget/api/core/authentication.py +130 -0
  14. flexget-3.14.0/flexget/api/core/cached.py +38 -0
  15. flexget-3.14.0/flexget/api/core/database.py +65 -0
  16. flexget-3.14.0/flexget/api/core/format_checker.py +42 -0
  17. flexget-3.14.0/flexget/api/core/plugins.py +169 -0
  18. flexget-3.14.0/flexget/api/core/schema.py +65 -0
  19. flexget-3.14.0/flexget/api/core/server.py +577 -0
  20. flexget-3.14.0/flexget/api/core/tasks.py +639 -0
  21. flexget-3.14.0/flexget/api/core/user.py +66 -0
  22. flexget-3.14.0/flexget/api/templates/api_response.html +41 -0
  23. flexget-3.14.0/flexget/api/templates/swagger-ui.html +93 -0
  24. flexget-3.14.0/flexget/components/README.md +5 -0
  25. flexget-3.14.0/flexget/components/__init__.py +0 -0
  26. flexget-3.14.0/flexget/components/archive/__init__.py +0 -0
  27. flexget-3.14.0/flexget/components/archive/archive.py +122 -0
  28. flexget-3.14.0/flexget/components/archive/cli.py +280 -0
  29. flexget-3.14.0/flexget/components/archive/db.py +175 -0
  30. flexget-3.14.0/flexget/components/archives/__init__.py +0 -0
  31. flexget-3.14.0/flexget/components/archives/archives.py +61 -0
  32. flexget-3.14.0/flexget/components/archives/decompress.py +220 -0
  33. flexget-3.14.0/flexget/components/archives/utils.py +281 -0
  34. flexget-3.14.0/flexget/components/backlog/__init__.py +0 -0
  35. flexget-3.14.0/flexget/components/backlog/backlog.py +115 -0
  36. flexget-3.14.0/flexget/components/backlog/cli.py +38 -0
  37. flexget-3.14.0/flexget/components/backlog/db.py +111 -0
  38. flexget-3.14.0/flexget/components/bittorrent/__init__.py +0 -0
  39. flexget-3.14.0/flexget/components/bittorrent/convert_magnet.py +122 -0
  40. flexget-3.14.0/flexget/components/bittorrent/magnet_info_hash.py +41 -0
  41. flexget-3.14.0/flexget/components/bittorrent/private_torrents.py +49 -0
  42. flexget-3.14.0/flexget/components/bittorrent/torrent.py +116 -0
  43. flexget-3.14.0/flexget/components/bittorrent/torrent_alive.py +279 -0
  44. flexget-3.14.0/flexget/components/bittorrent/torrent_files.py +29 -0
  45. flexget-3.14.0/flexget/components/bittorrent/torrent_match.py +201 -0
  46. flexget-3.14.0/flexget/components/bittorrent/torrent_scrub.py +121 -0
  47. flexget-3.14.0/flexget/components/bittorrent/torrent_size.py +26 -0
  48. flexget-3.14.0/flexget/components/bittorrent/trackers.py +119 -0
  49. flexget-3.14.0/flexget/components/emby/__init__.py +0 -0
  50. flexget-3.14.0/flexget/components/emby/api_emby.py +2779 -0
  51. flexget-3.14.0/flexget/components/emby/emby_list.py +67 -0
  52. flexget-3.14.0/flexget/components/emby/emby_lookup.py +97 -0
  53. flexget-3.14.0/flexget/components/emby/emby_refresh.py +93 -0
  54. flexget-3.14.0/flexget/components/emby/emby_util.py +163 -0
  55. flexget-3.14.0/flexget/components/emby/from_emby.py +115 -0
  56. flexget-3.14.0/flexget/components/estimate_release/__init__.py +0 -0
  57. flexget-3.14.0/flexget/components/estimate_release/estimate_release.py +43 -0
  58. flexget-3.14.0/flexget/components/estimate_release/estimators/__init__.py +0 -0
  59. flexget-3.14.0/flexget/components/estimate_release/estimators/est_movies_bluray.py +46 -0
  60. flexget-3.14.0/flexget/components/estimate_release/estimators/est_released_movies.py +36 -0
  61. flexget-3.14.0/flexget/components/estimate_release/estimators/est_series_tvmaze.py +89 -0
  62. flexget-3.14.0/flexget/components/failed/__init__.py +0 -0
  63. flexget-3.14.0/flexget/components/failed/api.py +153 -0
  64. flexget-3.14.0/flexget/components/failed/cli.py +55 -0
  65. flexget-3.14.0/flexget/components/failed/db.py +94 -0
  66. flexget-3.14.0/flexget/components/failed/retry_failed.py +142 -0
  67. flexget-3.14.0/flexget/components/ftp/__init__.py +0 -0
  68. flexget-3.14.0/flexget/components/ftp/ftp_download.py +223 -0
  69. flexget-3.14.0/flexget/components/ftp/ftp_list.py +168 -0
  70. flexget-3.14.0/flexget/components/ftp/sftp.py +427 -0
  71. flexget-3.14.0/flexget/components/ftp/sftp_client.py +676 -0
  72. flexget-3.14.0/flexget/components/history/__init__.py +0 -0
  73. flexget-3.14.0/flexget/components/history/api.py +109 -0
  74. flexget-3.14.0/flexget/components/history/cli.py +68 -0
  75. flexget-3.14.0/flexget/components/history/db.py +48 -0
  76. flexget-3.14.0/flexget/components/history/history.py +36 -0
  77. flexget-3.14.0/flexget/components/imdb/__init__.py +0 -0
  78. flexget-3.14.0/flexget/components/imdb/api.py +45 -0
  79. flexget-3.14.0/flexget/components/imdb/db.py +231 -0
  80. flexget-3.14.0/flexget/components/imdb/from_imdb.py +362 -0
  81. flexget-3.14.0/flexget/components/imdb/imdb.py +269 -0
  82. flexget-3.14.0/flexget/components/imdb/imdb_lookup.py +323 -0
  83. flexget-3.14.0/flexget/components/imdb/imdb_url.py +47 -0
  84. flexget-3.14.0/flexget/components/imdb/imdb_watchlist.py +250 -0
  85. flexget-3.14.0/flexget/components/imdb/utils.py +399 -0
  86. flexget-3.14.0/flexget/components/irc/__init__.py +0 -0
  87. flexget-3.14.0/flexget/components/irc/api.py +126 -0
  88. flexget-3.14.0/flexget/components/irc/cli.py +111 -0
  89. flexget-3.14.0/flexget/components/irc/irc.py +1086 -0
  90. flexget-3.14.0/flexget/components/managed_lists/__init__.py +0 -0
  91. flexget-3.14.0/flexget/components/managed_lists/list_add.py +58 -0
  92. flexget-3.14.0/flexget/components/managed_lists/list_clear.py +61 -0
  93. flexget-3.14.0/flexget/components/managed_lists/list_match.py +85 -0
  94. flexget-3.14.0/flexget/components/managed_lists/list_remove.py +51 -0
  95. flexget-3.14.0/flexget/components/managed_lists/lists/__init__.py +0 -0
  96. flexget-3.14.0/flexget/components/managed_lists/lists/couchpotato_list.py +262 -0
  97. flexget-3.14.0/flexget/components/managed_lists/lists/entry_list/__init__.py +0 -0
  98. flexget-3.14.0/flexget/components/managed_lists/lists/entry_list/api.py +321 -0
  99. flexget-3.14.0/flexget/components/managed_lists/lists/entry_list/cli.py +222 -0
  100. flexget-3.14.0/flexget/components/managed_lists/lists/entry_list/db.py +256 -0
  101. flexget-3.14.0/flexget/components/managed_lists/lists/entry_list/entry_list.py +48 -0
  102. flexget-3.14.0/flexget/components/managed_lists/lists/imdb_list.py +500 -0
  103. flexget-3.14.0/flexget/components/managed_lists/lists/movie_list/__init__.py +0 -0
  104. flexget-3.14.0/flexget/components/managed_lists/lists/movie_list/api.py +368 -0
  105. flexget-3.14.0/flexget/components/managed_lists/lists/movie_list/cli.py +255 -0
  106. flexget-3.14.0/flexget/components/managed_lists/lists/movie_list/db.py +214 -0
  107. flexget-3.14.0/flexget/components/managed_lists/lists/movie_list/movie_list.py +194 -0
  108. flexget-3.14.0/flexget/components/managed_lists/lists/ombi_list.py +1021 -0
  109. flexget-3.14.0/flexget/components/managed_lists/lists/pending_list/__init__.py +0 -0
  110. flexget-3.14.0/flexget/components/managed_lists/lists/pending_list/api.py +386 -0
  111. flexget-3.14.0/flexget/components/managed_lists/lists/pending_list/cli.py +268 -0
  112. flexget-3.14.0/flexget/components/managed_lists/lists/pending_list/db.py +169 -0
  113. flexget-3.14.0/flexget/components/managed_lists/lists/pending_list/pending_list.py +148 -0
  114. flexget-3.14.0/flexget/components/managed_lists/lists/plex_watchlist.py +205 -0
  115. flexget-3.14.0/flexget/components/managed_lists/lists/radarr_list.py +627 -0
  116. flexget-3.14.0/flexget/components/managed_lists/lists/regexp_list/__init__.py +0 -0
  117. flexget-3.14.0/flexget/components/managed_lists/lists/regexp_list/cli.py +128 -0
  118. flexget-3.14.0/flexget/components/managed_lists/lists/regexp_list/db.py +133 -0
  119. flexget-3.14.0/flexget/components/managed_lists/lists/regexp_list/regexp_list.py +117 -0
  120. flexget-3.14.0/flexget/components/managed_lists/lists/sonarr_list.py +302 -0
  121. flexget-3.14.0/flexget/components/managed_lists/lists/subtitle_list.py +429 -0
  122. flexget-3.14.0/flexget/components/managed_lists/lists/thetvdb_list.py +156 -0
  123. flexget-3.14.0/flexget/components/managed_lists/lists/yaml_list.py +190 -0
  124. flexget-3.14.0/flexget/components/notify/__init__.py +0 -0
  125. flexget-3.14.0/flexget/components/notify/notification_framework.py +134 -0
  126. flexget-3.14.0/flexget/components/notify/notifiers/__init__.py +0 -0
  127. flexget-3.14.0/flexget/components/notify/notifiers/bark.py +93 -0
  128. flexget-3.14.0/flexget/components/notify/notifiers/cronitor.py +94 -0
  129. flexget-3.14.0/flexget/components/notify/notifiers/discord.py +205 -0
  130. flexget-3.14.0/flexget/components/notify/notifiers/email.py +200 -0
  131. flexget-3.14.0/flexget/components/notify/notifiers/gotify.py +80 -0
  132. flexget-3.14.0/flexget/components/notify/notifiers/ifttt.py +85 -0
  133. flexget-3.14.0/flexget/components/notify/notifiers/join.py +101 -0
  134. flexget-3.14.0/flexget/components/notify/notifiers/matrix.py +79 -0
  135. flexget-3.14.0/flexget/components/notify/notifiers/microsoftteams.py +55 -0
  136. flexget-3.14.0/flexget/components/notify/notifiers/mqtt.py +250 -0
  137. flexget-3.14.0/flexget/components/notify/notifiers/notifymyandroid.py +91 -0
  138. flexget-3.14.0/flexget/components/notify/notifiers/ntfysh.py +82 -0
  139. flexget-3.14.0/flexget/components/notify/notifiers/prowl.py +90 -0
  140. flexget-3.14.0/flexget/components/notify/notifiers/pushalot.py +83 -0
  141. flexget-3.14.0/flexget/components/notify/notifiers/pushbullet.py +142 -0
  142. flexget-3.14.0/flexget/components/notify/notifiers/pushover.py +142 -0
  143. flexget-3.14.0/flexget/components/notify/notifiers/pushsafer.py +108 -0
  144. flexget-3.14.0/flexget/components/notify/notifiers/rapidpush.py +92 -0
  145. flexget-3.14.0/flexget/components/notify/notifiers/slack.py +128 -0
  146. flexget-3.14.0/flexget/components/notify/notifiers/sms_ru.py +76 -0
  147. flexget-3.14.0/flexget/components/notify/notifiers/telegram.py +519 -0
  148. flexget-3.14.0/flexget/components/notify/notifiers/toast.py +198 -0
  149. flexget-3.14.0/flexget/components/notify/notifiers/xmpp.py +94 -0
  150. flexget-3.14.0/flexget/components/notify/notify.py +174 -0
  151. flexget-3.14.0/flexget/components/parsing/__init__.py +0 -0
  152. flexget-3.14.0/flexget/components/parsing/parsers/__init__.py +0 -0
  153. flexget-3.14.0/flexget/components/parsing/parsers/parser_common.py +198 -0
  154. flexget-3.14.0/flexget/components/parsing/parsers/parser_guessit.py +452 -0
  155. flexget-3.14.0/flexget/components/parsing/parsers/parser_internal.py +81 -0
  156. flexget-3.14.0/flexget/components/parsing/plugin_parsing.py +101 -0
  157. flexget-3.14.0/flexget/components/pending_approval/__init__.py +0 -0
  158. flexget-3.14.0/flexget/components/pending_approval/api.py +219 -0
  159. flexget-3.14.0/flexget/components/pending_approval/cli.py +132 -0
  160. flexget-3.14.0/flexget/components/pending_approval/db.py +99 -0
  161. flexget-3.14.0/flexget/components/pending_approval/pending_approval.py +79 -0
  162. flexget-3.14.0/flexget/components/rejected/__init__.py +0 -0
  163. flexget-3.14.0/flexget/components/rejected/api.py +166 -0
  164. flexget-3.14.0/flexget/components/rejected/cli.py +48 -0
  165. flexget-3.14.0/flexget/components/rejected/db.py +85 -0
  166. flexget-3.14.0/flexget/components/rejected/remember_rejected.py +129 -0
  167. flexget-3.14.0/flexget/components/scheduler/__init__.py +0 -0
  168. flexget-3.14.0/flexget/components/scheduler/api.py +199 -0
  169. flexget-3.14.0/flexget/components/scheduler/scheduler.py +198 -0
  170. flexget-3.14.0/flexget/components/seen/__init__.py +0 -0
  171. flexget-3.14.0/flexget/components/seen/api.py +180 -0
  172. flexget-3.14.0/flexget/components/seen/cli.py +178 -0
  173. flexget-3.14.0/flexget/components/seen/db.py +304 -0
  174. flexget-3.14.0/flexget/components/seen/seen.py +155 -0
  175. flexget-3.14.0/flexget/components/seen/seen_info_hash.py +47 -0
  176. flexget-3.14.0/flexget/components/seen/seen_movies.py +77 -0
  177. flexget-3.14.0/flexget/components/series/__init__.py +0 -0
  178. flexget-3.14.0/flexget/components/series/all_series.py +60 -0
  179. flexget-3.14.0/flexget/components/series/api.py +1231 -0
  180. flexget-3.14.0/flexget/components/series/cli.py +430 -0
  181. flexget-3.14.0/flexget/components/series/configure_series.py +97 -0
  182. flexget-3.14.0/flexget/components/series/db.py +1553 -0
  183. flexget-3.14.0/flexget/components/series/gen_series.py +80 -0
  184. flexget-3.14.0/flexget/components/series/internal_estimator.py +64 -0
  185. flexget-3.14.0/flexget/components/series/metainfo_series.py +63 -0
  186. flexget-3.14.0/flexget/components/series/next_series_episodes.py +297 -0
  187. flexget-3.14.0/flexget/components/series/next_series_seasons.py +250 -0
  188. flexget-3.14.0/flexget/components/series/series.py +1234 -0
  189. flexget-3.14.0/flexget/components/series/series_begin.py +50 -0
  190. flexget-3.14.0/flexget/components/series/series_premiere.py +94 -0
  191. flexget-3.14.0/flexget/components/series/series_remove.py +57 -0
  192. flexget-3.14.0/flexget/components/series/utils.py +13 -0
  193. flexget-3.14.0/flexget/components/sites/__init__.py +0 -0
  194. flexget-3.14.0/flexget/components/sites/sites/__init__.py +0 -0
  195. flexget-3.14.0/flexget/components/sites/sites/allyoulike.py +110 -0
  196. flexget-3.14.0/flexget/components/sites/sites/alpharatio.py +334 -0
  197. flexget-3.14.0/flexget/components/sites/sites/animeindex.py +30 -0
  198. flexget-3.14.0/flexget/components/sites/sites/anirena.py +21 -0
  199. flexget-3.14.0/flexget/components/sites/sites/archetorrent.py +30 -0
  200. flexget-3.14.0/flexget/components/sites/sites/argenteam.py +108 -0
  201. flexget-3.14.0/flexget/components/sites/sites/awesomehd.py +150 -0
  202. flexget-3.14.0/flexget/components/sites/sites/bakabt.py +43 -0
  203. flexget-3.14.0/flexget/components/sites/sites/btn.py +141 -0
  204. flexget-3.14.0/flexget/components/sites/sites/cinemageddon.py +24 -0
  205. flexget-3.14.0/flexget/components/sites/sites/cpasbien.py +146 -0
  206. flexget-3.14.0/flexget/components/sites/sites/deadfrog.py +45 -0
  207. flexget-3.14.0/flexget/components/sites/sites/descargas2020.py +141 -0
  208. flexget-3.14.0/flexget/components/sites/sites/ettv.py +46 -0
  209. flexget-3.14.0/flexget/components/sites/sites/eztv.py +125 -0
  210. flexget-3.14.0/flexget/components/sites/sites/filelist.py +282 -0
  211. flexget-3.14.0/flexget/components/sites/sites/filelist_api.py +165 -0
  212. flexget-3.14.0/flexget/components/sites/sites/frenchtorrentdb.py +58 -0
  213. flexget-3.14.0/flexget/components/sites/sites/fuzer.py +169 -0
  214. flexget-3.14.0/flexget/components/sites/sites/google_cse.py +90 -0
  215. flexget-3.14.0/flexget/components/sites/sites/hebits.py +154 -0
  216. flexget-3.14.0/flexget/components/sites/sites/hliang.py +48 -0
  217. flexget-3.14.0/flexget/components/sites/sites/horriblesubs.py +107 -0
  218. flexget-3.14.0/flexget/components/sites/sites/iptorrents.py +223 -0
  219. flexget-3.14.0/flexget/components/sites/sites/koreus.py +41 -0
  220. flexget-3.14.0/flexget/components/sites/sites/limetorrents.py +139 -0
  221. flexget-3.14.0/flexget/components/sites/sites/lostfilm.py +603 -0
  222. flexget-3.14.0/flexget/components/sites/sites/magnetdl.py +159 -0
  223. flexget-3.14.0/flexget/components/sites/sites/morethantv.py +328 -0
  224. flexget-3.14.0/flexget/components/sites/sites/ncore.py +134 -0
  225. flexget-3.14.0/flexget/components/sites/sites/newtorrents.py +139 -0
  226. flexget-3.14.0/flexget/components/sites/sites/newznab.py +159 -0
  227. flexget-3.14.0/flexget/components/sites/sites/nnmclub.py +37 -0
  228. flexget-3.14.0/flexget/components/sites/sites/nyaa.py +120 -0
  229. flexget-3.14.0/flexget/components/sites/sites/passthepopcorn.py +263 -0
  230. flexget-3.14.0/flexget/components/sites/sites/piratebay.py +196 -0
  231. flexget-3.14.0/flexget/components/sites/sites/ptn.py +151 -0
  232. flexget-3.14.0/flexget/components/sites/sites/redirect.py +61 -0
  233. flexget-3.14.0/flexget/components/sites/sites/rlsbb.py +179 -0
  234. flexget-3.14.0/flexget/components/sites/sites/rmz.py +107 -0
  235. flexget-3.14.0/flexget/components/sites/sites/rss.py +48 -0
  236. flexget-3.14.0/flexget/components/sites/sites/rutracker.py +175 -0
  237. flexget-3.14.0/flexget/components/sites/sites/serienjunkies.py +211 -0
  238. flexget-3.14.0/flexget/components/sites/sites/shortened.py +24 -0
  239. flexget-3.14.0/flexget/components/sites/sites/site_1337x.py +139 -0
  240. flexget-3.14.0/flexget/components/sites/sites/site_rutracker.py +58 -0
  241. flexget-3.14.0/flexget/components/sites/sites/solidtorrents.py +177 -0
  242. flexget-3.14.0/flexget/components/sites/sites/torrent_cache.py +58 -0
  243. flexget-3.14.0/flexget/components/sites/sites/torrentday.py +201 -0
  244. flexget-3.14.0/flexget/components/sites/sites/torrentleech.py +170 -0
  245. flexget-3.14.0/flexget/components/sites/sites/torrentz.py +128 -0
  246. flexget-3.14.0/flexget/components/sites/sites/wordpress.py +96 -0
  247. flexget-3.14.0/flexget/components/sites/sites/yts.py +77 -0
  248. flexget-3.14.0/flexget/components/sites/urlrewrite.py +79 -0
  249. flexget-3.14.0/flexget/components/sites/urlrewrite_search.py +93 -0
  250. flexget-3.14.0/flexget/components/sites/urlrewriting.py +125 -0
  251. flexget-3.14.0/flexget/components/sites/utils.py +41 -0
  252. flexget-3.14.0/flexget/components/status/__init__.py +0 -0
  253. flexget-3.14.0/flexget/components/status/api.py +273 -0
  254. flexget-3.14.0/flexget/components/status/cli.py +129 -0
  255. flexget-3.14.0/flexget/components/status/db.py +176 -0
  256. flexget-3.14.0/flexget/components/status/status.py +60 -0
  257. flexget-3.14.0/flexget/components/thetvdb/__init__.py +0 -0
  258. flexget-3.14.0/flexget/components/thetvdb/api.py +265 -0
  259. flexget-3.14.0/flexget/components/thetvdb/api_tvdb.py +805 -0
  260. flexget-3.14.0/flexget/components/thetvdb/thetvdb_lookup.py +220 -0
  261. flexget-3.14.0/flexget/components/tmdb/__init__.py +0 -0
  262. flexget-3.14.0/flexget/components/tmdb/api.py +148 -0
  263. flexget-3.14.0/flexget/components/tmdb/api_tmdb.py +410 -0
  264. flexget-3.14.0/flexget/components/tmdb/tmdb_lookup.py +107 -0
  265. flexget-3.14.0/flexget/components/trakt/__init__.py +0 -0
  266. flexget-3.14.0/flexget/components/trakt/api.py +230 -0
  267. flexget-3.14.0/flexget/components/trakt/api_trakt.py +428 -0
  268. flexget-3.14.0/flexget/components/trakt/cli.py +129 -0
  269. flexget-3.14.0/flexget/components/trakt/db.py +1131 -0
  270. flexget-3.14.0/flexget/components/trakt/next_trakt_episodes.py +167 -0
  271. flexget-3.14.0/flexget/components/trakt/trakt_calendar.py +153 -0
  272. flexget-3.14.0/flexget/components/trakt/trakt_list.py +516 -0
  273. flexget-3.14.0/flexget/components/trakt/trakt_lookup.py +378 -0
  274. flexget-3.14.0/flexget/components/tvmaze/__init__.py +0 -0
  275. flexget-3.14.0/flexget/components/tvmaze/api.py +188 -0
  276. flexget-3.14.0/flexget/components/tvmaze/api_tvmaze.py +731 -0
  277. flexget-3.14.0/flexget/components/tvmaze/tvmaze_lookup.py +222 -0
  278. flexget-3.14.0/flexget/components/variables/__init__.py +0 -0
  279. flexget-3.14.0/flexget/components/variables/api.py +49 -0
  280. flexget-3.14.0/flexget/components/variables/variables.py +122 -0
  281. flexget-3.14.0/flexget/config_schema.py +543 -0
  282. flexget-3.14.0/flexget/db_schema.py +270 -0
  283. flexget-3.14.0/flexget/entry.py +442 -0
  284. flexget-3.14.0/flexget/event.py +112 -0
  285. flexget-3.14.0/flexget/ipc.py +196 -0
  286. flexget-3.14.0/flexget/log.py +211 -0
  287. flexget-3.14.0/flexget/manager.py +1072 -0
  288. flexget-3.14.0/flexget/options.py +581 -0
  289. flexget-3.14.0/flexget/plugin.py +659 -0
  290. flexget-3.14.0/flexget/plugins/README.md +5 -0
  291. flexget-3.14.0/flexget/plugins/__init__.py +1 -0
  292. flexget-3.14.0/flexget/plugins/cli/__init__.py +1 -0
  293. flexget-3.14.0/flexget/plugins/cli/check.py +172 -0
  294. flexget-3.14.0/flexget/plugins/cli/cli_config.py +69 -0
  295. flexget-3.14.0/flexget/plugins/cli/database.py +83 -0
  296. flexget-3.14.0/flexget/plugins/cli/debug_info.py +24 -0
  297. flexget-3.14.0/flexget/plugins/cli/doc.py +56 -0
  298. flexget-3.14.0/flexget/plugins/cli/explain_sql.py +52 -0
  299. flexget-3.14.0/flexget/plugins/cli/filters.py +29 -0
  300. flexget-3.14.0/flexget/plugins/cli/inject.py +91 -0
  301. flexget-3.14.0/flexget/plugins/cli/perf_tests.py +81 -0
  302. flexget-3.14.0/flexget/plugins/cli/performance.py +92 -0
  303. flexget-3.14.0/flexget/plugins/cli/plugins.py +54 -0
  304. flexget-3.14.0/flexget/plugins/cli/templates.py +41 -0
  305. flexget-3.14.0/flexget/plugins/cli/try_regexp.py +87 -0
  306. flexget-3.14.0/flexget/plugins/cli/web.py +36 -0
  307. flexget-3.14.0/flexget/plugins/cli/wiki_qualities.py +31 -0
  308. flexget-3.14.0/flexget/plugins/cli/win32_service.py +84 -0
  309. flexget-3.14.0/flexget/plugins/clients/__init__.py +0 -0
  310. flexget-3.14.0/flexget/plugins/clients/aria2.py +325 -0
  311. flexget-3.14.0/flexget/plugins/clients/deluge.py +726 -0
  312. flexget-3.14.0/flexget/plugins/clients/nzbget.py +64 -0
  313. flexget-3.14.0/flexget/plugins/clients/pyload.py +279 -0
  314. flexget-3.14.0/flexget/plugins/clients/qbittorrent.py +420 -0
  315. flexget-3.14.0/flexget/plugins/clients/rtorrent.py +824 -0
  316. flexget-3.14.0/flexget/plugins/clients/transmission.py +939 -0
  317. flexget-3.14.0/flexget/plugins/daemon/__init__.py +1 -0
  318. flexget-3.14.0/flexget/plugins/daemon/web_server.py +128 -0
  319. flexget-3.14.0/flexget/plugins/filter/__init__.py +1 -0
  320. flexget-3.14.0/flexget/plugins/filter/abort_if_exists.py +42 -0
  321. flexget-3.14.0/flexget/plugins/filter/accept_all.py +28 -0
  322. flexget-3.14.0/flexget/plugins/filter/age.py +82 -0
  323. flexget-3.14.0/flexget/plugins/filter/best_quality.py +82 -0
  324. flexget-3.14.0/flexget/plugins/filter/content_filter.py +172 -0
  325. flexget-3.14.0/flexget/plugins/filter/content_size.py +98 -0
  326. flexget-3.14.0/flexget/plugins/filter/crossmatch.py +117 -0
  327. flexget-3.14.0/flexget/plugins/filter/delay.py +153 -0
  328. flexget-3.14.0/flexget/plugins/filter/duplicates.py +46 -0
  329. flexget-3.14.0/flexget/plugins/filter/exists.py +61 -0
  330. flexget-3.14.0/flexget/plugins/filter/exists_movie.py +214 -0
  331. flexget-3.14.0/flexget/plugins/filter/exists_series.py +140 -0
  332. flexget-3.14.0/flexget/plugins/filter/if_condition.py +96 -0
  333. flexget-3.14.0/flexget/plugins/filter/limit_new.py +48 -0
  334. flexget-3.14.0/flexget/plugins/filter/magnets.py +27 -0
  335. flexget-3.14.0/flexget/plugins/filter/only_new.py +35 -0
  336. flexget-3.14.0/flexget/plugins/filter/proper_movies.py +183 -0
  337. flexget-3.14.0/flexget/plugins/filter/quality.py +42 -0
  338. flexget-3.14.0/flexget/plugins/filter/regexp.py +240 -0
  339. flexget-3.14.0/flexget/plugins/filter/require_field.py +37 -0
  340. flexget-3.14.0/flexget/plugins/filter/rottentomatoes.py +234 -0
  341. flexget-3.14.0/flexget/plugins/filter/thetvdb.py +232 -0
  342. flexget-3.14.0/flexget/plugins/filter/timeframe.py +208 -0
  343. flexget-3.14.0/flexget/plugins/filter/unique.py +83 -0
  344. flexget-3.14.0/flexget/plugins/filter/upgrade.py +234 -0
  345. flexget-3.14.0/flexget/plugins/generic/__init__.py +1 -0
  346. flexget-3.14.0/flexget/plugins/generic/cron_env.py +38 -0
  347. flexget-3.14.0/flexget/plugins/generic/db_analyze.py +13 -0
  348. flexget-3.14.0/flexget/plugins/generic/db_vacuum.py +30 -0
  349. flexget-3.14.0/flexget/plugins/generic/log_start.py +26 -0
  350. flexget-3.14.0/flexget/plugins/generic/urlfix.py +32 -0
  351. flexget-3.14.0/flexget/plugins/generic/welcome.py +46 -0
  352. flexget-3.14.0/flexget/plugins/input/__init__.py +1 -0
  353. flexget-3.14.0/flexget/plugins/input/anidb_list.py +135 -0
  354. flexget-3.14.0/flexget/plugins/input/anilist.py +281 -0
  355. flexget-3.14.0/flexget/plugins/input/apple_trailers.py +176 -0
  356. flexget-3.14.0/flexget/plugins/input/betaseries_list.py +201 -0
  357. flexget-3.14.0/flexget/plugins/input/discover.py +327 -0
  358. flexget-3.14.0/flexget/plugins/input/filesystem.py +219 -0
  359. flexget-3.14.0/flexget/plugins/input/filmweb_watchlist.py +106 -0
  360. flexget-3.14.0/flexget/plugins/input/from_piratebay.py +193 -0
  361. flexget-3.14.0/flexget/plugins/input/from_task.py +42 -0
  362. flexget-3.14.0/flexget/plugins/input/from_telegram.py +226 -0
  363. flexget-3.14.0/flexget/plugins/input/gazelle.py +486 -0
  364. flexget-3.14.0/flexget/plugins/input/generate.py +41 -0
  365. flexget-3.14.0/flexget/plugins/input/html.py +309 -0
  366. flexget-3.14.0/flexget/plugins/input/input_csv.py +78 -0
  367. flexget-3.14.0/flexget/plugins/input/inputs.py +71 -0
  368. flexget-3.14.0/flexget/plugins/input/json.py +81 -0
  369. flexget-3.14.0/flexget/plugins/input/kitsu.py +164 -0
  370. flexget-3.14.0/flexget/plugins/input/letterboxd.py +147 -0
  371. flexget-3.14.0/flexget/plugins/input/limit.py +50 -0
  372. flexget-3.14.0/flexget/plugins/input/medusa.py +100 -0
  373. flexget-3.14.0/flexget/plugins/input/mock.py +53 -0
  374. flexget-3.14.0/flexget/plugins/input/my_anime_list.py +122 -0
  375. flexget-3.14.0/flexget/plugins/input/myepisodes_list.py +109 -0
  376. flexget-3.14.0/flexget/plugins/input/next_sonarr_episodes.py +137 -0
  377. flexget-3.14.0/flexget/plugins/input/npo_watchlist.py +338 -0
  378. flexget-3.14.0/flexget/plugins/input/parameterize.py +56 -0
  379. flexget-3.14.0/flexget/plugins/input/plex.py +419 -0
  380. flexget-3.14.0/flexget/plugins/input/pogcal.py +72 -0
  381. flexget-3.14.0/flexget/plugins/input/regexp_parse.py +215 -0
  382. flexget-3.14.0/flexget/plugins/input/rlslog.py +122 -0
  383. flexget-3.14.0/flexget/plugins/input/rottentomatoes_list.py +90 -0
  384. flexget-3.14.0/flexget/plugins/input/rss.py +589 -0
  385. flexget-3.14.0/flexget/plugins/input/sceper.py +106 -0
  386. flexget-3.14.0/flexget/plugins/input/sickbeard.py +155 -0
  387. flexget-3.14.0/flexget/plugins/input/tail.py +188 -0
  388. flexget-3.14.0/flexget/plugins/input/text.py +141 -0
  389. flexget-3.14.0/flexget/plugins/input/torznab.py +283 -0
  390. flexget-3.14.0/flexget/plugins/input/twitterfeed.py +169 -0
  391. flexget-3.14.0/flexget/plugins/internal/__init__.py +4 -0
  392. flexget-3.14.0/flexget/plugins/internal/api_bluray.py +279 -0
  393. flexget-3.14.0/flexget/plugins/internal/api_rottentomatoes.py +633 -0
  394. flexget-3.14.0/flexget/plugins/internal/change_warn.py +116 -0
  395. flexget-3.14.0/flexget/plugins/metainfo/__init__.py +1 -0
  396. flexget-3.14.0/flexget/plugins/metainfo/assume_quality.py +116 -0
  397. flexget-3.14.0/flexget/plugins/metainfo/bluray_lookup.py +78 -0
  398. flexget-3.14.0/flexget/plugins/metainfo/content_size.py +72 -0
  399. flexget-3.14.0/flexget/plugins/metainfo/media_id.py +56 -0
  400. flexget-3.14.0/flexget/plugins/metainfo/metainfo_movie.py +56 -0
  401. flexget-3.14.0/flexget/plugins/metainfo/nfo_lookup.py +259 -0
  402. flexget-3.14.0/flexget/plugins/metainfo/nzb_size.py +65 -0
  403. flexget-3.14.0/flexget/plugins/metainfo/quality.py +52 -0
  404. flexget-3.14.0/flexget/plugins/metainfo/rottentomatoes_lookup.py +135 -0
  405. flexget-3.14.0/flexget/plugins/metainfo/subtitles_check.py +85 -0
  406. flexget-3.14.0/flexget/plugins/metainfo/task.py +27 -0
  407. flexget-3.14.0/flexget/plugins/modify/__init__.py +1 -0
  408. flexget-3.14.0/flexget/plugins/modify/extension.py +33 -0
  409. flexget-3.14.0/flexget/plugins/modify/headers.py +33 -0
  410. flexget-3.14.0/flexget/plugins/modify/manipulate.py +159 -0
  411. flexget-3.14.0/flexget/plugins/modify/path_by_ext.py +53 -0
  412. flexget-3.14.0/flexget/plugins/modify/path_by_space.py +149 -0
  413. flexget-3.14.0/flexget/plugins/modify/plugin_priority.py +56 -0
  414. flexget-3.14.0/flexget/plugins/modify/regex_extract.py +86 -0
  415. flexget-3.14.0/flexget/plugins/modify/reorder_quality.py +79 -0
  416. flexget-3.14.0/flexget/plugins/modify/set_field.py +68 -0
  417. flexget-3.14.0/flexget/plugins/modify/sort_by.py +90 -0
  418. flexget-3.14.0/flexget/plugins/modify/sort_by_weight.py +277 -0
  419. flexget-3.14.0/flexget/plugins/operate/__init__.py +1 -0
  420. flexget-3.14.0/flexget/plugins/operate/abort.py +20 -0
  421. flexget-3.14.0/flexget/plugins/operate/cfscraper.py +35 -0
  422. flexget-3.14.0/flexget/plugins/operate/cookies.py +190 -0
  423. flexget-3.14.0/flexget/plugins/operate/debug_db_sessions.py +108 -0
  424. flexget-3.14.0/flexget/plugins/operate/debug_warnings.py +24 -0
  425. flexget-3.14.0/flexget/plugins/operate/digest.py +157 -0
  426. flexget-3.14.0/flexget/plugins/operate/disable.py +71 -0
  427. flexget-3.14.0/flexget/plugins/operate/disable_phases.py +30 -0
  428. flexget-3.14.0/flexget/plugins/operate/domain_delay.py +29 -0
  429. flexget-3.14.0/flexget/plugins/operate/entry_trace.py +39 -0
  430. flexget-3.14.0/flexget/plugins/operate/formlogin.py +98 -0
  431. flexget-3.14.0/flexget/plugins/operate/free_space.py +121 -0
  432. flexget-3.14.0/flexget/plugins/operate/include.py +63 -0
  433. flexget-3.14.0/flexget/plugins/operate/interval.py +63 -0
  434. flexget-3.14.0/flexget/plugins/operate/log_filter.py +107 -0
  435. flexget-3.14.0/flexget/plugins/operate/manual.py +39 -0
  436. flexget-3.14.0/flexget/plugins/operate/max_reruns.py +40 -0
  437. flexget-3.14.0/flexget/plugins/operate/pathscrub.py +30 -0
  438. flexget-3.14.0/flexget/plugins/operate/priority.py +24 -0
  439. flexget-3.14.0/flexget/plugins/operate/proxy.py +49 -0
  440. flexget-3.14.0/flexget/plugins/operate/rerun.py +29 -0
  441. flexget-3.14.0/flexget/plugins/operate/run_task.py +67 -0
  442. flexget-3.14.0/flexget/plugins/operate/sequence.py +49 -0
  443. flexget-3.14.0/flexget/plugins/operate/sleep.py +97 -0
  444. flexget-3.14.0/flexget/plugins/operate/spy_headers.py +46 -0
  445. flexget-3.14.0/flexget/plugins/operate/template.py +137 -0
  446. flexget-3.14.0/flexget/plugins/operate/verbose.py +76 -0
  447. flexget-3.14.0/flexget/plugins/operate/verbose_details.py +54 -0
  448. flexget-3.14.0/flexget/plugins/operate/verify_ssl_certificates.py +38 -0
  449. flexget-3.14.0/flexget/plugins/operate/version_checker.py +114 -0
  450. flexget-3.14.0/flexget/plugins/output/__init__.py +1 -0
  451. flexget-3.14.0/flexget/plugins/output/download.py +558 -0
  452. flexget-3.14.0/flexget/plugins/output/download_auth.py +49 -0
  453. flexget-3.14.0/flexget/plugins/output/dump.py +148 -0
  454. flexget-3.14.0/flexget/plugins/output/dump_config.py +53 -0
  455. flexget-3.14.0/flexget/plugins/output/exec.py +226 -0
  456. flexget-3.14.0/flexget/plugins/output/file_operations.py +407 -0
  457. flexget-3.14.0/flexget/plugins/output/html.py +46 -0
  458. flexget-3.14.0/flexget/plugins/output/memusage.py +75 -0
  459. flexget-3.14.0/flexget/plugins/output/mock_output.py +32 -0
  460. flexget-3.14.0/flexget/plugins/output/rss.py +308 -0
  461. flexget-3.14.0/flexget/plugins/output/rtorrent_magnet.py +68 -0
  462. flexget-3.14.0/flexget/plugins/output/sabnzbd.py +110 -0
  463. flexget-3.14.0/flexget/plugins/output/sns.py +122 -0
  464. flexget-3.14.0/flexget/plugins/output/subtitles.py +147 -0
  465. flexget-3.14.0/flexget/plugins/output/subtitles_periscope.py +108 -0
  466. flexget-3.14.0/flexget/plugins/output/subtitles_subliminal.py +275 -0
  467. flexget-3.14.0/flexget/plugins/output/symlink.py +146 -0
  468. flexget-3.14.0/flexget/plugins/output/utorrent.py +179 -0
  469. flexget-3.14.0/flexget/plugins/services/__init__.py +1 -0
  470. flexget-3.14.0/flexget/plugins/services/kodi_library.py +79 -0
  471. flexget-3.14.0/flexget/plugins/services/myepisodes.py +327 -0
  472. flexget-3.14.0/flexget/plugins/services/pogcal_acquired.py +119 -0
  473. flexget-3.14.0/flexget/resources/flexget.png +0 -0
  474. flexget-3.14.0/flexget/task.py +787 -0
  475. flexget-3.14.0/flexget/task_queue.py +106 -0
  476. flexget-3.14.0/flexget/templates/entry/default.template +8 -0
  477. flexget-3.14.0/flexget/templates/task/default.template +17 -0
  478. flexget-3.14.0/flexget/templates/task/html.template +353 -0
  479. flexget-3.14.0/flexget/templates/task/rss.template +28 -0
  480. flexget-3.14.0/flexget/terminal.py +240 -0
  481. flexget-3.14.0/flexget/tests/LICENSE-resume.torrent +1 -0
  482. flexget-3.14.0/flexget/tests/LICENSE.torrent +1 -0
  483. flexget-3.14.0/flexget/tests/__init__.py +0 -0
  484. flexget-3.14.0/flexget/tests/api_tests/__init__.py +0 -0
  485. flexget-3.14.0/flexget/tests/api_tests/raw_config.yml +6 -0
  486. flexget-3.14.0/flexget/tests/api_tests/test_api_validator.py +25 -0
  487. flexget-3.14.0/flexget/tests/api_tests/test_authentication_api.py +26 -0
  488. flexget-3.14.0/flexget/tests/api_tests/test_cached_api.py +27 -0
  489. flexget-3.14.0/flexget/tests/api_tests/test_database_api.py +41 -0
  490. flexget-3.14.0/flexget/tests/api_tests/test_entry_list_api.py +402 -0
  491. flexget-3.14.0/flexget/tests/api_tests/test_etag.py +61 -0
  492. flexget-3.14.0/flexget/tests/api_tests/test_execute_api.py +224 -0
  493. flexget-3.14.0/flexget/tests/api_tests/test_failed_api.py +251 -0
  494. flexget-3.14.0/flexget/tests/api_tests/test_format_checker_api.py +234 -0
  495. flexget-3.14.0/flexget/tests/api_tests/test_history_api.py +230 -0
  496. flexget-3.14.0/flexget/tests/api_tests/test_imdb_lookup_api.py +43 -0
  497. flexget-3.14.0/flexget/tests/api_tests/test_movie_list_api.py +456 -0
  498. flexget-3.14.0/flexget/tests/api_tests/test_pending_list_api.py +503 -0
  499. flexget-3.14.0/flexget/tests/api_tests/test_plugins_api.py +72 -0
  500. flexget-3.14.0/flexget/tests/api_tests/test_rejected_api.py +303 -0
  501. flexget-3.14.0/flexget/tests/api_tests/test_schedule_api.py +333 -0
  502. flexget-3.14.0/flexget/tests/api_tests/test_seen_api.py +346 -0
  503. flexget-3.14.0/flexget/tests/api_tests/test_series_api.py +1954 -0
  504. flexget-3.14.0/flexget/tests/api_tests/test_server_api.py +131 -0
  505. flexget-3.14.0/flexget/tests/api_tests/test_status_api.py +329 -0
  506. flexget-3.14.0/flexget/tests/api_tests/test_tasks_api.py +267 -0
  507. flexget-3.14.0/flexget/tests/api_tests/test_tmdb_lookup.py +63 -0
  508. flexget-3.14.0/flexget/tests/api_tests/test_trakt_lookup_api.py +309 -0
  509. flexget-3.14.0/flexget/tests/api_tests/test_tvdb_lookup_api.py +290 -0
  510. flexget-3.14.0/flexget/tests/api_tests/test_tvmaze_lookup_api.py +137 -0
  511. flexget-3.14.0/flexget/tests/api_tests/test_user_api.py +50 -0
  512. flexget-3.14.0/flexget/tests/api_tests/test_variables_api.py +40 -0
  513. flexget-3.14.0/flexget/tests/archives/invalid.zip +1 -0
  514. flexget-3.14.0/flexget/tests/archives/test_rar.rar +0 -0
  515. flexget-3.14.0/flexget/tests/archives/test_zip.zip +0 -0
  516. flexget-3.14.0/flexget/tests/config_utf8.yml +4 -0
  517. flexget-3.14.0/flexget/tests/conftest.py +472 -0
  518. flexget-3.14.0/flexget/tests/cookies.txt +5 -0
  519. flexget-3.14.0/flexget/tests/couchpotato_movie_list_test_response.json +3845 -0
  520. flexget-3.14.0/flexget/tests/couchpotato_quality_profile_test_response.json +427 -0
  521. flexget-3.14.0/flexget/tests/exec.py +25 -0
  522. flexget-3.14.0/flexget/tests/external_plugins/external_plugin.py +15 -0
  523. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/dir1/dir4/dir6/dir7/dir8/file11.txt +0 -0
  524. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/dir1/dir4/file4.avi +0 -0
  525. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/dir1/file3.xlsx +0 -0
  526. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/dir2/file5.mkv +0 -0
  527. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/file1.mkv +0 -0
  528. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test1/file2.txt +0 -0
  529. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test2/file10.mkv +0 -0
  530. flexget-3.14.0/flexget/tests/filesystem_test_dir/Test3//305/241 dir//305/222 file.txt +0 -0
  531. flexget-3.14.0/flexget/tests/movie.mkv +1 -0
  532. flexget-3.14.0/flexget/tests/multi.torrent +0 -0
  533. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_1/A Bela e a Fera.mkv +0 -0
  534. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_1/A Bela e a Fera.nfo +3 -0
  535. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_10/A Bela e a Fera.mkv +0 -0
  536. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_10/A Bela e a Fera.nfo +29 -0
  537. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_11/A Bela e a Fera.mkv +0 -0
  538. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_11/A Bela e a Fera.nfo +76 -0
  539. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_12/A Bela e a Fera.mkv +0 -0
  540. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_12/A Bela e a Fera.nfo +5 -0
  541. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_13/A Bela e a Fera.mkv +0 -0
  542. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_13/A Bela e a Fera.nfo +5 -0
  543. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_2/Bela e Fera.mkv +0 -0
  544. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_2/Bela e Fera.nfo +4 -0
  545. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_3/A Bela e a Fera.mkv +0 -0
  546. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_3/A Bela e a Fera.nfo +5 -0
  547. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_4/A Bela e a Fera.mkv +0 -0
  548. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_4/A Bela e a Fera.nfo +5 -0
  549. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_5/A Bela e a Fera.mkv +0 -0
  550. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_5/A Bela e a Fera.nfo +5 -0
  551. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_6/A Bela e a Fera.mkv +0 -0
  552. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_9/A Bela e a Fera.mkv +0 -0
  553. flexget-3.14.0/flexget/tests/nfo_lookup_test_dir/test_9/A Bela e a Fera.nfo +3 -0
  554. flexget-3.14.0/flexget/tests/notifiers/conftest.py +28 -0
  555. flexget-3.14.0/flexget/tests/notifiers/test_notify_abort.py +34 -0
  556. flexget-3.14.0/flexget/tests/notifiers/test_notify_entry.py +26 -0
  557. flexget-3.14.0/flexget/tests/notifiers/test_notify_task.py +49 -0
  558. flexget-3.14.0/flexget/tests/notifiers/test_pushover.py +27 -0
  559. flexget-3.14.0/flexget/tests/private.torrent +0 -0
  560. flexget-3.14.0/flexget/tests/rss.xml +94 -0
  561. flexget-3.14.0/flexget/tests/rss_escape.xml +51 -0
  562. flexget-3.14.0/flexget/tests/series.mkv +1 -0
  563. flexget-3.14.0/flexget/tests/subtitle_list_test_dir/Marvels.Jessica.Jones.S01E02-FlexGet.mkv +0 -0
  564. flexget-3.14.0/flexget/tests/subtitle_list_test_dir/The.Big.Bang.Theory.S09E09-FlexGet.en.srt +1 -0
  565. flexget-3.14.0/flexget/tests/subtitle_list_test_dir/The.Big.Bang.Theory.S09E09-FlexGet.mkv +0 -0
  566. flexget-3.14.0/flexget/tests/subtitle_list_test_dir/The.Walking.Dead.S06E08-FlexGet.mp4 +0 -0
  567. flexget-3.14.0/flexget/tests/test.torrent +0 -0
  568. flexget-3.14.0/flexget/tests/test_abort.py +17 -0
  569. flexget-3.14.0/flexget/tests/test_abort_if_exists.py +31 -0
  570. flexget-3.14.0/flexget/tests/test_archives.py +40 -0
  571. flexget-3.14.0/flexget/tests/test_argparse.py +61 -0
  572. flexget-3.14.0/flexget/tests/test_asciify.py +22 -0
  573. flexget-3.14.0/flexget/tests/test_assume_quality.py +142 -0
  574. flexget-3.14.0/flexget/tests/test_backlog.py +35 -0
  575. flexget-3.14.0/flexget/tests/test_best_quality.py +43 -0
  576. flexget-3.14.0/flexget/tests/test_cached_input.py +58 -0
  577. flexget-3.14.0/flexget/tests/test_condition.py +136 -0
  578. flexget-3.14.0/flexget/tests/test_config.py +26 -0
  579. flexget-3.14.0/flexget/tests/test_config_schema.py +251 -0
  580. flexget-3.14.0/flexget/tests/test_configure_series_betaseries_list.py +107 -0
  581. flexget-3.14.0/flexget/tests/test_content_filter.py +258 -0
  582. flexget-3.14.0/flexget/tests/test_content_size.py +115 -0
  583. flexget-3.14.0/flexget/tests/test_cookies.py +19 -0
  584. flexget-3.14.0/flexget/tests/test_couchpotato_list.py +114 -0
  585. flexget-3.14.0/flexget/tests/test_crossmatch.py +19 -0
  586. flexget-3.14.0/flexget/tests/test_decompress.py +146 -0
  587. flexget-3.14.0/flexget/tests/test_delay.py +29 -0
  588. flexget-3.14.0/flexget/tests/test_digest.py +95 -0
  589. flexget-3.14.0/flexget/tests/test_discover.py +282 -0
  590. flexget-3.14.0/flexget/tests/test_download.py +174 -0
  591. flexget-3.14.0/flexget/tests/test_duplicates.py +40 -0
  592. flexget-3.14.0/flexget/tests/test_entry_list.py +88 -0
  593. flexget-3.14.0/flexget/tests/test_exec.py +79 -0
  594. flexget-3.14.0/flexget/tests/test_exists_movie.py +217 -0
  595. flexget-3.14.0/flexget/tests/test_exists_series.py +183 -0
  596. flexget-3.14.0/flexget/tests/test_feed_control.py +76 -0
  597. flexget-3.14.0/flexget/tests/test_filesystem.py +230 -0
  598. flexget-3.14.0/flexget/tests/test_from_task.py +33 -0
  599. flexget-3.14.0/flexget/tests/test_headers.py +20 -0
  600. flexget-3.14.0/flexget/tests/test_html5lib.py +24 -0
  601. flexget-3.14.0/flexget/tests/test_imdb.py +357 -0
  602. flexget-3.14.0/flexget/tests/test_imdb_list_interface.py +67 -0
  603. flexget-3.14.0/flexget/tests/test_imdb_parser.py +90 -0
  604. flexget-3.14.0/flexget/tests/test_include.py +102 -0
  605. flexget-3.14.0/flexget/tests/test_input_sites.py +36 -0
  606. flexget-3.14.0/flexget/tests/test_inputs.py +35 -0
  607. flexget-3.14.0/flexget/tests/test_jinja_filters.py +126 -0
  608. flexget-3.14.0/flexget/tests/test_lazy_fields.py +42 -0
  609. flexget-3.14.0/flexget/tests/test_limit.py +40 -0
  610. flexget-3.14.0/flexget/tests/test_limit_new.py +20 -0
  611. flexget-3.14.0/flexget/tests/test_list_interface.py +325 -0
  612. flexget-3.14.0/flexget/tests/test_manipulate.py +82 -0
  613. flexget-3.14.0/flexget/tests/test_metainfo.py +283 -0
  614. flexget-3.14.0/flexget/tests/test_migrate.py +25 -0
  615. flexget-3.14.0/flexget/tests/test_misc.py +365 -0
  616. flexget-3.14.0/flexget/tests/test_move.py +22 -0
  617. flexget-3.14.0/flexget/tests/test_movie_list.py +320 -0
  618. flexget-3.14.0/flexget/tests/test_movieparser.py +72 -0
  619. flexget-3.14.0/flexget/tests/test_myepisodes.py +25 -0
  620. flexget-3.14.0/flexget/tests/test_next_series_episodes.py +637 -0
  621. flexget-3.14.0/flexget/tests/test_next_series_seasons.py +440 -0
  622. flexget-3.14.0/flexget/tests/test_nfo_lookup.py +353 -0
  623. flexget-3.14.0/flexget/tests/test_npo_watchlist.py +119 -0
  624. flexget-3.14.0/flexget/tests/test_only_new.py +38 -0
  625. flexget-3.14.0/flexget/tests/test_parameterize.py +25 -0
  626. flexget-3.14.0/flexget/tests/test_parsingapi.py +35 -0
  627. flexget-3.14.0/flexget/tests/test_path_by_space.py +148 -0
  628. flexget-3.14.0/flexget/tests/test_pathscrub.py +56 -0
  629. flexget-3.14.0/flexget/tests/test_pending_approval.py +35 -0
  630. flexget-3.14.0/flexget/tests/test_pending_list.py +102 -0
  631. flexget-3.14.0/flexget/tests/test_plex_watchlist.py +68 -0
  632. flexget-3.14.0/flexget/tests/test_plugin_interfaces.py +30 -0
  633. flexget-3.14.0/flexget/tests/test_pluginapi.py +87 -0
  634. flexget-3.14.0/flexget/tests/test_proper_movies.py +54 -0
  635. flexget-3.14.0/flexget/tests/test_qualities.py +273 -0
  636. flexget-3.14.0/flexget/tests/test_radarr_list.py +167 -0
  637. flexget-3.14.0/flexget/tests/test_regex_extract.py +69 -0
  638. flexget-3.14.0/flexget/tests/test_regexp.py +197 -0
  639. flexget-3.14.0/flexget/tests/test_regexp_list.py +46 -0
  640. flexget-3.14.0/flexget/tests/test_remember_rejected.py +35 -0
  641. flexget-3.14.0/flexget/tests/test_reorder_quality.py +47 -0
  642. flexget-3.14.0/flexget/tests/test_rottentomatoes.py +45 -0
  643. flexget-3.14.0/flexget/tests/test_rss.py +256 -0
  644. flexget-3.14.0/flexget/tests/test_rtorrent.py +486 -0
  645. flexget-3.14.0/flexget/tests/test_seen.py +200 -0
  646. flexget-3.14.0/flexget/tests/test_serialization.py +59 -0
  647. flexget-3.14.0/flexget/tests/test_series.py +2385 -0
  648. flexget-3.14.0/flexget/tests/test_series_premiere.py +137 -0
  649. flexget-3.14.0/flexget/tests/test_seriesparser.py +762 -0
  650. flexget-3.14.0/flexget/tests/test_sftp_download.py +150 -0
  651. flexget-3.14.0/flexget/tests/test_sftp_list.py +311 -0
  652. flexget-3.14.0/flexget/tests/test_sftp_server.key +27 -0
  653. flexget-3.14.0/flexget/tests/test_sftp_server.py +466 -0
  654. flexget-3.14.0/flexget/tests/test_sftp_upload.py +156 -0
  655. flexget-3.14.0/flexget/tests/test_sftp_user_key +39 -0
  656. flexget-3.14.0/flexget/tests/test_simple_persistence.py +28 -0
  657. flexget-3.14.0/flexget/tests/test_sns.py +66 -0
  658. flexget-3.14.0/flexget/tests/test_sonarr_list.py +159 -0
  659. flexget-3.14.0/flexget/tests/test_sort_by.py +167 -0
  660. flexget-3.14.0/flexget/tests/test_subtitle_list.py +440 -0
  661. flexget-3.14.0/flexget/tests/test_symlink.py +149 -0
  662. flexget-3.14.0/flexget/tests/test_task.py +27 -0
  663. flexget-3.14.0/flexget/tests/test_template.py +125 -0
  664. flexget-3.14.0/flexget/tests/test_thetvdb.py +471 -0
  665. flexget-3.14.0/flexget/tests/test_thetvdb_list.py +33 -0
  666. flexget-3.14.0/flexget/tests/test_timeframe.py +125 -0
  667. flexget-3.14.0/flexget/tests/test_tmdb.py +56 -0
  668. flexget-3.14.0/flexget/tests/test_torrent.py +347 -0
  669. flexget-3.14.0/flexget/tests/test_torrent_match.py +158 -0
  670. flexget-3.14.0/flexget/tests/test_trakt.py +628 -0
  671. flexget-3.14.0/flexget/tests/test_trakt_list_interface.py +233 -0
  672. flexget-3.14.0/flexget/tests/test_tvmaze.py +528 -0
  673. flexget-3.14.0/flexget/tests/test_unique.py +57 -0
  674. flexget-3.14.0/flexget/tests/test_upgrade.py +230 -0
  675. flexget-3.14.0/flexget/tests/test_urlfix.py +25 -0
  676. flexget-3.14.0/flexget/tests/test_urlrewriting.py +119 -0
  677. flexget-3.14.0/flexget/tests/test_utils.py +133 -0
  678. flexget-3.14.0/flexget/tests/test_variables.py +89 -0
  679. flexget-3.14.0/flexget/tests/test_wordpress.py +59 -0
  680. flexget-3.14.0/flexget/tests/test_yaml_list.py +179 -0
  681. flexget-3.14.0/flexget/tests/torrent_match_test_dir/multi_file_with_diff/video.mkv +1 -0
  682. flexget-3.14.0/flexget/tests/torrent_match_test_dir/multi_file_with_diff/video_1mb.mkv +0 -0
  683. flexget-3.14.0/flexget/tests/torrent_match_test_dir/torrent1/torrent1.mkv +1 -0
  684. flexget-3.14.0/flexget/tests/torrent_match_test_dir/torrent1.mkv +1 -0
  685. flexget-3.14.0/flexget/tests/torrent_match_test_dir/torrent1_wrong_size/torrent1.mkv +1 -0
  686. flexget-3.14.0/flexget/tests/torrent_match_test_dir/torrent2/sample/sample.mkv +1 -0
  687. flexget-3.14.0/flexget/tests/torrent_match_test_dir/torrent2/torrent2.mkv +1 -0
  688. flexget-3.14.0/flexget/tests/torrent_match_test_torrents/multi_file_with_diff.torrent +0 -0
  689. flexget-3.14.0/flexget/tests/torrent_match_test_torrents/torrent1.mkv.torrent +1 -0
  690. flexget-3.14.0/flexget/tests/torrent_match_test_torrents/torrent1_empty_name.torrent +1 -0
  691. flexget-3.14.0/flexget/tests/torrent_match_test_torrents/torrent2.torrent +1 -0
  692. flexget-3.14.0/flexget/tests/tvmaze_test_dir/shows/Marvel's Jessica Jones/Marvels.Jessica.Jones.S01E02.PROPER.720p.WEBRiP.x264-FlexGet.mkv +0 -0
  693. flexget-3.14.0/flexget/tests/tvmaze_test_dir/shows/Marvel's Jessica Jones/Marvels.Jessica.Jones.S01E03.720p.WEBRiP.x264-FlexGet.mkv +0 -0
  694. flexget-3.14.0/flexget/tests/tvmaze_test_dir/shows/The Flash (2014)/The.Flash.S02E04.1080p.WEB-DL.DD5.1.H.264-FlexGet.mkv +0 -0
  695. flexget-3.14.0/flexget/tests/tvmaze_test_dir/shows/The big bang theory/The.Big.Bang.Theory.S09E09.720p.HDTV.X264-FlexGet.mkv +0 -0
  696. flexget-3.14.0/flexget/tests/tvmaze_test_dir/shows/The walking dead/The.Walking.Dead.S06E08.Start.to.Finish-FlexGet.mp4 +0 -0
  697. flexget-3.14.0/flexget/tests/variables.yml +2 -0
  698. flexget-3.14.0/flexget/tray_icon.py +114 -0
  699. flexget-3.14.0/flexget/ui/__init__.py +0 -0
  700. flexget-3.14.0/flexget/ui/v1/.eslintignore +1 -0
  701. flexget-3.14.0/flexget/ui/v1/.eslintrc +74 -0
  702. flexget-3.14.0/flexget/ui/v1/README.rst +6 -0
  703. flexget-3.14.0/flexget/ui/v1/__init__.py +95 -0
  704. flexget-3.14.0/flexget/ui/v1/bower.json +65 -0
  705. flexget-3.14.0/flexget/ui/v1/gulp/build.js +93 -0
  706. flexget-3.14.0/flexget/ui/v1/gulp/inject.js +40 -0
  707. flexget-3.14.0/flexget/ui/v1/gulp/lint.js +27 -0
  708. flexget-3.14.0/flexget/ui/v1/gulp/proxy.js +32 -0
  709. flexget-3.14.0/flexget/ui/v1/gulp/scripts.js +13 -0
  710. flexget-3.14.0/flexget/ui/v1/gulp/server.js +43 -0
  711. flexget-3.14.0/flexget/ui/v1/gulp/styles.js +51 -0
  712. flexget-3.14.0/flexget/ui/v1/gulp/test.js +67 -0
  713. flexget-3.14.0/flexget/ui/v1/gulp/watch.js +39 -0
  714. flexget-3.14.0/flexget/ui/v1/gulpfile.js +19 -0
  715. flexget-3.14.0/flexget/ui/v1/karma.conf.js +85 -0
  716. flexget-3.14.0/flexget/ui/v1/load.failure.html +14 -0
  717. flexget-3.14.0/flexget/ui/v1/package.json +68 -0
  718. flexget-3.14.0/flexget/ui/v1/specs.html +291 -0
  719. flexget-3.14.0/flexget/ui/v1/src/app.html +117 -0
  720. flexget-3.14.0/flexget/ui/v1/src/app.loading.js +12 -0
  721. flexget-3.14.0/flexget/ui/v1/src/app.module.js +36 -0
  722. flexget-3.14.0/flexget/ui/v1/src/app.scss +42 -0
  723. flexget-3.14.0/flexget/ui/v1/src/app.utils.js +13 -0
  724. flexget-3.14.0/flexget/ui/v1/src/assets/icons/ic_movie_black_24px.svg +4 -0
  725. flexget-3.14.0/flexget/ui/v1/src/assets/images/header.png +0 -0
  726. flexget-3.14.0/flexget/ui/v1/src/blocks/error/_error-dialog.scss +9 -0
  727. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error-dialog.component.js +25 -0
  728. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error-dialog.component.spec.js +57 -0
  729. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error-dialog.tmpl.html +21 -0
  730. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error.module.js +10 -0
  731. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error.service.js +47 -0
  732. flexget-3.14.0/flexget/ui/v1/src/blocks/error/error.service.spec.js +25 -0
  733. flexget-3.14.0/flexget/ui/v1/src/blocks/exception/exception.module.js +9 -0
  734. flexget-3.14.0/flexget/ui/v1/src/blocks/exception/exception.service.js +38 -0
  735. flexget-3.14.0/flexget/ui/v1/src/blocks/exception/exception.service.spec.js +52 -0
  736. flexget-3.14.0/flexget/ui/v1/src/blocks/pagination/_pagination.scss +37 -0
  737. flexget-3.14.0/flexget/ui/v1/src/blocks/pagination/pagination.component.js +54 -0
  738. flexget-3.14.0/flexget/ui/v1/src/blocks/pagination/pagination.filter.js +20 -0
  739. flexget-3.14.0/flexget/ui/v1/src/blocks/pagination/pagination.module.js +9 -0
  740. flexget-3.14.0/flexget/ui/v1/src/blocks/pagination/pagination.tmpl.html +14 -0
  741. flexget-3.14.0/flexget/ui/v1/src/blocks/router/router-helper.module.js +9 -0
  742. flexget-3.14.0/flexget/ui/v1/src/blocks/router/router-helper.provider.js +91 -0
  743. flexget-3.14.0/flexget/ui/v1/src/blocks/router/router-helper.provider.spec.js +15 -0
  744. flexget-3.14.0/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.config.js +12 -0
  745. flexget-3.14.0/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.module.js +7 -0
  746. flexget-3.14.0/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.js +28 -0
  747. flexget-3.14.0/flexget/ui/v1/src/blocks/url-interceptor/url-interceptor.service.spec.js +47 -0
  748. flexget-3.14.0/flexget/ui/v1/src/components/404/404.component.js +22 -0
  749. flexget-3.14.0/flexget/ui/v1/src/components/404/404.component.spec.js +33 -0
  750. flexget-3.14.0/flexget/ui/v1/src/components/404/404.module.js +9 -0
  751. flexget-3.14.0/flexget/ui/v1/src/components/404/404.route.js +25 -0
  752. flexget-3.14.0/flexget/ui/v1/src/components/404/404.route.spec.js +38 -0
  753. flexget-3.14.0/flexget/ui/v1/src/components/404/404.tmpl.html +12 -0
  754. flexget-3.14.0/flexget/ui/v1/src/components/auth/_login.scss +8 -0
  755. flexget-3.14.0/flexget/ui/v1/src/components/auth/auth.config.js +54 -0
  756. flexget-3.14.0/flexget/ui/v1/src/components/auth/auth.config.spec.js +60 -0
  757. flexget-3.14.0/flexget/ui/v1/src/components/auth/auth.module.js +11 -0
  758. flexget-3.14.0/flexget/ui/v1/src/components/auth/auth.service.js +98 -0
  759. flexget-3.14.0/flexget/ui/v1/src/components/auth/auth.service.spec.js +115 -0
  760. flexget-3.14.0/flexget/ui/v1/src/components/auth/login.component.js +32 -0
  761. flexget-3.14.0/flexget/ui/v1/src/components/auth/login.component.spec.js +67 -0
  762. flexget-3.14.0/flexget/ui/v1/src/components/auth/login.route.js +41 -0
  763. flexget-3.14.0/flexget/ui/v1/src/components/auth/login.route.spec.js +31 -0
  764. flexget-3.14.0/flexget/ui/v1/src/components/auth/login.tmpl.html +24 -0
  765. flexget-3.14.0/flexget/ui/v1/src/components/components.module.js +16 -0
  766. flexget-3.14.0/flexget/ui/v1/src/components/core/core.config.js +26 -0
  767. flexget-3.14.0/flexget/ui/v1/src/components/core/core.module.js +12 -0
  768. flexget-3.14.0/flexget/ui/v1/src/components/core/core.provider.js +29 -0
  769. flexget-3.14.0/flexget/ui/v1/src/components/core/core.route.js +24 -0
  770. flexget-3.14.0/flexget/ui/v1/src/components/core/core.route.spec.js +15 -0
  771. flexget-3.14.0/flexget/ui/v1/src/components/database/_database.scss +5 -0
  772. flexget-3.14.0/flexget/ui/v1/src/components/database/database.component.js +79 -0
  773. flexget-3.14.0/flexget/ui/v1/src/components/database/database.config.js +22 -0
  774. flexget-3.14.0/flexget/ui/v1/src/components/database/database.module.js +10 -0
  775. flexget-3.14.0/flexget/ui/v1/src/components/database/database.service.js +62 -0
  776. flexget-3.14.0/flexget/ui/v1/src/components/database/database.tmpl.html +48 -0
  777. flexget-3.14.0/flexget/ui/v1/src/components/home/home.component.js +15 -0
  778. flexget-3.14.0/flexget/ui/v1/src/components/home/home.component.spec.js +19 -0
  779. flexget-3.14.0/flexget/ui/v1/src/components/home/home.module.js +9 -0
  780. flexget-3.14.0/flexget/ui/v1/src/components/home/home.route.js +29 -0
  781. flexget-3.14.0/flexget/ui/v1/src/components/home/home.route.spec.js +31 -0
  782. flexget-3.14.0/flexget/ui/v1/src/components/home/home.tmpl.html +50 -0
  783. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/_sidenav.scss +71 -0
  784. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.component.js +49 -0
  785. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.component.spec.js +50 -0
  786. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.module.js +12 -0
  787. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.semver.js +89 -0
  788. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.service.js +45 -0
  789. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.service.spec.js +29 -0
  790. flexget-3.14.0/flexget/ui/v1/src/components/sidenav/sidenav.tmpl.html +25 -0
  791. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.component.js +24 -0
  792. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.component.spec.js +44 -0
  793. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.config.js +21 -0
  794. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.module.js +10 -0
  795. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.provider.js +83 -0
  796. flexget-3.14.0/flexget/ui/v1/src/components/toolbar/toolbar.tmpl.html +29 -0
  797. flexget-3.14.0/flexget/ui/v1/src/components/user/user.module.js +17 -0
  798. flexget-3.14.0/flexget/ui/v1/src/construction.tmpl.html +24 -0
  799. flexget-3.14.0/flexget/ui/v1/src/directives/directives.module.js +8 -0
  800. flexget-3.14.0/flexget/ui/v1/src/directives/palette-background/palette-background.directive.js +31 -0
  801. flexget-3.14.0/flexget/ui/v1/src/favicon.ico +0 -0
  802. flexget-3.14.0/flexget/ui/v1/src/layout.tmpl.html +12 -0
  803. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.component.js +168 -0
  804. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.component.spec.js +46 -0
  805. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.module.js +19 -0
  806. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.route.js +45 -0
  807. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.route.spec.js +37 -0
  808. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.service.js +51 -0
  809. flexget-3.14.0/flexget/ui/v1/src/plugins/config/config.tmpl.html +59 -0
  810. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.js +75 -0
  811. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.component.spec.js +115 -0
  812. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-input/execute-input.tmpl.html +44 -0
  813. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.js +110 -0
  814. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.component.spec.js +76 -0
  815. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/components/execute-stream/execute-stream.tmpl.html +48 -0
  816. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.component.js +71 -0
  817. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.component.spec.js +108 -0
  818. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.filter.js +29 -0
  819. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.filter.spec.js +45 -0
  820. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.module.js +14 -0
  821. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.route.js +29 -0
  822. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.route.spec.js +37 -0
  823. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.service.js +85 -0
  824. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.service.spec.js +57 -0
  825. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.tmpl.html +6 -0
  826. flexget-3.14.0/flexget/ui/v1/src/plugins/execute/execute.tmpl.scss +21 -0
  827. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.component.js +66 -0
  828. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.component.spec.js +37 -0
  829. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.module.js +15 -0
  830. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.route.js +29 -0
  831. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.route.spec.js +37 -0
  832. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.service.js +26 -0
  833. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.service.spec.js +36 -0
  834. flexget-3.14.0/flexget/ui/v1/src/plugins/history/history.tmpl.html +36 -0
  835. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.component.js +118 -0
  836. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.component.spec.js +100 -0
  837. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.module.js +17 -0
  838. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.route.js +47 -0
  839. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.route.spec.js +37 -0
  840. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.service.js +43 -0
  841. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.tmpl.html +52 -0
  842. flexget-3.14.0/flexget/ui/v1/src/plugins/log/log.tmpl.scss +51 -0
  843. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-input.directive.js +25 -0
  844. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.component.js +32 -0
  845. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie-item.tmpl.html +14 -0
  846. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.controller.js +73 -0
  847. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.service.js +27 -0
  848. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/add-movie/add-movie.tmpl.html +21 -0
  849. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.js +48 -0
  850. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.component.spec.js +41 -0
  851. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.scss +66 -0
  852. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-entry/movie-entry.tmpl.html +42 -0
  853. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.js +93 -0
  854. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.component.spec.js +111 -0
  855. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/movie-list/movie-list.tmpl.html +15 -0
  856. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.js +32 -0
  857. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.component.spec.js +78 -0
  858. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/components/new-list/new-list.tmpl.html +28 -0
  859. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.component.js +113 -0
  860. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.component.spec.js +119 -0
  861. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.module.js +16 -0
  862. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.route.js +29 -0
  863. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.route.spec.js +37 -0
  864. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.service.js +82 -0
  865. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.service.spec.js +129 -0
  866. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.tmpl.html +47 -0
  867. flexget-3.14.0/flexget/ui/v1/src/plugins/movies/movies.tmpl.scss +85 -0
  868. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.component.js +52 -0
  869. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.module.js +12 -0
  870. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.route.js +29 -0
  871. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.scss +5 -0
  872. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.service.js +39 -0
  873. flexget-3.14.0/flexget/ui/v1/src/plugins/pending/pending.tmpl.html +19 -0
  874. flexget-3.14.0/flexget/ui/v1/src/plugins/plugins.module.js +12 -0
  875. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.component.js +55 -0
  876. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.component.spec.js +37 -0
  877. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.module.js +13 -0
  878. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.route.js +29 -0
  879. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.route.spec.js +37 -0
  880. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.service.js +31 -0
  881. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.service.spec.js +36 -0
  882. flexget-3.14.0/flexget/ui/v1/src/plugins/schedule/schedule.tmpl.html +14 -0
  883. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.js +15 -0
  884. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.component.spec.js +19 -0
  885. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/components/seen-entry/seen-entry.tmpl.html +21 -0
  886. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.component.js +18 -0
  887. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/components/seen-field/seen-field.tmpl.html +0 -0
  888. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.component.js +55 -0
  889. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.component.spec.js +37 -0
  890. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.module.js +13 -0
  891. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.route.js +29 -0
  892. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.route.spec.js +37 -0
  893. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.service.js +32 -0
  894. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.service.spec.js +34 -0
  895. flexget-3.14.0/flexget/ui/v1/src/plugins/seen/seen.tmpl.html +6 -0
  896. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.js +59 -0
  897. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.component.spec.js +107 -0
  898. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.scss +4 -0
  899. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-release/episode-release.tmpl.html +14 -0
  900. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.js +41 -0
  901. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.component.spec.js +58 -0
  902. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/episode-releases/episode-releases.tmpl.html +19 -0
  903. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-begin-dialog/series-begin-dialog.component.js +41 -0
  904. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-begin-dialog/series-begin-dialog.tmpl.html +27 -0
  905. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.js +87 -0
  906. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.component.spec.js +41 -0
  907. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.scss +29 -0
  908. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-entry/series-entry.tmpl.html +50 -0
  909. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.js +73 -0
  910. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.component.spec.js +118 -0
  911. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.scss +5 -0
  912. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episode/series-episode.tmpl.html +18 -0
  913. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.js +70 -0
  914. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.component.spec.js +88 -0
  915. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.scss +89 -0
  916. flexget-3.14.0/flexget/ui/v1/src/plugins/series/components/series-episodes/series-episodes.tmpl.html +12 -0
  917. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.component.js +162 -0
  918. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.component.spec.js +169 -0
  919. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.module.js +15 -0
  920. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.route.js +29 -0
  921. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.route.spec.js +37 -0
  922. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.service.js +129 -0
  923. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.service.spec.js +255 -0
  924. flexget-3.14.0/flexget/ui/v1/src/plugins/series/series.tmpl.html +37 -0
  925. flexget-3.14.0/flexget/ui/v1/src/plugins/server/loading-dialog.component.js +44 -0
  926. flexget-3.14.0/flexget/ui/v1/src/plugins/server/loading-dialog.tmpl.html +22 -0
  927. flexget-3.14.0/flexget/ui/v1/src/plugins/server/server.config.js +32 -0
  928. flexget-3.14.0/flexget/ui/v1/src/plugins/server/server.module.js +11 -0
  929. flexget-3.14.0/flexget/ui/v1/src/plugins/server/server.service.js +96 -0
  930. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.component.js +69 -0
  931. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.module.js +13 -0
  932. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.route.js +29 -0
  933. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.service.js +26 -0
  934. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.tmpl.html +20 -0
  935. flexget-3.14.0/flexget/ui/v1/src/plugins/status/status.tmpl.scss +13 -0
  936. flexget-3.14.0/flexget/ui/v1/src/scss/_header.scss +56 -0
  937. flexget-3.14.0/flexget/ui/v1/src/scss/_loading-bar.scss +16 -0
  938. flexget-3.14.0/flexget/ui/v1/src/scss/_variables.scss +12 -0
  939. flexget-3.14.0/flexget/ui/v1/src/scss/flexget.scss +79 -0
  940. flexget-3.14.0/flexget/ui/v1/src/services/schema.service.js +34 -0
  941. flexget-3.14.0/flexget/ui/v1/tests-mock-data/config.js +12 -0
  942. flexget-3.14.0/flexget/ui/v1/tests-mock-data/execute.js +84 -0
  943. flexget-3.14.0/flexget/ui/v1/tests-mock-data/history.js +41 -0
  944. flexget-3.14.0/flexget/ui/v1/tests-mock-data/movie_list.js +259 -0
  945. flexget-3.14.0/flexget/ui/v1/tests-mock-data/registerPlugin.js +3 -0
  946. flexget-3.14.0/flexget/ui/v1/tests-mock-data/schedules.js +30 -0
  947. flexget-3.14.0/flexget/ui/v1/tests-mock-data/seen.js +147 -0
  948. flexget-3.14.0/flexget/ui/v1/tests-mock-data/series.js +380 -0
  949. flexget-3.14.0/flexget/ui/v1/tests-mock-data/states.js +37 -0
  950. flexget-3.14.0/flexget/ui/v2/README.rst +6 -0
  951. flexget-3.14.0/flexget/ui/v2/__init__.py +48 -0
  952. flexget-3.14.0/flexget/ui/v2/index.html +13 -0
  953. flexget-3.14.0/flexget/utils/__init__.py +0 -0
  954. flexget-3.14.0/flexget/utils/bittorrent.py +372 -0
  955. flexget-3.14.0/flexget/utils/cache.py +84 -0
  956. flexget-3.14.0/flexget/utils/cached_input.py +239 -0
  957. flexget-3.14.0/flexget/utils/database.py +198 -0
  958. flexget-3.14.0/flexget/utils/json.py +142 -0
  959. flexget-3.14.0/flexget/utils/lazy_dict.py +139 -0
  960. flexget-3.14.0/flexget/utils/log.py +98 -0
  961. flexget-3.14.0/flexget/utils/parsers/__init__.py +7 -0
  962. flexget-3.14.0/flexget/utils/parsers/generic.py +58 -0
  963. flexget-3.14.0/flexget/utils/parsers/movie.py +131 -0
  964. flexget-3.14.0/flexget/utils/parsers/parser.py +64 -0
  965. flexget-3.14.0/flexget/utils/parsers/series.py +670 -0
  966. flexget-3.14.0/flexget/utils/pathscrub.py +60 -0
  967. flexget-3.14.0/flexget/utils/qualities.py +504 -0
  968. flexget-3.14.0/flexget/utils/requests.py +321 -0
  969. flexget-3.14.0/flexget/utils/serialization.py +253 -0
  970. flexget-3.14.0/flexget/utils/simple_persistence.py +234 -0
  971. flexget-3.14.0/flexget/utils/soup.py +14 -0
  972. flexget-3.14.0/flexget/utils/sqlalchemy_utils.py +196 -0
  973. flexget-3.14.0/flexget/utils/template.py +453 -0
  974. flexget-3.14.0/flexget/utils/tools.py +552 -0
  975. flexget-3.14.0/flexget/webserver.py +266 -0
  976. flexget-3.14.0/flexget_vanilla.py +11 -0
  977. flexget-3.14.0/pyproject.toml +159 -0
  978. flexget-3.14.0/update-changelog.py +167 -0
@@ -0,0 +1,52 @@
1
+ *~
2
+ *.pyc
3
+ *.swo
4
+ *.swp
5
+ .settings/
6
+ .project
7
+ .pydevproject
8
+ .vscode/
9
+ /.Python
10
+ FlexGet.egg-info/
11
+ bin/
12
+ Scripts/
13
+ include/
14
+ lib/
15
+ local
16
+ .idea/
17
+ *.iml
18
+ flexget.log
19
+ flexget.log.*
20
+ crash_report.*.log
21
+ received/
22
+ share/
23
+ dist/
24
+ build/
25
+ *.sqlite
26
+ paver-minilib.zip
27
+ man/
28
+ distribute-*.tar.gz
29
+ setuptools-*.tar.gz
30
+ pip-*.tar.gz
31
+ .DS_Store
32
+ /lib64
33
+ *.noseids
34
+ .coverage
35
+ tests/cover/
36
+ .tmp
37
+ coverage/
38
+ cherrypy
39
+ pip-selfcheck.json
40
+ .config-lock
41
+ .cache/
42
+ /*.yml
43
+ cached_resources/
44
+ pyvenv.cfg
45
+ .pytest_cache
46
+ pip-wheel-metadata
47
+ flexget/ui/v1/app
48
+ .dmypy.json
49
+ .mypy_cache/
50
+ .tool-versions
51
+ .devcontainer/
52
+ .venv
flexget-3.14.0/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+
2
+ The MIT License
3
+
4
+ Copyright (C) 2006, Riku 'Shrike' Lindblad
5
+ Copyright (C) 2007, Marko Koivusalo
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
@@ -0,0 +1,314 @@
1
+ Metadata-Version: 2.4
2
+ Name: flexget
3
+ Version: 3.14.0
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
+ Project-URL: Homepage, https://flexget.com
6
+ Project-URL: Issue Tracker, https://github.com/Flexget/Flexget/issues
7
+ Project-URL: Repository, https://github.com/Flexget/Flexget
8
+ Project-URL: Forum, https://github.com/Flexget/Flexget/discussions
9
+ Author-email: Marko Koivusalo <marko.koivusalo@gmail.com>, Chase Sterling <chase.sterling@gmail.com>
10
+ License:
11
+ The MIT License
12
+
13
+ Copyright (C) 2006, Riku 'Shrike' Lindblad
14
+ Copyright (C) 2007, Marko Koivusalo
15
+
16
+ Permission is hereby granted, free of charge, to any person obtaining a copy
17
+ of this software and associated documentation files (the "Software"), to deal
18
+ in the Software without restriction, including without limitation the rights
19
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
+ copies of the Software, and to permit persons to whom the Software is
21
+ furnished to do so, subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in
24
+ all copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
+ THE SOFTWARE.
33
+ License-File: LICENSE
34
+ Requires-Python: >=3.9
35
+ Requires-Dist: apscheduler~=3.11
36
+ Requires-Dist: beautifulsoup4~=4.12
37
+ Requires-Dist: cherrypy~=18.10
38
+ Requires-Dist: colorama~=0.4.6
39
+ Requires-Dist: feedparser~=6.0
40
+ Requires-Dist: flask-compress~=1.17
41
+ Requires-Dist: flask-cors~=5.0
42
+ Requires-Dist: flask-login~=0.6.3
43
+ Requires-Dist: flask-restx~=1.3
44
+ Requires-Dist: flask~=3.1
45
+ Requires-Dist: guessit~=3.8
46
+ Requires-Dist: html5lib~=1.1
47
+ Requires-Dist: importlib-metadata~=8.5; python_version < '3.10'
48
+ Requires-Dist: jinja2~=3.1
49
+ Requires-Dist: jsonschema~=4.23
50
+ Requires-Dist: loguru~=0.7.3
51
+ Requires-Dist: packaging~=24.2
52
+ Requires-Dist: pendulum~=3.0
53
+ Requires-Dist: psutil~=6.1
54
+ Requires-Dist: pynzb~=0.1.0
55
+ Requires-Dist: pyparsing~=3.2
56
+ Requires-Dist: pyrss2gen~=1.1
57
+ Requires-Dist: python-dateutil~=2.9
58
+ Requires-Dist: pyyaml~=6.0
59
+ Requires-Dist: rebulk~=3.2
60
+ Requires-Dist: requests~=2.32
61
+ Requires-Dist: rich~=13.9
62
+ Requires-Dist: rpyc~=6.0
63
+ Requires-Dist: sqlalchemy~=2.0
64
+ Requires-Dist: urllib3~=1.26
65
+ Requires-Dist: werkzeug~=3.1
66
+ Requires-Dist: zxcvbn~=4.4
67
+ Provides-Extra: all
68
+ Requires-Dist: anyio==4.8.0; extra == 'all'
69
+ Requires-Dist: certifi==2024.12.14; extra == 'all'
70
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'all'
71
+ Requires-Dist: deluge-client==1.10.2; extra == 'all'
72
+ Requires-Dist: exceptiongroup==1.2.2; (python_full_version < '3.11') and extra == 'all'
73
+ Requires-Dist: h11==0.14.0; extra == 'all'
74
+ Requires-Dist: h2==4.1.0; extra == 'all'
75
+ Requires-Dist: hpack==4.1.0; extra == 'all'
76
+ Requires-Dist: httpcore==1.0.7; extra == 'all'
77
+ Requires-Dist: httpx==0.28.1; extra == 'all'
78
+ Requires-Dist: hyperframe==6.1.0; extra == 'all'
79
+ Requires-Dist: idna==3.10; extra == 'all'
80
+ Requires-Dist: packaging==24.2; extra == 'all'
81
+ Requires-Dist: python-telegram-bot==21.10; extra == 'all'
82
+ Requires-Dist: qbittorrent-api==2024.12.71; extra == 'all'
83
+ Requires-Dist: requests==2.32.3; extra == 'all'
84
+ Requires-Dist: sniffio==1.3.1; extra == 'all'
85
+ Requires-Dist: socksio==1.0.0; extra == 'all'
86
+ Requires-Dist: transmission-rpc==7.0.11; extra == 'all'
87
+ Requires-Dist: typing-extensions==4.12.2; extra == 'all'
88
+ Requires-Dist: urllib3==1.26.20; extra == 'all'
89
+ Provides-Extra: deluge
90
+ Requires-Dist: deluge-client==1.10.2; extra == 'deluge'
91
+ Provides-Extra: locked
92
+ Requires-Dist: aniso8601==10.0.0; extra == 'locked'
93
+ Requires-Dist: apscheduler==3.11.0; extra == 'locked'
94
+ Requires-Dist: attrs==24.3.0; extra == 'locked'
95
+ Requires-Dist: autocommand==2.2.2; extra == 'locked'
96
+ Requires-Dist: babelfish==0.6.0; (python_full_version < '3.10') and extra == 'locked'
97
+ Requires-Dist: babelfish==0.6.1; (python_full_version >= '3.10') and extra == 'locked'
98
+ Requires-Dist: backports-tarfile==1.2.0; (python_full_version < '3.12') and extra == 'locked'
99
+ Requires-Dist: beautifulsoup4==4.12.3; extra == 'locked'
100
+ Requires-Dist: blinker==1.9.0; extra == 'locked'
101
+ Requires-Dist: brotli==1.1.0; (platform_python_implementation != 'PyPy') and extra == 'locked'
102
+ Requires-Dist: brotlicffi==1.1.0.0; (platform_python_implementation == 'PyPy') and extra == 'locked'
103
+ Requires-Dist: certifi==2024.12.14; extra == 'locked'
104
+ Requires-Dist: cffi==1.17.1; (platform_python_implementation == 'PyPy') and extra == 'locked'
105
+ Requires-Dist: cfgv==3.4.0; extra == 'locked'
106
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'locked'
107
+ Requires-Dist: cheroot==10.0.1; extra == 'locked'
108
+ Requires-Dist: cherrypy==18.10.0; extra == 'locked'
109
+ Requires-Dist: click==8.1.8; extra == 'locked'
110
+ Requires-Dist: codacy-coverage==1.3.11; extra == 'locked'
111
+ Requires-Dist: colorama==0.4.6; extra == 'locked'
112
+ Requires-Dist: coverage==7.6.10; extra == 'locked'
113
+ Requires-Dist: distlib==0.3.9; extra == 'locked'
114
+ Requires-Dist: exceptiongroup==1.2.2; (python_full_version < '3.11') and extra == 'locked'
115
+ Requires-Dist: execnet==2.1.1; extra == 'locked'
116
+ Requires-Dist: feedparser==6.0.11; extra == 'locked'
117
+ Requires-Dist: filelock==3.17.0; extra == 'locked'
118
+ Requires-Dist: flask-compress==1.17; extra == 'locked'
119
+ Requires-Dist: flask-cors==5.0.0; extra == 'locked'
120
+ Requires-Dist: flask-login==0.6.3; extra == 'locked'
121
+ Requires-Dist: flask-restx==1.3.0; extra == 'locked'
122
+ Requires-Dist: flask==3.1.0; extra == 'locked'
123
+ Requires-Dist: greenlet==3.1.1; ((python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')) and extra == 'locked'
124
+ Requires-Dist: guessit==3.8.0; extra == 'locked'
125
+ Requires-Dist: html5lib==1.1; extra == 'locked'
126
+ Requires-Dist: identify==2.6.6; extra == 'locked'
127
+ Requires-Dist: idna==3.10; extra == 'locked'
128
+ Requires-Dist: importlib-metadata==8.6.1; (python_full_version < '3.10') and extra == 'locked'
129
+ Requires-Dist: importlib-resources==6.5.2; extra == 'locked'
130
+ Requires-Dist: iniconfig==2.0.0; extra == 'locked'
131
+ Requires-Dist: itsdangerous==2.2.0; extra == 'locked'
132
+ Requires-Dist: jaraco-collections==5.1.0; extra == 'locked'
133
+ Requires-Dist: jaraco-context==6.0.1; extra == 'locked'
134
+ Requires-Dist: jaraco-functools==4.1.0; extra == 'locked'
135
+ Requires-Dist: jaraco-text==4.0.0; extra == 'locked'
136
+ Requires-Dist: jinja2==3.1.5; extra == 'locked'
137
+ Requires-Dist: jsonschema-specifications==2024.10.1; extra == 'locked'
138
+ Requires-Dist: jsonschema==4.23.0; extra == 'locked'
139
+ Requires-Dist: loguru==0.7.3; extra == 'locked'
140
+ Requires-Dist: markdown-it-py==3.0.0; extra == 'locked'
141
+ Requires-Dist: markupsafe==3.0.2; extra == 'locked'
142
+ Requires-Dist: mdurl==0.1.2; extra == 'locked'
143
+ Requires-Dist: more-itertools==10.6.0; extra == 'locked'
144
+ Requires-Dist: multidict==6.1.0; extra == 'locked'
145
+ Requires-Dist: nodeenv==1.9.1; extra == 'locked'
146
+ Requires-Dist: packaging==24.2; extra == 'locked'
147
+ Requires-Dist: pendulum==3.0.0; extra == 'locked'
148
+ Requires-Dist: platformdirs==4.3.6; extra == 'locked'
149
+ Requires-Dist: pluggy==1.5.0; extra == 'locked'
150
+ Requires-Dist: plumbum==1.9.0; extra == 'locked'
151
+ Requires-Dist: portend==3.2.0; extra == 'locked'
152
+ Requires-Dist: pre-commit==4.1.0; extra == 'locked'
153
+ Requires-Dist: propcache==0.2.1; extra == 'locked'
154
+ Requires-Dist: psutil==6.1.1; extra == 'locked'
155
+ Requires-Dist: pycparser==2.22; (platform_python_implementation == 'PyPy') and extra == 'locked'
156
+ Requires-Dist: pygments==2.19.1; extra == 'locked'
157
+ Requires-Dist: pynzb==0.1.0; extra == 'locked'
158
+ Requires-Dist: pyparsing==3.2.1; extra == 'locked'
159
+ Requires-Dist: pyrss2gen==1.1; extra == 'locked'
160
+ Requires-Dist: pytest-cov==6.0.0; extra == 'locked'
161
+ Requires-Dist: pytest-runner==6.0.1; extra == 'locked'
162
+ Requires-Dist: pytest-xdist==3.6.1; extra == 'locked'
163
+ Requires-Dist: pytest==8.3.4; extra == 'locked'
164
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == 'locked'
165
+ Requires-Dist: pytz==2024.2; extra == 'locked'
166
+ Requires-Dist: pywin32==308; ((python_full_version < '3.10' and implementation_name == 'cpython' and sys_platform == 'win32') or (platform_python_implementation != 'PyPy' and sys_platform == 'win32')) and extra == 'locked'
167
+ Requires-Dist: pyyaml==6.0.2; extra == 'locked'
168
+ Requires-Dist: rebulk==3.2.0; extra == 'locked'
169
+ Requires-Dist: referencing==0.36.1; extra == 'locked'
170
+ Requires-Dist: requests==2.32.3; extra == 'locked'
171
+ Requires-Dist: rich==13.9.4; extra == 'locked'
172
+ Requires-Dist: rpds-py==0.22.3; extra == 'locked'
173
+ Requires-Dist: rpyc==6.0.1; extra == 'locked'
174
+ Requires-Dist: ruff==0.9.3; extra == 'locked'
175
+ Requires-Dist: setuptools==75.8.0; extra == 'locked'
176
+ Requires-Dist: sgmllib3k==1.0.0; extra == 'locked'
177
+ Requires-Dist: six==1.17.0; extra == 'locked'
178
+ Requires-Dist: soupsieve==2.6; extra == 'locked'
179
+ Requires-Dist: sqlalchemy==2.0.37; extra == 'locked'
180
+ Requires-Dist: tempora==5.8.0; extra == 'locked'
181
+ Requires-Dist: time-machine==2.16.0; (implementation_name != 'pypy') and extra == 'locked'
182
+ Requires-Dist: tomli==2.2.1; (python_full_version <= '3.11') and extra == 'locked'
183
+ Requires-Dist: typing-extensions==4.12.2; extra == 'locked'
184
+ Requires-Dist: tzdata==2025.1; extra == 'locked'
185
+ Requires-Dist: tzlocal==5.2; extra == 'locked'
186
+ Requires-Dist: urllib3==1.26.20; extra == 'locked'
187
+ Requires-Dist: vcrpy==7.0.0; extra == 'locked'
188
+ Requires-Dist: virtualenv==20.29.1; extra == 'locked'
189
+ Requires-Dist: webencodings==0.5.1; extra == 'locked'
190
+ Requires-Dist: werkzeug==3.1.3; extra == 'locked'
191
+ Requires-Dist: win32-setctime==1.2.0; (sys_platform == 'win32') and extra == 'locked'
192
+ Requires-Dist: wrapt==1.17.2; extra == 'locked'
193
+ Requires-Dist: yarl==1.18.3; extra == 'locked'
194
+ Requires-Dist: zc-lockfile==3.0.post1; extra == 'locked'
195
+ Requires-Dist: zipp==3.21.0; (python_full_version < '3.10') and extra == 'locked'
196
+ Requires-Dist: zstandard==0.23.0; extra == 'locked'
197
+ Requires-Dist: zxcvbn==4.4.28; extra == 'locked'
198
+ Provides-Extra: qbittorrent
199
+ Requires-Dist: certifi==2024.12.14; extra == 'qbittorrent'
200
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'qbittorrent'
201
+ Requires-Dist: idna==3.10; extra == 'qbittorrent'
202
+ Requires-Dist: packaging==24.2; extra == 'qbittorrent'
203
+ Requires-Dist: qbittorrent-api==2024.12.71; extra == 'qbittorrent'
204
+ Requires-Dist: requests==2.32.3; extra == 'qbittorrent'
205
+ Requires-Dist: urllib3==1.26.20; extra == 'qbittorrent'
206
+ Provides-Extra: telegram
207
+ Requires-Dist: anyio==4.8.0; extra == 'telegram'
208
+ Requires-Dist: certifi==2024.12.14; extra == 'telegram'
209
+ Requires-Dist: exceptiongroup==1.2.2; (python_full_version < '3.11') and extra == 'telegram'
210
+ Requires-Dist: h11==0.14.0; extra == 'telegram'
211
+ Requires-Dist: h2==4.1.0; extra == 'telegram'
212
+ Requires-Dist: hpack==4.1.0; extra == 'telegram'
213
+ Requires-Dist: httpcore==1.0.7; extra == 'telegram'
214
+ Requires-Dist: httpx==0.28.1; extra == 'telegram'
215
+ Requires-Dist: hyperframe==6.1.0; extra == 'telegram'
216
+ Requires-Dist: idna==3.10; extra == 'telegram'
217
+ Requires-Dist: python-telegram-bot==21.10; extra == 'telegram'
218
+ Requires-Dist: sniffio==1.3.1; extra == 'telegram'
219
+ Requires-Dist: socksio==1.0.0; extra == 'telegram'
220
+ Requires-Dist: typing-extensions==4.12.2; (python_full_version < '3.13') and extra == 'telegram'
221
+ Provides-Extra: transmission
222
+ Requires-Dist: certifi==2024.12.14; extra == 'transmission'
223
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'transmission'
224
+ Requires-Dist: idna==3.10; extra == 'transmission'
225
+ Requires-Dist: requests==2.32.3; extra == 'transmission'
226
+ Requires-Dist: transmission-rpc==7.0.11; extra == 'transmission'
227
+ Requires-Dist: typing-extensions==4.12.2; extra == 'transmission'
228
+ Requires-Dist: urllib3==1.26.20; extra == 'transmission'
229
+ Description-Content-Type: text/x-rst
230
+
231
+ FlexGet
232
+ =======
233
+ .. image:: https://github.com/Flexget/Flexget/actions/workflows/test.yml/badge.svg?branch=develop
234
+ :target: https://github.com/Flexget/Flexget/actions/workflows/test.yml?query=branch%3Adevelop
235
+
236
+ .. image:: https://img.shields.io/pypi/v/Flexget.svg
237
+ :target: https://pypi.python.org/pypi/Flexget
238
+
239
+ ..
240
+ Commenting these out for now, as they seem to be broken.
241
+ .. image:: https://api.codacy.com/project/badge/Grade/86bb847efe984c12948bdeccabcbccad
242
+ :target: https://www.codacy.com/app/Flexget/Flexget?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Flexget/Flexget&amp;utm_campaign=Badge_Grade
243
+
244
+ .. image:: https://api.codacy.com/project/badge/Coverage/86bb847efe984c12948bdeccabcbccad
245
+ :target: https://www.codacy.com/app/Flexget/Flexget?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Flexget/Flexget&amp;utm_campaign=Badge_Coverage
246
+
247
+
248
+ .. image:: https://img.shields.io/discord/536690097056120833?label=discord
249
+ :target: https://discord.gg/W6CQrJx
250
+
251
+ .. image:: http://isitmaintained.com/badge/resolution/Flexget/Flexget.svg
252
+ :target: http://isitmaintained.com/project/Flexget/Flexget
253
+
254
+ `FlexGet`_ is a multipurpose automation tool for content like torrents, nzbs,
255
+ podcasts, comics, series, movies, etc. It can use different kinds of sources
256
+ like RSS-feeds, html pages, csv files, search engines and there are even
257
+ plugins for sites that do not provide any kind of useful feeds.
258
+
259
+ Example
260
+ =======
261
+ Flexget uses a `YAML`_ based configuration file.
262
+ The following example will look in the RSS feed in the link, will match any item that match the series names and download it::
263
+
264
+ tasks:
265
+ tv:
266
+ rss: http://example.com/torrents.xml
267
+ series:
268
+ - some series
269
+ - another series
270
+ download: /tvshows
271
+
272
+ There are numerous plugins that allow utilizing FlexGet in interesting ways
273
+ and more are being added continuously.
274
+
275
+ FlexGet is extremely useful in conjunction with applications which have watch
276
+ directory support or provide interface for external utilities like FlexGet.
277
+ To get a sense of the many things that can be done with FlexGet you can take a look in our `cookbook`_.
278
+
279
+ .. _FlexGet: https://flexget.com
280
+
281
+ .. _YAML: http://www.yaml.org/
282
+
283
+ .. _cookbook: https://flexget.com/Cookbook
284
+
285
+
286
+ **ChangeLog:** https://flexget.com/ChangeLog
287
+
288
+ **Help:** https://github.com/Flexget/Flexget/discussions
289
+
290
+ **Chat:** https://flexget.com/Chat
291
+
292
+ **Bugs:** https://github.com/Flexget/Flexget/issues
293
+
294
+ Install
295
+ -------
296
+
297
+ FlexGet is installable via pip with the command::
298
+
299
+ pip install flexget
300
+
301
+ For more detailed instructions see the `installation guide`_.
302
+
303
+ .. _installation guide: https://flexget.com/Install
304
+
305
+ How to use GIT checkout
306
+ -----------------------
307
+
308
+ Refer to `development guide`_.
309
+
310
+ .. _development guide: https://flexget.readthedocs.io/en/latest/develop/index.html#how-do-i-get-started
311
+
312
+ If you don't want to use virtualenv there's ``flexget_vanilla.py`` file which
313
+ can be used to run FlexGet without virtualenv, note that you will need to
314
+ install all required dependencies yourself.
@@ -0,0 +1,84 @@
1
+ FlexGet
2
+ =======
3
+ .. image:: https://github.com/Flexget/Flexget/actions/workflows/test.yml/badge.svg?branch=develop
4
+ :target: https://github.com/Flexget/Flexget/actions/workflows/test.yml?query=branch%3Adevelop
5
+
6
+ .. image:: https://img.shields.io/pypi/v/Flexget.svg
7
+ :target: https://pypi.python.org/pypi/Flexget
8
+
9
+ ..
10
+ Commenting these out for now, as they seem to be broken.
11
+ .. image:: https://api.codacy.com/project/badge/Grade/86bb847efe984c12948bdeccabcbccad
12
+ :target: https://www.codacy.com/app/Flexget/Flexget?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Flexget/Flexget&amp;utm_campaign=Badge_Grade
13
+
14
+ .. image:: https://api.codacy.com/project/badge/Coverage/86bb847efe984c12948bdeccabcbccad
15
+ :target: https://www.codacy.com/app/Flexget/Flexget?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=Flexget/Flexget&amp;utm_campaign=Badge_Coverage
16
+
17
+
18
+ .. image:: https://img.shields.io/discord/536690097056120833?label=discord
19
+ :target: https://discord.gg/W6CQrJx
20
+
21
+ .. image:: http://isitmaintained.com/badge/resolution/Flexget/Flexget.svg
22
+ :target: http://isitmaintained.com/project/Flexget/Flexget
23
+
24
+ `FlexGet`_ is a multipurpose automation tool for content like torrents, nzbs,
25
+ podcasts, comics, series, movies, etc. It can use different kinds of sources
26
+ like RSS-feeds, html pages, csv files, search engines and there are even
27
+ plugins for sites that do not provide any kind of useful feeds.
28
+
29
+ Example
30
+ =======
31
+ Flexget uses a `YAML`_ based configuration file.
32
+ The following example will look in the RSS feed in the link, will match any item that match the series names and download it::
33
+
34
+ tasks:
35
+ tv:
36
+ rss: http://example.com/torrents.xml
37
+ series:
38
+ - some series
39
+ - another series
40
+ download: /tvshows
41
+
42
+ There are numerous plugins that allow utilizing FlexGet in interesting ways
43
+ and more are being added continuously.
44
+
45
+ FlexGet is extremely useful in conjunction with applications which have watch
46
+ directory support or provide interface for external utilities like FlexGet.
47
+ To get a sense of the many things that can be done with FlexGet you can take a look in our `cookbook`_.
48
+
49
+ .. _FlexGet: https://flexget.com
50
+
51
+ .. _YAML: http://www.yaml.org/
52
+
53
+ .. _cookbook: https://flexget.com/Cookbook
54
+
55
+
56
+ **ChangeLog:** https://flexget.com/ChangeLog
57
+
58
+ **Help:** https://github.com/Flexget/Flexget/discussions
59
+
60
+ **Chat:** https://flexget.com/Chat
61
+
62
+ **Bugs:** https://github.com/Flexget/Flexget/issues
63
+
64
+ Install
65
+ -------
66
+
67
+ FlexGet is installable via pip with the command::
68
+
69
+ pip install flexget
70
+
71
+ For more detailed instructions see the `installation guide`_.
72
+
73
+ .. _installation guide: https://flexget.com/Install
74
+
75
+ How to use GIT checkout
76
+ -----------------------
77
+
78
+ Refer to `development guide`_.
79
+
80
+ .. _development guide: https://flexget.readthedocs.io/en/latest/develop/index.html#how-do-i-get-started
81
+
82
+ If you don't want to use virtualenv there's ``flexget_vanilla.py`` file which
83
+ can be used to run FlexGet without virtualenv, note that you will need to
84
+ install all required dependencies yourself.
@@ -0,0 +1,62 @@
1
+ import os
2
+ import subprocess
3
+ import sys
4
+ from collections.abc import MutableMapping
5
+ from pathlib import Path
6
+ from typing import Any, Optional
7
+
8
+ from hatchling.metadata.plugin.interface import MetadataHookInterface
9
+
10
+
11
+ def update_metadata_with_locked(
12
+ metadata: MutableMapping[str, Any], root: Path, groups: Optional[list[str]] = None
13
+ ) -> None: # pragma: no cover
14
+ """Inplace update the metadata(pyproject.toml) with the locked dependencies.
15
+
16
+ Args:
17
+ metadata (dict[str, Any]): The metadata dictionary
18
+ root (Path): The path to the project root
19
+ groups (list[str], optional): The groups to lock.
20
+
21
+ """
22
+ groups = groups or []
23
+ print(f"Adding extras with locked dependencies: {', '.join(groups)}")
24
+ for group in [*groups, "locked"]:
25
+ args = [] if group == "locked" else [f"--only-group={group}"]
26
+ try:
27
+ export = subprocess.check_output(
28
+ [
29
+ "uv",
30
+ "--color=never",
31
+ "export",
32
+ "--frozen",
33
+ "--no-hashes",
34
+ "--no-emit-project",
35
+ *args,
36
+ ],
37
+ cwd=root,
38
+ timeout=5,
39
+ encoding="utf-8",
40
+ stderr=subprocess.PIPE,
41
+ )
42
+ except (subprocess.TimeoutExpired, subprocess.CalledProcessError) as exc:
43
+ print(f"Failed to export locked dependencies for `{group}`: {exc.stderr}")
44
+ sys.exit(1)
45
+ requirements = [line for line in export.splitlines() if not line.startswith("#")]
46
+ if not requirements:
47
+ # TODO: We can remove this if uv starts checking the existence of groups itself.
48
+ # https://github.com/astral-sh/uv/issues/10882
49
+ print(
50
+ f"There does not appear to be any requirements for group `{group}`, does it exist?"
51
+ )
52
+ sys.exit(1)
53
+ metadata.setdefault("optional-dependencies", {})[group] = requirements
54
+
55
+
56
+ class BuildLockedMetadataHook(MetadataHookInterface):
57
+ PLUGIN_NAME = "build-locked-extras"
58
+
59
+ def update(self, metadata: dict) -> None:
60
+ if os.environ.get("BUILD_LOCKED_EXTRAS") not in ["1", "true"]:
61
+ return
62
+ update_metadata_with_locked(metadata, Path(self.root), self.config.get("locked-groups"))
@@ -0,0 +1,106 @@
1
+ # /// script
2
+ # requires-python = ">=3.9"
3
+ # dependencies = [
4
+ # "requests",
5
+ # ]
6
+ # ///
7
+ import io
8
+ import os
9
+ import shutil
10
+ import zipfile
11
+ from pathlib import Path
12
+ from typing import Any, Optional
13
+
14
+ # If hatchling is available (like in the build environment) this file provides
15
+ # a hook for bundling the webui into our wheel release.
16
+ try:
17
+ from hatchling.builders.hooks.plugin.interface import BuildHookInterface
18
+ except ImportError:
19
+ pass
20
+ else:
21
+
22
+ class CustomBuildHook(BuildHookInterface):
23
+ PLUGIN_NAME = "bundle-webui"
24
+
25
+ def dependencies(self) -> list[str]:
26
+ if os.environ.get("BUNDLE_WEBUI") not in ["1", "true"]:
27
+ return []
28
+ return ["requests"]
29
+
30
+ def clean(self, versions: list[str]) -> None:
31
+ p = Path(__file__).resolve().parent
32
+ v1_path = p / "flexget" / "ui" / "v1" / "app"
33
+ v2_path = p / "flexget" / "ui" / "v2" / "dist"
34
+ if v1_path.exists():
35
+ shutil.rmtree(v1_path)
36
+ if v2_path.exists():
37
+ shutil.rmtree(v2_path)
38
+
39
+ def initialize(self, version: str, build_data: dict[str, Any]) -> None:
40
+ if os.environ.get("BUNDLE_WEBUI") not in ["1", "true"]:
41
+ return
42
+ bundle_webui()
43
+ build_data["force_include"]["flexget/ui/v1/app"] = "/flexget/ui/v1/app"
44
+ build_data["force_include"]["flexget/ui/v2/dist"] = "/flexget/ui/v2/dist"
45
+
46
+
47
+ def bundle_webui(ui_version: Optional[str] = None):
48
+ """Bundle webui for release packaging"""
49
+ # We delay this import so that the hatchling build hook can register itself without requests installed.
50
+ # once it is registered it can install the dep automatically during the build process.
51
+ import requests
52
+
53
+ ui_path = Path(__file__).resolve().parent / "flexget" / "ui"
54
+
55
+ def download_extract(url, dest_path):
56
+ print(dest_path)
57
+ r = requests.get(url)
58
+ z = zipfile.ZipFile(io.BytesIO(r.content))
59
+ z.extractall(dest_path)
60
+
61
+ if not ui_version or ui_version == 'v1':
62
+ # WebUI V1
63
+ print('Bundling WebUI v1...')
64
+ try:
65
+ # Remove existing
66
+ app_path = ui_path / "v1" / "app"
67
+ if app_path.exists():
68
+ shutil.rmtree(app_path)
69
+ # Just stashed the old webui zip on a random github release for easy hosting.
70
+ # It doesn't get updated anymore,
71
+ # we should probably stop bundling it with releases soon.
72
+ download_extract(
73
+ 'https://github.com/Flexget/Flexget/releases/download/v3.0.6/webui_v1.zip',
74
+ ui_path / "v1",
75
+ )
76
+ except OSError as e:
77
+ raise RuntimeError(f'Unable to download and extract WebUI v1 due to {e!s}')
78
+
79
+ if not ui_version or ui_version == 'v2':
80
+ # WebUI V2
81
+ try:
82
+ print('Bundling WebUI v2...')
83
+ # Remove existing
84
+ app_path = ui_path / "v2" / "dist"
85
+ if app_path.exists():
86
+ shutil.rmtree(app_path)
87
+
88
+ release = requests.get(
89
+ 'https://api.github.com/repos/Flexget/webui/releases/latest'
90
+ ).json()
91
+
92
+ v2_package = None
93
+ for asset in release['assets']:
94
+ if asset['name'] == 'dist.zip':
95
+ v2_package = asset['browser_download_url']
96
+ break
97
+
98
+ if not v2_package:
99
+ raise RuntimeError('Unable to find dist.zip in assets')
100
+ download_extract(v2_package, ui_path / "v2")
101
+ except (OSError, ValueError) as e:
102
+ raise RuntimeError(f'Unable to download and extract WebUI v2 due to {e!s}')
103
+
104
+
105
+ if __name__ == '__main__':
106
+ bundle_webui()