Metadata-Version: 2.4
Name: flexget
Version: 3.18.9
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.
Project-URL: Forum, https://github.com/Flexget/Flexget/discussions
Project-URL: Homepage, https://flexget.com
Project-URL: Issue Tracker, https://github.com/Flexget/Flexget/issues
Project-URL: Repository, https://github.com/Flexget/Flexget
Author-email: Chase Sterling <chase.sterling@gmail.com>, Marko Koivusalo <marko.koivusalo@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: End Users/Desktop
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: apscheduler~=3.11
Requires-Dist: beautifulsoup4~=4.12
Requires-Dist: cherrypy~=18.10
Requires-Dist: feedparser~=6.0
Requires-Dist: flask-compress~=1.17
Requires-Dist: flask-cors~=6.0
Requires-Dist: flask-login~=0.6.3
Requires-Dist: flask-restx~=1.3
Requires-Dist: flask~=3.1
Requires-Dist: guessit~=3.8
Requires-Dist: html5lib~=1.1
Requires-Dist: jinja2~=3.1
Requires-Dist: jsonschema~=4.23
Requires-Dist: loguru~=0.7.3
Requires-Dist: packaging~=25.0
Requires-Dist: pendulum~=3.0
Requires-Dist: psutil~=7.0
Requires-Dist: pynzb~=0.1.0
Requires-Dist: pyparsing~=3.2
Requires-Dist: pyrss2gen~=1.1
Requires-Dist: python-dateutil~=2.9
Requires-Dist: pyyaml~=6.0
Requires-Dist: rebulk~=3.2
Requires-Dist: requests~=2.32
Requires-Dist: rich~=14.0
Requires-Dist: rpyc~=6.0
Requires-Dist: sqlalchemy~=2.0
Requires-Dist: werkzeug~=3.1
Requires-Dist: zxcvbn~=4.4
Provides-Extra: all
Requires-Dist: aiofiles==24.1.0; extra == 'all'
Requires-Dist: aiohappyeyeballs==2.6.1; extra == 'all'
Requires-Dist: aiohttp-socks==0.10.1; extra == 'all'
Requires-Dist: aiohttp==3.12.15; extra == 'all'
Requires-Dist: aiosignal==1.4.0; extra == 'all'
Requires-Dist: anyio==4.10.0; extra == 'all'
Requires-Dist: async-timeout==5.0.1; (python_full_version < '3.11') and extra == 'all'
Requires-Dist: attrs==25.3.0; extra == 'all'
Requires-Dist: babelfish==0.6.1; extra == 'all'
Requires-Dist: bcrypt==4.3.0; extra == 'all'
Requires-Dist: beautifulsoup4==4.13.5; extra == 'all'
Requires-Dist: boto3==1.40.30; extra == 'all'
Requires-Dist: botocore==1.40.30; extra == 'all'
Requires-Dist: certifi==2025.8.3; extra == 'all'
Requires-Dist: cffi==2.0.0; (platform_python_implementation != 'PyPy') and extra == 'all'
Requires-Dist: chardet==5.2.0; extra == 'all'
Requires-Dist: charset-normalizer==3.4.3; extra == 'all'
Requires-Dist: click-option-group==0.5.7; extra == 'all'
Requires-Dist: click==8.2.1; extra == 'all'
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: cryptography==45.0.7; extra == 'all'
Requires-Dist: decorator==5.2.1; extra == 'all'
Requires-Dist: deluge-client==1.10.2; extra == 'all'
Requires-Dist: dogpile-cache==1.4.1; extra == 'all'
Requires-Dist: enzyme==0.5.2; extra == 'all'
Requires-Dist: exceptiongroup==1.3.0; (python_full_version < '3.11') and extra == 'all'
Requires-Dist: frozenlist==1.7.0; extra == 'all'
Requires-Dist: ftputil==5.1.0; extra == 'all'
Requires-Dist: guessit==3.8.0; extra == 'all'
Requires-Dist: h11==0.16.0; extra == 'all'
Requires-Dist: h2==4.3.0; extra == 'all'
Requires-Dist: hpack==4.1.0; extra == 'all'
Requires-Dist: httpcore==1.0.9; extra == 'all'
Requires-Dist: httpx==0.28.1; extra == 'all'
Requires-Dist: hyperframe==6.1.0; extra == 'all'
Requires-Dist: idna==3.10; extra == 'all'
Requires-Dist: jmespath==1.0.1; extra == 'all'
Requires-Dist: jsonschema-specifications==2025.9.1; extra == 'all'
Requires-Dist: jsonschema==4.25.1; extra == 'all'
Requires-Dist: matrix-nio==0.25.2; extra == 'all'
Requires-Dist: multidict==6.6.4; extra == 'all'
Requires-Dist: packaging==25.0; extra == 'all'
Requires-Dist: paramiko==3.5.1; extra == 'all'
Requires-Dist: pillow==11.3.0; extra == 'all'
Requires-Dist: platformdirs==4.4.0; extra == 'all'
Requires-Dist: plexapi==4.17.0; extra == 'all'
Requires-Dist: propcache==0.3.2; extra == 'all'
Requires-Dist: pycparser==2.23; (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy') and extra == 'all'
Requires-Dist: pycryptodome==3.23.0; extra == 'all'
Requires-Dist: pynacl==1.6.0; extra == 'all'
Requires-Dist: pysftp==0.2.9; extra == 'all'
Requires-Dist: pysubs2==1.8.0; extra == 'all'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'all'
Requires-Dist: python-socks==2.7.2; extra == 'all'
Requires-Dist: python-telegram-bot==22.4; extra == 'all'
Requires-Dist: qbittorrent-api==2025.7.0; extra == 'all'
Requires-Dist: rarfile==4.2; extra == 'all'
Requires-Dist: rebulk==3.2.0; extra == 'all'
Requires-Dist: referencing==0.36.2; extra == 'all'
Requires-Dist: requests==2.32.5; extra == 'all'
Requires-Dist: rpds-py==0.27.1; extra == 'all'
Requires-Dist: s3transfer==0.14.0; extra == 'all'
Requires-Dist: six==1.17.0; extra == 'all'
Requires-Dist: sniffio==1.3.1; extra == 'all'
Requires-Dist: socksio==1.0.0; extra == 'all'
Requires-Dist: soupsieve==2.8; extra == 'all'
Requires-Dist: srt==3.5.3; extra == 'all'
Requires-Dist: stevedore==5.5.0; extra == 'all'
Requires-Dist: subliminal==2.2.1; extra == 'all'
Requires-Dist: tomli==2.2.1; extra == 'all'
Requires-Dist: transmission-rpc==7.0.11; extra == 'all'
Requires-Dist: typing-extensions==4.15.0; extra == 'all'
Requires-Dist: unpaddedbase64==2.1.0; extra == 'all'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'all'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'all'
Requires-Dist: yarl==1.20.1; extra == 'all'
Provides-Extra: boto3
Requires-Dist: boto3==1.40.30; extra == 'boto3'
Requires-Dist: botocore==1.40.30; extra == 'boto3'
Requires-Dist: jmespath==1.0.1; extra == 'boto3'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'boto3'
Requires-Dist: s3transfer==0.14.0; extra == 'boto3'
Requires-Dist: six==1.17.0; extra == 'boto3'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'boto3'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'boto3'
Provides-Extra: deluge
Requires-Dist: deluge-client==1.10.2; extra == 'deluge'
Provides-Extra: ftp
Requires-Dist: ftputil==5.1.0; extra == 'ftp'
Provides-Extra: locked
Requires-Dist: aniso8601==10.0.1; extra == 'locked'
Requires-Dist: apscheduler==3.11.0; extra == 'locked'
Requires-Dist: attrs==25.3.0; extra == 'locked'
Requires-Dist: autocommand==2.2.2; extra == 'locked'
Requires-Dist: babelfish==0.6.1; extra == 'locked'
Requires-Dist: backports-tarfile==1.2.0; (python_full_version < '3.12') and extra == 'locked'
Requires-Dist: beautifulsoup4==4.13.5; extra == 'locked'
Requires-Dist: blinker==1.9.0; extra == 'locked'
Requires-Dist: brotli==1.1.0; (platform_python_implementation != 'PyPy') and extra == 'locked'
Requires-Dist: brotlicffi==1.1.0.0; (platform_python_implementation == 'PyPy') and extra == 'locked'
Requires-Dist: certifi==2025.8.3; extra == 'locked'
Requires-Dist: cffi==2.0.0; (platform_python_implementation == 'PyPy') and extra == 'locked'
Requires-Dist: cfgv==3.4.0; extra == 'locked'
Requires-Dist: charset-normalizer==3.4.3; extra == 'locked'
Requires-Dist: cheroot==10.0.1; extra == 'locked'
Requires-Dist: cherrypy==18.10.0; extra == 'locked'
Requires-Dist: click==8.2.1; extra == 'locked'
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == 'locked'
Requires-Dist: coverage==7.10.6; extra == 'locked'
Requires-Dist: distlib==0.4.0; extra == 'locked'
Requires-Dist: exceptiongroup==1.3.0; (python_full_version < '3.11') and extra == 'locked'
Requires-Dist: execnet==2.1.1; extra == 'locked'
Requires-Dist: feedparser==6.0.12; extra == 'locked'
Requires-Dist: filelock==3.19.1; extra == 'locked'
Requires-Dist: flask-compress==1.18; extra == 'locked'
Requires-Dist: flask-cors==6.0.1; extra == 'locked'
Requires-Dist: flask-login==0.6.3; extra == 'locked'
Requires-Dist: flask-restx==1.3.0; extra == 'locked'
Requires-Dist: flask==3.1.2; extra == 'locked'
Requires-Dist: greenlet==3.2.4; ((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'
Requires-Dist: guessit==3.8.0; extra == 'locked'
Requires-Dist: html5lib==1.1; extra == 'locked'
Requires-Dist: identify==2.6.14; extra == 'locked'
Requires-Dist: idna==3.10; extra == 'locked'
Requires-Dist: importlib-resources==6.5.2; extra == 'locked'
Requires-Dist: iniconfig==2.1.0; extra == 'locked'
Requires-Dist: itsdangerous==2.2.0; extra == 'locked'
Requires-Dist: jaraco-collections==5.2.1; extra == 'locked'
Requires-Dist: jaraco-context==6.0.1; extra == 'locked'
Requires-Dist: jaraco-functools==4.3.0; extra == 'locked'
Requires-Dist: jaraco-text==4.0.0; extra == 'locked'
Requires-Dist: jinja2==3.1.6; extra == 'locked'
Requires-Dist: jsonschema-specifications==2025.9.1; extra == 'locked'
Requires-Dist: jsonschema==4.25.1; extra == 'locked'
Requires-Dist: loguru==0.7.3; extra == 'locked'
Requires-Dist: markdown-it-py==4.0.0; extra == 'locked'
Requires-Dist: markupsafe==3.0.2; extra == 'locked'
Requires-Dist: mdurl==0.1.2; extra == 'locked'
Requires-Dist: more-itertools==10.8.0; extra == 'locked'
Requires-Dist: multidict==6.6.4; extra == 'locked'
Requires-Dist: nodeenv==1.9.1; extra == 'locked'
Requires-Dist: packaging==25.0; extra == 'locked'
Requires-Dist: pendulum==3.1.0; extra == 'locked'
Requires-Dist: platformdirs==4.4.0; extra == 'locked'
Requires-Dist: pluggy==1.6.0; extra == 'locked'
Requires-Dist: plumbum==1.9.0; extra == 'locked'
Requires-Dist: portend==3.2.1; extra == 'locked'
Requires-Dist: pre-commit==4.3.0; extra == 'locked'
Requires-Dist: propcache==0.3.2; extra == 'locked'
Requires-Dist: psutil==7.0.0; extra == 'locked'
Requires-Dist: pycparser==2.23; (implementation_name != 'PyPy' and platform_python_implementation == 'PyPy') and extra == 'locked'
Requires-Dist: pygments==2.19.2; extra == 'locked'
Requires-Dist: pynzb==0.1.0; extra == 'locked'
Requires-Dist: pyparsing==3.2.4; extra == 'locked'
Requires-Dist: pyrss2gen==1.1; extra == 'locked'
Requires-Dist: pytest-cov==7.0.0; extra == 'locked'
Requires-Dist: pytest-socket==0.7.0; extra == 'locked'
Requires-Dist: pytest-xdist==3.8.0; extra == 'locked'
Requires-Dist: pytest==8.4.2; extra == 'locked'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'locked'
Requires-Dist: pytz==2025.2; extra == 'locked'
Requires-Dist: pywin32==311; (platform_python_implementation != 'PyPy' and sys_platform == 'win32') and extra == 'locked'
Requires-Dist: pyyaml==6.0.2; extra == 'locked'
Requires-Dist: pyzstd==0.17.0; (python_full_version < '3.14') and extra == 'locked'
Requires-Dist: rebulk==3.2.0; extra == 'locked'
Requires-Dist: referencing==0.36.2; extra == 'locked'
Requires-Dist: requests==2.32.5; extra == 'locked'
Requires-Dist: rich==14.1.0; extra == 'locked'
Requires-Dist: rpds-py==0.27.1; extra == 'locked'
Requires-Dist: rpyc==6.0.2; extra == 'locked'
Requires-Dist: ruff==0.13.0; extra == 'locked'
Requires-Dist: setuptools==80.9.0; extra == 'locked'
Requires-Dist: sgmllib3k==1.0.0; extra == 'locked'
Requires-Dist: six==1.17.0; extra == 'locked'
Requires-Dist: soupsieve==2.8; extra == 'locked'
Requires-Dist: sqlalchemy==2.0.43; extra == 'locked'
Requires-Dist: tempora==5.8.1; extra == 'locked'
Requires-Dist: tomli==2.2.1; (python_full_version <= '3.11') and extra == 'locked'
Requires-Dist: typing-extensions==4.15.0; extra == 'locked'
Requires-Dist: tzdata==2025.2; extra == 'locked'
Requires-Dist: tzlocal==5.3.1; extra == 'locked'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'locked'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'locked'
Requires-Dist: vcrpy==7.0.0; extra == 'locked'
Requires-Dist: virtualenv==20.34.0; extra == 'locked'
Requires-Dist: webencodings==0.5.1; extra == 'locked'
Requires-Dist: werkzeug==3.1.3; extra == 'locked'
Requires-Dist: win32-setctime==1.2.0; (sys_platform == 'win32') and extra == 'locked'
Requires-Dist: wrapt==1.17.3; extra == 'locked'
Requires-Dist: yarl==1.20.1; extra == 'locked'
Requires-Dist: zc-lockfile==3.0.post1; extra == 'locked'
Requires-Dist: zxcvbn==4.5.0; extra == 'locked'
Provides-Extra: matrix
Requires-Dist: aiofiles==24.1.0; extra == 'matrix'
Requires-Dist: aiohappyeyeballs==2.6.1; extra == 'matrix'
Requires-Dist: aiohttp-socks==0.10.1; extra == 'matrix'
Requires-Dist: aiohttp==3.12.15; extra == 'matrix'
Requires-Dist: aiosignal==1.4.0; extra == 'matrix'
Requires-Dist: async-timeout==5.0.1; (python_full_version < '3.11') and extra == 'matrix'
Requires-Dist: attrs==25.3.0; extra == 'matrix'
Requires-Dist: frozenlist==1.7.0; extra == 'matrix'
Requires-Dist: h11==0.16.0; extra == 'matrix'
Requires-Dist: h2==4.3.0; extra == 'matrix'
Requires-Dist: hpack==4.1.0; extra == 'matrix'
Requires-Dist: hyperframe==6.1.0; extra == 'matrix'
Requires-Dist: idna==3.10; extra == 'matrix'
Requires-Dist: jsonschema-specifications==2025.9.1; extra == 'matrix'
Requires-Dist: jsonschema==4.25.1; extra == 'matrix'
Requires-Dist: matrix-nio==0.25.2; extra == 'matrix'
Requires-Dist: multidict==6.6.4; extra == 'matrix'
Requires-Dist: propcache==0.3.2; extra == 'matrix'
Requires-Dist: pycryptodome==3.23.0; extra == 'matrix'
Requires-Dist: python-socks==2.7.2; extra == 'matrix'
Requires-Dist: referencing==0.36.2; extra == 'matrix'
Requires-Dist: rpds-py==0.27.1; extra == 'matrix'
Requires-Dist: typing-extensions==4.15.0; (python_full_version < '3.13') and extra == 'matrix'
Requires-Dist: unpaddedbase64==2.1.0; extra == 'matrix'
Requires-Dist: yarl==1.20.1; extra == 'matrix'
Provides-Extra: plexapi
Requires-Dist: certifi==2025.8.3; extra == 'plexapi'
Requires-Dist: charset-normalizer==3.4.3; extra == 'plexapi'
Requires-Dist: idna==3.10; extra == 'plexapi'
Requires-Dist: plexapi==4.17.0; extra == 'plexapi'
Requires-Dist: requests==2.32.5; extra == 'plexapi'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'plexapi'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'plexapi'
Provides-Extra: qbittorrent
Requires-Dist: certifi==2025.8.3; extra == 'qbittorrent'
Requires-Dist: charset-normalizer==3.4.3; extra == 'qbittorrent'
Requires-Dist: idna==3.10; extra == 'qbittorrent'
Requires-Dist: packaging==25.0; extra == 'qbittorrent'
Requires-Dist: qbittorrent-api==2025.7.0; extra == 'qbittorrent'
Requires-Dist: requests==2.32.5; extra == 'qbittorrent'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'qbittorrent'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'qbittorrent'
Provides-Extra: rarfile
Requires-Dist: rarfile==4.2; extra == 'rarfile'
Provides-Extra: sftp
Requires-Dist: bcrypt==4.3.0; extra == 'sftp'
Requires-Dist: cffi==2.0.0; (platform_python_implementation != 'PyPy') and extra == 'sftp'
Requires-Dist: cryptography==45.0.7; extra == 'sftp'
Requires-Dist: paramiko==3.5.1; extra == 'sftp'
Requires-Dist: pycparser==2.23; (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy') and extra == 'sftp'
Requires-Dist: pynacl==1.6.0; extra == 'sftp'
Requires-Dist: pysftp==0.2.9; extra == 'sftp'
Provides-Extra: subliminal
Requires-Dist: babelfish==0.6.1; extra == 'subliminal'
Requires-Dist: beautifulsoup4==4.13.5; extra == 'subliminal'
Requires-Dist: certifi==2025.8.3; extra == 'subliminal'
Requires-Dist: chardet==5.2.0; extra == 'subliminal'
Requires-Dist: charset-normalizer==3.4.3; extra == 'subliminal'
Requires-Dist: click-option-group==0.5.7; extra == 'subliminal'
Requires-Dist: click==8.2.1; extra == 'subliminal'
Requires-Dist: colorama==0.4.6; (sys_platform == 'win32') and extra == 'subliminal'
Requires-Dist: decorator==5.2.1; extra == 'subliminal'
Requires-Dist: dogpile-cache==1.4.1; extra == 'subliminal'
Requires-Dist: enzyme==0.5.2; extra == 'subliminal'
Requires-Dist: guessit==3.8.0; extra == 'subliminal'
Requires-Dist: idna==3.10; extra == 'subliminal'
Requires-Dist: platformdirs==4.4.0; extra == 'subliminal'
Requires-Dist: pysubs2==1.8.0; extra == 'subliminal'
Requires-Dist: python-dateutil==2.9.0.post0; extra == 'subliminal'
Requires-Dist: rarfile==4.2; extra == 'subliminal'
Requires-Dist: rebulk==3.2.0; extra == 'subliminal'
Requires-Dist: requests==2.32.5; extra == 'subliminal'
Requires-Dist: six==1.17.0; extra == 'subliminal'
Requires-Dist: soupsieve==2.8; extra == 'subliminal'
Requires-Dist: srt==3.5.3; extra == 'subliminal'
Requires-Dist: stevedore==5.5.0; extra == 'subliminal'
Requires-Dist: subliminal==2.2.1; extra == 'subliminal'
Requires-Dist: tomli==2.2.1; extra == 'subliminal'
Requires-Dist: typing-extensions==4.15.0; extra == 'subliminal'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'subliminal'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'subliminal'
Provides-Extra: telegram
Requires-Dist: anyio==4.10.0; extra == 'telegram'
Requires-Dist: certifi==2025.8.3; extra == 'telegram'
Requires-Dist: exceptiongroup==1.3.0; (python_full_version < '3.11') and extra == 'telegram'
Requires-Dist: h11==0.16.0; extra == 'telegram'
Requires-Dist: h2==4.3.0; extra == 'telegram'
Requires-Dist: hpack==4.1.0; extra == 'telegram'
Requires-Dist: httpcore==1.0.9; extra == 'telegram'
Requires-Dist: httpx==0.28.1; extra == 'telegram'
Requires-Dist: hyperframe==6.1.0; extra == 'telegram'
Requires-Dist: idna==3.10; extra == 'telegram'
Requires-Dist: pillow==11.3.0; extra == 'telegram'
Requires-Dist: python-telegram-bot==22.4; extra == 'telegram'
Requires-Dist: sniffio==1.3.1; extra == 'telegram'
Requires-Dist: socksio==1.0.0; extra == 'telegram'
Requires-Dist: typing-extensions==4.15.0; (python_full_version < '3.13') and extra == 'telegram'
Provides-Extra: transmission
Requires-Dist: certifi==2025.8.3; extra == 'transmission'
Requires-Dist: charset-normalizer==3.4.3; extra == 'transmission'
Requires-Dist: idna==3.10; extra == 'transmission'
Requires-Dist: requests==2.32.5; extra == 'transmission'
Requires-Dist: transmission-rpc==7.0.11; extra == 'transmission'
Requires-Dist: typing-extensions==4.15.0; extra == 'transmission'
Requires-Dist: urllib3==1.26.20; (platform_python_implementation == 'PyPy') and extra == 'transmission'
Requires-Dist: urllib3==2.5.0; (platform_python_implementation != 'PyPy') and extra == 'transmission'
Description-Content-Type: text/x-rst

.. image:: https://github.com/flexget/flexget/raw/develop/docs/_static/logo.png
   :align: center
   :target: https://flexget.com
   :height: 50

|

.. image:: https://img.shields.io/pypi/v/flexget?logo=pypi&labelColor=F3F3F3
   :target: https://pypi.org/project/flexget/

.. image:: https://img.shields.io/docker/v/flexget/flexget/latest?logo=docker&label=docker&labelColor=F3F3F3
   :target: https://hub.docker.com/r/flexget/flexget

.. image:: https://img.shields.io/pypi/pyversions/flexget?logo=python&labelColor=F3F3F3
   :target: https://pypi.org/project/flexget/

.. image:: https://img.shields.io/codecov/c/github/flexget/flexget?logo=codecov&labelColor=F3F3F3
   :target: https://codecov.io/gh/Flexget/Flexget

..
   Commenting these out for now, as they seem to be broken.
   .. image:: https://api.codacy.com/project/badge/Grade/86bb847efe984c12948bdeccabcbccad
      :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

.. image:: https://img.shields.io/github/actions/workflow/status/flexget/flexget/test.yml?logo=github&logoColor=222222&label=tests&labelColor=F3F3F3
   :target: https://github.com/Flexget/Flexget/actions/workflows/test.yml?query=branch%3Adevelop

.. image:: https://img.shields.io/readthedocs/flexget?logo=readthedocs&labelColor=F3F3F3
   :target: https://flexget.readthedocs.io/en/latest/

.. image:: https://img.shields.io/discord/536690097056120833?logo=discord&label=discord&labelColor=F3F3F3
   :target: https://discord.gg/W6CQrJx

`FlexGet`_ is a multipurpose automation tool for content like torrents, nzbs,
podcasts, comics, series, movies, etc. It can use different kinds of sources
like RSS-feeds, html pages, csv files, search engines and there are even
plugins for sites that do not provide any kind of useful feeds.

Example
=======
Flexget uses a `YAML`_ based configuration file.
The following example will look in the RSS feed in the link, will match any
item that match the series names and download it::

    tasks:
      tv:
        rss: http://example.com/torrents.xml
        series:
        - some series
        - another series
        download: /tvshows

There are numerous plugins that allow utilizing FlexGet in interesting ways
and more are being added continuously.

FlexGet is extremely useful in conjunction with applications which have watch
directory support or provide interface for external utilities like FlexGet.
To get a sense of the many things that can be done with FlexGet you can take
a look in our `cookbook`_.

.. _FlexGet: https://flexget.com

.. _YAML: http://www.yaml.org/

.. _cookbook: https://flexget.com/Cookbook


**ChangeLog:** https://flexget.com/ChangeLog

**Help:** https://github.com/Flexget/Flexget/discussions

**Chat:** https://flexget.com/Chat

**Bugs:** https://github.com/Flexget/Flexget/issues

**API reference** https://flexget.readthedocs.io/en/latest/api/flexget.html

Install
-------

FlexGet is installable via pip with the command::

   pip install flexget

For more detailed instructions see the `installation guide`_.

.. _installation guide: https://flexget.com/Install

How to contribute
-----------------------

Refer to the `contributor guide <https://flexget.readthedocs.io/en/latest/contributor/index.html>`__.

If you don't want to use virtualenv there's ``flexget_vanilla.py`` file which
can be used to run FlexGet without virtualenv, note that you will need to
install all required dependencies yourself.
