[misc] Add hatch, ruff, pre-commit and improve dev docs (#7409)

Authored by: bashonly, seproDev, Grub4K

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
This commit is contained in:
Simon Sawicki
2024-05-26 21:27:21 +02:00
committed by GitHub
parent a2e9031605
commit e897bd8292
264 changed files with 1224 additions and 1014 deletions
-1
View File
@@ -28,7 +28,6 @@ Fixes #
### Before submitting a *pull request* make sure you have: ### Before submitting a *pull request* make sure you have:
- [ ] At least skimmed through [contributing guidelines](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) including [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions) - [ ] At least skimmed through [contributing guidelines](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) including [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions)
- [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests - [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
- [ ] Checked the code with [flake8](https://pypi.python.org/pypi/flake8) and [ran relevant tests](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions)
### In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under [Unlicense](http://unlicense.org/). Check all of the following options that apply: ### In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under [Unlicense](http://unlicense.org/). Check all of the following options that apply:
- [ ] I am the original author of this code and I am willing to release it under [Unlicense](http://unlicense.org/) - [ ] I am the original author of this code and I am willing to release it under [Unlicense](http://unlicense.org/)
+1 -1
View File
@@ -53,7 +53,7 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install test requirements - name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev --include curl-cffi run: python3 ./devscripts/install_deps.py --include test --include curl-cffi
- name: Run tests - name: Run tests
continue-on-error: False continue-on-error: False
run: | run: |
+9 -7
View File
@@ -15,13 +15,13 @@ jobs:
with: with:
python-version: '3.8' python-version: '3.8'
- name: Install test requirements - name: Install test requirements
run: python3 ./devscripts/install_deps.py --include dev run: python3 ./devscripts/install_deps.py --include test
- name: Run tests - name: Run tests
run: | run: |
python3 -m yt_dlp -v || true python3 -m yt_dlp -v || true
python3 ./devscripts/run_tests.py core python3 ./devscripts/run_tests.py core
flake8: check:
name: Linter name: Code check
if: "!contains(github.event.head_commit.message, 'ci skip all')" if: "!contains(github.event.head_commit.message, 'ci skip all')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -29,9 +29,11 @@ jobs:
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.8' python-version: '3.8'
- name: Install flake8 - name: Install dev dependencies
run: python3 ./devscripts/install_deps.py -o --include dev run: python3 ./devscripts/install_deps.py -o --include static-analysis
- name: Make lazy extractors - name: Make lazy extractors
run: python3 ./devscripts/make_lazy_extractors.py run: python3 ./devscripts/make_lazy_extractors.py
- name: Run flake8 - name: Run ruff
run: flake8 . run: ruff check --output-format github .
- name: Run autopep8
run: autopep8 --diff .
+1 -1
View File
@@ -67,7 +67,7 @@ cookies
# Python # Python
*.pyc *.pyc
*.pyo *.pyo
.pytest_cache .*_cache
wine-py2exe/ wine-py2exe/
py2exe.log py2exe.log
build/ build/
+14
View File
@@ -0,0 +1,14 @@
repos:
- repo: local
hooks:
- id: linter
name: Apply linter fixes
entry: ruff check --fix .
language: system
types: [python]
require_serial: true
- id: format
name: Apply formatting fixes
entry: autopep8 --in-place .
language: system
types: [python]
+9
View File
@@ -0,0 +1,9 @@
repos:
- repo: local
hooks:
- id: fix
name: Apply code fixes
entry: hatch fmt
language: system
types: [python]
require_serial: true
+61 -16
View File
@@ -134,18 +134,53 @@ We follow [youtube-dl's policy](https://github.com/ytdl-org/youtube-dl#can-you-a
# DEVELOPER INSTRUCTIONS # DEVELOPER INSTRUCTIONS
Most users do not need to build yt-dlp and can [download the builds](https://github.com/yt-dlp/yt-dlp/releases) or get them via [the other installation methods](README.md#installation). Most users do not need to build yt-dlp and can [download the builds](https://github.com/yt-dlp/yt-dlp/releases), get them via [the other installation methods](README.md#installation) or directly run it using `python -m yt_dlp`.
To run yt-dlp as a developer, you don't need to build anything either. Simply execute `yt-dlp` uses [`hatch`](<https://hatch.pypa.io>) as a project management tool.
You can easily install it using [`pipx`](<https://pipx.pypa.io>) via `pipx install hatch`, or else via `pip` or your package manager of choice. Make sure you are using at least version `1.10.0`, otherwise some functionality might not work as expected.
python3 -m yt_dlp If you plan on contributing to `yt-dlp`, best practice is to start by running the following command:
To run all the available core tests, use: ```shell
$ hatch run setup
```
python3 devscripts/run_tests.py The above command will install a `pre-commit` hook so that required checks/fixes (linting, formatting) will run automatically before each commit. If any code needs to be linted or formatted, then the commit will be blocked and the necessary changes will be made; you should review all edits and re-commit the fixed version.
After this you can use `hatch shell` to enable a virtual environment that has `yt-dlp` and its development dependencies installed.
In addition, the following script commands can be used to run simple tasks such as linting or testing (without having to run `hatch shell` first):
* `hatch fmt`: Automatically fix linter violations and apply required code formatting changes
* See `hatch fmt --help` for more info
* `hatch test`: Run extractor or core tests
* See `hatch test --help` for more info
See item 6 of [new extractor tutorial](#adding-support-for-a-new-site) for how to run extractor specific test cases. See item 6 of [new extractor tutorial](#adding-support-for-a-new-site) for how to run extractor specific test cases.
While it is strongly recommended to use `hatch` for yt-dlp development, if you are unable to do so, alternatively you can manually create a virtual environment and use the following commands:
```shell
# To only install development dependencies:
$ python -m devscripts.install_deps --include dev
# Or, for an editable install plus dev dependencies:
$ python -m pip install -e ".[default,dev]"
# To setup the pre-commit hook:
$ pre-commit install
# To be used in place of `hatch test`:
$ python -m devscripts.run_tests
# To be used in place of `hatch fmt`:
$ ruff check --fix .
$ autopep8 --in-place .
# To only check code instead of applying fixes:
$ ruff check .
$ autopep8 --diff .
```
If you want to create a build of yt-dlp yourself, you can follow the instructions [here](README.md#compile). If you want to create a build of yt-dlp yourself, you can follow the instructions [here](README.md#compile).
@@ -165,12 +200,16 @@ After you have ensured this site is distributing its content legally, you can fo
1. [Fork this repository](https://github.com/yt-dlp/yt-dlp/fork) 1. [Fork this repository](https://github.com/yt-dlp/yt-dlp/fork)
1. Check out the source code with: 1. Check out the source code with:
git clone git@github.com:YOUR_GITHUB_USERNAME/yt-dlp.git ```shell
$ git clone git@github.com:YOUR_GITHUB_USERNAME/yt-dlp.git
```
1. Start a new git branch with 1. Start a new git branch with
cd yt-dlp ```shell
git checkout -b yourextractor $ cd yt-dlp
$ git checkout -b yourextractor
```
1. Start with this simple template and save it to `yt_dlp/extractor/yourextractor.py`: 1. Start with this simple template and save it to `yt_dlp/extractor/yourextractor.py`:
@@ -217,21 +256,27 @@ After you have ensured this site is distributing its content legally, you can fo
# TODO more properties (see yt_dlp/extractor/common.py) # TODO more properties (see yt_dlp/extractor/common.py)
} }
``` ```
1. Add an import in [`yt_dlp/extractor/_extractors.py`](yt_dlp/extractor/_extractors.py). Note that the class name must end with `IE`. 1. Add an import in [`yt_dlp/extractor/_extractors.py`](yt_dlp/extractor/_extractors.py). Note that the class name must end with `IE`. Also note that when adding a parenthesized import group, the last import in the group must have a trailing comma in order for this formatting to be respected by our code formatter.
1. Run `python3 devscripts/run_tests.py YourExtractor`. This *may fail* at first, but you can continually re-run it until you're done. Upon failure, it will output the missing fields and/or correct values which you can copy. If you decide to add more than one test, the tests will then be named `YourExtractor`, `YourExtractor_1`, `YourExtractor_2`, etc. Note that tests with an `only_matching` key in the test's dict are not included in the count. You can also run all the tests in one go with `YourExtractor_all` 1. Run `hatch test YourExtractor`. This *may fail* at first, but you can continually re-run it until you're done. Upon failure, it will output the missing fields and/or correct values which you can copy. If you decide to add more than one test, the tests will then be named `YourExtractor`, `YourExtractor_1`, `YourExtractor_2`, etc. Note that tests with an `only_matching` key in the test's dict are not included in the count. You can also run all the tests in one go with `YourExtractor_all`
1. Make sure you have at least one test for your extractor. Even if all videos covered by the extractor are expected to be inaccessible for automated testing, tests should still be added with a `skip` parameter indicating why the particular test is disabled from running. 1. Make sure you have at least one test for your extractor. Even if all videos covered by the extractor are expected to be inaccessible for automated testing, tests should still be added with a `skip` parameter indicating why the particular test is disabled from running.
1. Have a look at [`yt_dlp/extractor/common.py`](yt_dlp/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should and may return](yt_dlp/extractor/common.py#L119-L440). Add tests and code for as many as you want. 1. Have a look at [`yt_dlp/extractor/common.py`](yt_dlp/extractor/common.py) for possible helper methods and a [detailed description of what your extractor should and may return](yt_dlp/extractor/common.py#L119-L440). Add tests and code for as many as you want.
1. Make sure your code follows [yt-dlp coding conventions](#yt-dlp-coding-conventions) and check the code with [flake8](https://flake8.pycqa.org/en/latest/index.html#quickstart): 1. Make sure your code follows [yt-dlp coding conventions](#yt-dlp-coding-conventions), passes [ruff](https://docs.astral.sh/ruff/tutorial/#getting-started) code checks and is properly formatted:
$ flake8 yt_dlp/extractor/yourextractor.py ```shell
$ hatch fmt --check
```
You can use `hatch fmt` to automatically fix problems.
1. Make sure your code works under all [Python](https://www.python.org/) versions supported by yt-dlp, namely CPython and PyPy for Python 3.8 and above. Backward compatibility is not required for even older versions of Python. 1. Make sure your code works under all [Python](https://www.python.org/) versions supported by yt-dlp, namely CPython and PyPy for Python 3.8 and above. Backward compatibility is not required for even older versions of Python.
1. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files, [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this: 1. When the tests pass, [add](https://git-scm.com/docs/git-add) the new files, [commit](https://git-scm.com/docs/git-commit) them and [push](https://git-scm.com/docs/git-push) the result, like this:
$ git add yt_dlp/extractor/_extractors.py ```shell
$ git add yt_dlp/extractor/yourextractor.py $ git add yt_dlp/extractor/_extractors.py
$ git commit -m '[yourextractor] Add extractor' $ git add yt_dlp/extractor/yourextractor.py
$ git push origin yourextractor $ git commit -m '[yourextractor] Add extractor'
$ git push origin yourextractor
```
1. Finally, [create a pull request](https://help.github.com/articles/creating-a-pull-request). We'll then review and merge it. 1. Finally, [create a pull request](https://help.github.com/articles/creating-a-pull-request). We'll then review and merge it.
+4 -3
View File
@@ -27,7 +27,7 @@ clean-dist:
yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS
clean-cache: clean-cache:
find . \( \ find . \( \
-type d -name .pytest_cache -o -type d -name __pycache__ -o -name "*.pyc" -o -name "*.class" \ -type d -name ".*_cache" -o -type d -name __pycache__ -o -name "*.pyc" -o -name "*.class" \
\) -prune -exec rm -rf {} \; \) -prune -exec rm -rf {} \;
completion-bash: completions/bash/yt-dlp completion-bash: completions/bash/yt-dlp
@@ -70,7 +70,8 @@ uninstall:
rm -f $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d/yt-dlp.fish rm -f $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d/yt-dlp.fish
codetest: codetest:
flake8 . ruff check .
autopep8 --diff .
test: test:
$(PYTHON) -m pytest $(PYTHON) -m pytest
@@ -151,7 +152,7 @@ yt-dlp.tar.gz: all
--exclude '*.pyo' \ --exclude '*.pyo' \
--exclude '*~' \ --exclude '*~' \
--exclude '__pycache__' \ --exclude '__pycache__' \
--exclude '.pytest_cache' \ --exclude '.*_cache' \
--exclude '.git' \ --exclude '.git' \
-- \ -- \
README.md supportedsites.md Changelog.md LICENSE \ README.md supportedsites.md Changelog.md LICENSE \
+10 -2
View File
@@ -42,17 +42,25 @@ def parse_args():
def main(): def main():
args = parse_args() args = parse_args()
project_table = parse_toml(read_file(args.input))['project'] project_table = parse_toml(read_file(args.input))['project']
recursive_pattern = re.compile(rf'{project_table["name"]}\[(?P<group_name>[\w-]+)\]')
optional_groups = project_table['optional-dependencies'] optional_groups = project_table['optional-dependencies']
excludes = args.exclude or [] excludes = args.exclude or []
def yield_deps(group):
for dep in group:
if mobj := recursive_pattern.fullmatch(dep):
yield from optional_groups.get(mobj.group('group_name'), [])
else:
yield dep
targets = [] targets = []
if not args.only_optional: # `-o` should exclude 'dependencies' and the 'default' group if not args.only_optional: # `-o` should exclude 'dependencies' and the 'default' group
targets.extend(project_table['dependencies']) targets.extend(project_table['dependencies'])
if 'default' not in excludes: # `--exclude default` should exclude entire 'default' group if 'default' not in excludes: # `--exclude default` should exclude entire 'default' group
targets.extend(optional_groups['default']) targets.extend(yield_deps(optional_groups['default']))
for include in filter(None, map(optional_groups.get, args.include or [])): for include in filter(None, map(optional_groups.get, args.include or [])):
targets.extend(include) targets.extend(yield_deps(include))
targets = [t for t in targets if re.match(r'[\w-]+', t).group(0).lower() not in excludes] targets = [t for t in targets if re.match(r'[\w-]+', t).group(0).lower() not in excludes]
+9 -5
View File
@@ -4,6 +4,7 @@ import argparse
import functools import functools
import os import os
import re import re
import shlex
import subprocess import subprocess
import sys import sys
from pathlib import Path from pathlib import Path
@@ -18,6 +19,8 @@ def parse_args():
'test', help='a extractor tests, or one of "core" or "download"', nargs='*') 'test', help='a extractor tests, or one of "core" or "download"', nargs='*')
parser.add_argument( parser.add_argument(
'-k', help='run a test matching EXPRESSION. Same as "pytest -k"', metavar='EXPRESSION') '-k', help='run a test matching EXPRESSION. Same as "pytest -k"', metavar='EXPRESSION')
parser.add_argument(
'--pytest-args', help='arguments to passthrough to pytest')
return parser.parse_args() return parser.parse_args()
@@ -26,15 +29,16 @@ def run_tests(*tests, pattern=None, ci=False):
run_download = 'download' in tests run_download = 'download' in tests
tests = list(map(fix_test_name, tests)) tests = list(map(fix_test_name, tests))
arguments = ['pytest', '-Werror', '--tb=short'] pytest_args = args.pytest_args or os.getenv('HATCH_TEST_ARGS', '')
arguments = ['pytest', '-Werror', '--tb=short', *shlex.split(pytest_args)]
if ci: if ci:
arguments.append('--color=yes') arguments.append('--color=yes')
if pattern:
arguments.extend(['-k', pattern])
if run_core: if run_core:
arguments.extend(['-m', 'not download']) arguments.extend(['-m', 'not download'])
elif run_download: elif run_download:
arguments.extend(['-m', 'download']) arguments.extend(['-m', 'download'])
elif pattern:
arguments.extend(['-k', pattern])
else: else:
arguments.extend( arguments.extend(
f'test/test_download.py::TestDownload::test_{test}' for test in tests) f'test/test_download.py::TestDownload::test_{test}' for test in tests)
@@ -46,13 +50,13 @@ def run_tests(*tests, pattern=None, ci=False):
pass pass
arguments = [sys.executable, '-Werror', '-m', 'unittest'] arguments = [sys.executable, '-Werror', '-m', 'unittest']
if pattern:
arguments.extend(['-k', pattern])
if run_core: if run_core:
print('"pytest" needs to be installed to run core tests', file=sys.stderr, flush=True) print('"pytest" needs to be installed to run core tests', file=sys.stderr, flush=True)
return 1 return 1
elif run_download: elif run_download:
arguments.append('test.test_download') arguments.append('test.test_download')
elif pattern:
arguments.extend(['-k', pattern])
else: else:
arguments.extend( arguments.extend(
f'test.test_download.TestDownload.test_{test}' for test in tests) f'test.test_download.TestDownload.test_{test}' for test in tests)
+153 -3
View File
@@ -66,9 +66,16 @@ build = [
"wheel", "wheel",
] ]
dev = [ dev = [
"flake8", "pre-commit",
"isort", "yt-dlp[static-analysis]",
"pytest", "yt-dlp[test]",
]
static-analysis = [
"autopep8~=2.0",
"ruff~=0.4.4",
]
test = [
"pytest~=8.1",
] ]
pyinstaller = [ pyinstaller = [
"pyinstaller>=6.3; sys_platform!='darwin'", "pyinstaller>=6.3; sys_platform!='darwin'",
@@ -126,3 +133,146 @@ artifacts = ["/yt_dlp/extractor/lazy_extractors.py"]
[tool.hatch.version] [tool.hatch.version]
path = "yt_dlp/version.py" path = "yt_dlp/version.py"
pattern = "_pkg_version = '(?P<version>[^']+)'" pattern = "_pkg_version = '(?P<version>[^']+)'"
[tool.hatch.envs.default]
features = ["curl-cffi", "default"]
dependencies = ["pre-commit"]
path = ".venv"
installer = "uv"
[tool.hatch.envs.default.scripts]
setup = "pre-commit install --config .pre-commit-hatch.yaml"
yt-dlp = "python -Werror -Xdev -m yt_dlp {args}"
[tool.hatch.envs.hatch-static-analysis]
detached = true
features = ["static-analysis"]
dependencies = [] # override hatch ruff version
config-path = "pyproject.toml"
[tool.hatch.envs.hatch-static-analysis.scripts]
format-check = "autopep8 --diff {args:.}"
format-fix = "autopep8 --in-place {args:.}"
lint-check = "ruff check {args:.}"
lint-fix = "ruff check --fix {args:.}"
[tool.hatch.envs.hatch-test]
features = ["test"]
dependencies = [
"pytest-randomly~=3.15",
"pytest-rerunfailures~=14.0",
"pytest-xdist[psutil]~=3.5",
]
[tool.hatch.envs.hatch-test.scripts]
run = "python -m devscripts.run_tests {args}"
run-cov = "echo Code coverage not implemented && exit 1"
[[tool.hatch.envs.hatch-test.matrix]]
python = [
"3.8",
"3.9",
"3.10",
"3.11",
"3.12",
"pypy3.8",
"pypy3.9",
"pypy3.10",
]
[tool.ruff]
line-length = 120
[tool.ruff.lint]
ignore = [
"E402", # module level import not at top of file
"E501", # line too long
"E731", # do not assign a lambda expression, use a def
"E741", # ambiguous variable name
]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # import order
]
[tool.ruff.lint.per-file-ignores]
"devscripts/lazy_load_template.py" = ["F401"]
"!yt_dlp/extractor/**.py" = ["I"]
[tool.ruff.lint.isort]
known-first-party = [
"bundle",
"devscripts",
"test",
]
relative-imports-order = "closest-to-furthest"
[tool.autopep8]
max_line_length = 120
recursive = true
exit-code = true
jobs = 0
select = [
"E101",
"E112",
"E113",
"E115",
"E116",
"E117",
"E121",
"E122",
"E123",
"E124",
"E125",
"E126",
"E127",
"E128",
"E129",
"E131",
"E201",
"E202",
"E203",
"E211",
"E221",
"E222",
"E223",
"E224",
"E225",
"E226",
"E227",
"E228",
"E231",
"E241",
"E242",
"E251",
"E252",
"E261",
"E262",
"E265",
"E266",
"E271",
"E272",
"E273",
"E274",
"E275",
"E301",
"E302",
"E303",
"E304",
"E305",
"E306",
"E502",
"E701",
"E702",
"E704",
"W391",
"W504",
]
[tool.pytest.ini_options]
addopts = "-ra -v --strict-markers"
markers = [
"download",
]
-6
View File
@@ -14,12 +14,6 @@ remove-duplicate-keys = true
remove-unused-variables = true remove-unused-variables = true
[tool:pytest]
addopts = -ra -v --strict-markers
markers =
download
[tox:tox] [tox:tox]
skipsdist = true skipsdist = true
envlist = py{38,39,310,311,312},pypy{38,39,310} envlist = py{38,39,310,311,312},pypy{38,39,310}
+1
View File
@@ -93,6 +93,7 @@ if urllib3:
This allows us to chain multiple TLS connections. This allows us to chain multiple TLS connections.
""" """
def __init__(self, socket, ssl_context, server_hostname=None, suppress_ragged_eofs=True, server_side=False): def __init__(self, socket, ssl_context, server_hostname=None, suppress_ragged_eofs=True, server_side=False):
self.incoming = ssl.MemoryBIO() self.incoming = ssl.MemoryBIO()
self.outgoing = ssl.MemoryBIO() self.outgoing = ssl.MemoryBIO()
+567 -498
View File
@@ -1,4 +1,5 @@
# flake8: noqa: F401 # flake8: noqa: F401
# isort: off
from .youtube import ( # Youtube is moved to the top to improve performance from .youtube import ( # Youtube is moved to the top to improve performance
YoutubeIE, YoutubeIE,
@@ -24,6 +25,8 @@ from .youtube import ( # Youtube is moved to the top to improve performance
YoutubeConsentRedirectIE, YoutubeConsentRedirectIE,
) )
# isort: on
from .abc import ( from .abc import (
ABCIE, ABCIE,
ABCIViewIE, ABCIViewIE,
@@ -43,27 +46,33 @@ from .abematv import (
) )
from .academicearth import AcademicEarthCourseIE from .academicearth import AcademicEarthCourseIE
from .acast import ( from .acast import (
ACastIE,
ACastChannelIE, ACastChannelIE,
ACastIE,
)
from .acfun import (
AcFunBangumiIE,
AcFunVideoIE,
)
from .adn import (
ADNIE,
ADNSeasonIE,
) )
from .acfun import AcFunVideoIE, AcFunBangumiIE
from .adn import ADNIE, ADNSeasonIE
from .adobeconnect import AdobeConnectIE from .adobeconnect import AdobeConnectIE
from .adobetv import ( from .adobetv import (
AdobeTVChannelIE,
AdobeTVEmbedIE, AdobeTVEmbedIE,
AdobeTVIE, AdobeTVIE,
AdobeTVShowIE, AdobeTVShowIE,
AdobeTVChannelIE,
AdobeTVVideoIE, AdobeTVVideoIE,
) )
from .adultswim import AdultSwimIE from .adultswim import AdultSwimIE
from .aenetworks import ( from .aenetworks import (
AENetworksIE,
AENetworksCollectionIE, AENetworksCollectionIE,
AENetworksIE,
AENetworksShowIE, AENetworksShowIE,
HistoryTopicIE,
HistoryPlayerIE,
BiographyIE, BiographyIE,
HistoryPlayerIE,
HistoryTopicIE,
) )
from .aeonco import AeonCoIE from .aeonco import AeonCoIE
from .afreecatv import ( from .afreecatv import (
@@ -79,77 +88,85 @@ from .agora import (
) )
from .airtv import AirTVIE from .airtv import AirTVIE
from .aitube import AitubeKZVideoIE from .aitube import AitubeKZVideoIE
from .aliexpress import AliExpressLiveIE
from .aljazeera import AlJazeeraIE from .aljazeera import AlJazeeraIE
from .allocine import AllocineIE
from .allstar import ( from .allstar import (
AllstarIE, AllstarIE,
AllstarProfileIE, AllstarProfileIE,
) )
from .alphaporno import AlphaPornoIE from .alphaporno import AlphaPornoIE
from .alsace20tv import (
Alsace20TVEmbedIE,
Alsace20TVIE,
)
from .altcensored import ( from .altcensored import (
AltCensoredIE,
AltCensoredChannelIE, AltCensoredChannelIE,
AltCensoredIE,
) )
from .alura import ( from .alura import (
AluraCourseIE,
AluraIE, AluraIE,
AluraCourseIE
) )
from .amadeustv import AmadeusTVIE from .amadeustv import AmadeusTVIE
from .amara import AmaraIE from .amara import AmaraIE
from .amcnetworks import AMCNetworksIE
from .amazon import ( from .amazon import (
AmazonStoreIE,
AmazonReviewsIE, AmazonReviewsIE,
AmazonStoreIE,
) )
from .amazonminitv import ( from .amazonminitv import (
AmazonMiniTVIE, AmazonMiniTVIE,
AmazonMiniTVSeasonIE, AmazonMiniTVSeasonIE,
AmazonMiniTVSeriesIE, AmazonMiniTVSeriesIE,
) )
from .amcnetworks import AMCNetworksIE
from .americastestkitchen import ( from .americastestkitchen import (
AmericasTestKitchenIE, AmericasTestKitchenIE,
AmericasTestKitchenSeasonIE, AmericasTestKitchenSeasonIE,
) )
from .anchorfm import AnchorFMEpisodeIE from .anchorfm import AnchorFMEpisodeIE
from .angel import AngelIE from .angel import AngelIE
from .antenna import (
Ant1NewsGrArticleIE,
Ant1NewsGrEmbedIE,
AntennaGrWatchIE,
)
from .anvato import AnvatoIE from .anvato import AnvatoIE
from .aol import AolIE from .aol import AolIE
from .allocine import AllocineIE
from .aliexpress import AliExpressLiveIE
from .alsace20tv import (
Alsace20TVIE,
Alsace20TVEmbedIE,
)
from .apa import APAIE from .apa import APAIE
from .aparat import AparatIE from .aparat import AparatIE
from .appleconnect import AppleConnectIE from .appleconnect import AppleConnectIE
from .applepodcasts import ApplePodcastsIE
from .appletrailers import ( from .appletrailers import (
AppleTrailersIE, AppleTrailersIE,
AppleTrailersSectionIE, AppleTrailersSectionIE,
) )
from .applepodcasts import ApplePodcastsIE
from .archiveorg import ( from .archiveorg import (
ArchiveOrgIE, ArchiveOrgIE,
YoutubeWebArchiveIE, YoutubeWebArchiveIE,
) )
from .arcpublishing import ArcPublishingIE from .arcpublishing import ArcPublishingIE
from .arkena import ArkenaIE
from .ard import ( from .ard import (
ARDIE,
ARDBetaMediathekIE, ARDBetaMediathekIE,
ARDMediathekCollectionIE, ARDMediathekCollectionIE,
ARDIE,
) )
from .arkena import ArkenaIE
from .arnes import ArnesIE
from .art19 import ( from .art19 import (
Art19IE, Art19IE,
Art19ShowIE, Art19ShowIE,
) )
from .arte import ( from .arte import (
ArteTVIE,
ArteTVEmbedIE,
ArteTVPlaylistIE,
ArteTVCategoryIE, ArteTVCategoryIE,
ArteTVEmbedIE,
ArteTVIE,
ArteTVPlaylistIE,
)
from .asobichannel import (
AsobiChannelIE,
AsobiChannelTagURLIE,
) )
from .arnes import ArnesIE
from .asobichannel import AsobiChannelIE, AsobiChannelTagURLIE
from .asobistage import AsobiStageIE from .asobistage import AsobiStageIE
from .atresplayer import AtresPlayerIE from .atresplayer import AtresPlayerIE
from .atscaleconf import AtScaleConfEventIE from .atscaleconf import AtScaleConfEventIE
@@ -160,57 +177,60 @@ from .audiodraft import (
AudiodraftCustomIE, AudiodraftCustomIE,
AudiodraftGenericIE, AudiodraftGenericIE,
) )
from .audiomack import AudiomackIE, AudiomackAlbumIE from .audiomack import (
AudiomackAlbumIE,
AudiomackIE,
)
from .audius import ( from .audius import (
AudiusIE, AudiusIE,
AudiusTrackIE,
AudiusPlaylistIE, AudiusPlaylistIE,
AudiusProfileIE, AudiusProfileIE,
AudiusTrackIE,
) )
from .awaan import ( from .awaan import (
AWAANIE, AWAANIE,
AWAANVideoIE,
AWAANLiveIE, AWAANLiveIE,
AWAANSeasonIE, AWAANSeasonIE,
AWAANVideoIE,
) )
from .axs import AxsIE from .axs import AxsIE
from .azmedien import AZMedienIE from .azmedien import AZMedienIE
from .baidu import BaiduVideoIE from .baidu import BaiduVideoIE
from .banbye import ( from .banbye import (
BanByeIE,
BanByeChannelIE, BanByeChannelIE,
BanByeIE,
) )
from .bandaichannel import BandaiChannelIE from .bandaichannel import BandaiChannelIE
from .bandcamp import ( from .bandcamp import (
BandcampIE,
BandcampAlbumIE, BandcampAlbumIE,
BandcampWeeklyIE, BandcampIE,
BandcampUserIE, BandcampUserIE,
BandcampWeeklyIE,
) )
from .bannedvideo import BannedVideoIE from .bannedvideo import BannedVideoIE
from .bbc import ( from .bbc import (
BBCCoUkIE, BBCIE,
BBCCoUkArticleIE, BBCCoUkArticleIE,
BBCCoUkIE,
BBCCoUkIPlayerEpisodesIE, BBCCoUkIPlayerEpisodesIE,
BBCCoUkIPlayerGroupIE, BBCCoUkIPlayerGroupIE,
BBCCoUkPlaylistIE, BBCCoUkPlaylistIE,
BBCIE,
) )
from .beatbump import (
BeatBumpPlaylistIE,
BeatBumpVideoIE,
)
from .beatport import BeatportIE
from .beeg import BeegIE from .beeg import BeegIE
from .behindkink import BehindKinkIE from .behindkink import BehindKinkIE
from .bellmedia import BellMediaIE from .bellmedia import BellMediaIE
from .beatbump import (
BeatBumpVideoIE,
BeatBumpPlaylistIE,
)
from .beatport import BeatportIE
from .berufetv import BerufeTVIE from .berufetv import BerufeTVIE
from .bet import BetIE from .bet import BetIE
from .bfi import BFIPlayerIE from .bfi import BFIPlayerIE
from .bfmtv import ( from .bfmtv import (
BFMTVIE, BFMTVIE,
BFMTVLiveIE,
BFMTVArticleIE, BFMTVArticleIE,
BFMTVLiveIE,
) )
from .bibeltv import ( from .bibeltv import (
BibelTVLiveIE, BibelTVLiveIE,
@@ -221,37 +241,37 @@ from .bigflix import BigflixIE
from .bigo import BigoIE from .bigo import BigoIE
from .bild import BildIE from .bild import BildIE
from .bilibili import ( from .bilibili import (
BiliBiliIE, BilibiliAudioAlbumIE,
BilibiliAudioIE,
BiliBiliBangumiIE, BiliBiliBangumiIE,
BiliBiliBangumiSeasonIE,
BiliBiliBangumiMediaIE, BiliBiliBangumiMediaIE,
BiliBiliBangumiSeasonIE,
BilibiliCategoryIE,
BilibiliCheeseIE, BilibiliCheeseIE,
BilibiliCheeseSeasonIE, BilibiliCheeseSeasonIE,
BiliBiliSearchIE,
BilibiliCategoryIE,
BilibiliAudioIE,
BilibiliAudioAlbumIE,
BiliBiliPlayerIE,
BilibiliSpaceVideoIE,
BilibiliSpaceAudioIE,
BilibiliCollectionListIE, BilibiliCollectionListIE,
BilibiliSeriesListIE,
BilibiliFavoritesListIE, BilibiliFavoritesListIE,
BilibiliWatchlaterIE, BiliBiliIE,
BiliBiliPlayerIE,
BilibiliPlaylistIE, BilibiliPlaylistIE,
BiliBiliSearchIE,
BilibiliSeriesListIE,
BilibiliSpaceAudioIE,
BilibiliSpaceVideoIE,
BilibiliWatchlaterIE,
BiliIntlIE, BiliIntlIE,
BiliIntlSeriesIE, BiliIntlSeriesIE,
BiliLiveIE, BiliLiveIE,
) )
from .biobiochiletv import BioBioChileTVIE from .biobiochiletv import BioBioChileTVIE
from .bitchute import ( from .bitchute import (
BitChuteIE,
BitChuteChannelIE, BitChuteChannelIE,
BitChuteIE,
) )
from .blackboardcollaborate import BlackboardCollaborateIE from .blackboardcollaborate import BlackboardCollaborateIE
from .bleacherreport import ( from .bleacherreport import (
BleacherReportIE,
BleacherReportCMSIE, BleacherReportCMSIE,
BleacherReportIE,
) )
from .blerp import BlerpIE from .blerp import BlerpIE
from .blogger import BloggerIE from .blogger import BloggerIE
@@ -264,27 +284,27 @@ from .box import BoxIE
from .boxcast import BoxCastVideoIE from .boxcast import BoxCastVideoIE
from .bpb import BpbIE from .bpb import BpbIE
from .br import BRIE from .br import BRIE
from .bravotv import BravoTVIE
from .brainpop import ( from .brainpop import (
BrainPOPIE,
BrainPOPJrIE,
BrainPOPELLIE, BrainPOPELLIE,
BrainPOPEspIE, BrainPOPEspIE,
BrainPOPFrIE, BrainPOPFrIE,
BrainPOPIE,
BrainPOPIlIE, BrainPOPIlIE,
BrainPOPJrIE,
) )
from .bravotv import BravoTVIE
from .breitbart import BreitBartIE from .breitbart import BreitBartIE
from .brightcove import ( from .brightcove import (
BrightcoveLegacyIE, BrightcoveLegacyIE,
BrightcoveNewIE, BrightcoveNewIE,
) )
from .brilliantpala import ( from .brilliantpala import (
BrilliantpalaElearnIE,
BrilliantpalaClassesIE, BrilliantpalaClassesIE,
BrilliantpalaElearnIE,
) )
from .businessinsider import BusinessInsiderIE
from .bundesliga import BundesligaIE from .bundesliga import BundesligaIE
from .bundestag import BundestagIE from .bundestag import BundestagIE
from .businessinsider import BusinessInsiderIE
from .buzzfeed import BuzzFeedIE from .buzzfeed import BuzzFeedIE
from .byutv import BYUtvIE from .byutv import BYUtvIE
from .c56 import C56IE from .c56 import C56IE
@@ -292,40 +312,40 @@ from .callin import CallinIE
from .caltrans import CaltransIE from .caltrans import CaltransIE
from .cam4 import CAM4IE from .cam4 import CAM4IE
from .camdemy import ( from .camdemy import (
CamdemyFolderIE,
CamdemyIE, CamdemyIE,
CamdemyFolderIE
) )
from .camfm import ( from .camfm import (
CamFMEpisodeIE, CamFMEpisodeIE,
CamFMShowIE CamFMShowIE,
) )
from .cammodels import CamModelsIE from .cammodels import CamModelsIE
from .camsoda import CamsodaIE from .camsoda import CamsodaIE
from .camtasia import CamtasiaEmbedIE from .camtasia import CamtasiaEmbedIE
from .canal1 import Canal1IE from .canal1 import Canal1IE
from .canalalpha import CanalAlphaIE from .canalalpha import CanalAlphaIE
from .canalplus import CanalplusIE
from .canalc2 import Canalc2IE from .canalc2 import Canalc2IE
from .canalplus import CanalplusIE
from .caracoltv import CaracolTvPlayIE from .caracoltv import CaracolTvPlayIE
from .cartoonnetwork import CartoonNetworkIE from .cartoonnetwork import CartoonNetworkIE
from .cbc import ( from .cbc import (
CBCIE, CBCIE,
CBCGemIE,
CBCGemLiveIE,
CBCGemPlaylistIE,
CBCPlayerIE, CBCPlayerIE,
CBCPlayerPlaylistIE, CBCPlayerPlaylistIE,
CBCGemIE,
CBCGemPlaylistIE,
CBCGemLiveIE,
) )
from .cbs import ( from .cbs import (
CBSIE, CBSIE,
ParamountPressExpressIE, ParamountPressExpressIE,
) )
from .cbsnews import ( from .cbsnews import (
CBSLocalArticleIE,
CBSLocalIE,
CBSLocalLiveIE,
CBSNewsEmbedIE, CBSNewsEmbedIE,
CBSNewsIE, CBSNewsIE,
CBSLocalIE,
CBSLocalArticleIE,
CBSLocalLiveIE,
CBSNewsLiveIE, CBSNewsLiveIE,
CBSNewsLiveVideoIE, CBSNewsLiveVideoIE,
) )
@@ -354,12 +374,12 @@ from .chzzk import (
from .cinemax import CinemaxIE from .cinemax import CinemaxIE
from .cinetecamilano import CinetecaMilanoIE from .cinetecamilano import CinetecaMilanoIE
from .cineverse import ( from .cineverse import (
CineverseIE,
CineverseDetailsIE, CineverseDetailsIE,
CineverseIE,
) )
from .ciscolive import ( from .ciscolive import (
CiscoLiveSessionIE,
CiscoLiveSearchIE, CiscoLiveSearchIE,
CiscoLiveSessionIE,
) )
from .ciscowebex import CiscoWebexIE from .ciscowebex import CiscoWebexIE
from .cjsw import CJSWIE from .cjsw import CJSWIE
@@ -372,16 +392,13 @@ from .cloudycdn import CloudyCDNIE
from .clubic import ClubicIE from .clubic import ClubicIE
from .clyp import ClypIE from .clyp import ClypIE
from .cmt import CMTIE from .cmt import CMTIE
from .cnbc import ( from .cnbc import CNBCVideoIE
CNBCVideoIE,
)
from .cnn import ( from .cnn import (
CNNIE, CNNIE,
CNNBlogsIE,
CNNArticleIE, CNNArticleIE,
CNNBlogsIE,
CNNIndonesiaIE, CNNIndonesiaIE,
) )
from .coub import CoubIE
from .comedycentral import ( from .comedycentral import (
ComedyCentralIE, ComedyCentralIE,
ComedyCentralTVIE, ComedyCentralTVIE,
@@ -399,44 +416,48 @@ from .commonprotocols import (
from .condenast import CondeNastIE from .condenast import CondeNastIE
from .contv import CONtvIE from .contv import CONtvIE
from .corus import CorusIE from .corus import CorusIE
from .coub import CoubIE
from .cozytv import CozyTVIE
from .cpac import ( from .cpac import (
CPACIE, CPACIE,
CPACPlaylistIE, CPACPlaylistIE,
) )
from .cozytv import CozyTVIE
from .cracked import CrackedIE from .cracked import CrackedIE
from .crackle import CrackleIE from .crackle import CrackleIE
from .craftsy import CraftsyIE from .craftsy import CraftsyIE
from .crooksandliars import CrooksAndLiarsIE from .crooksandliars import CrooksAndLiarsIE
from .crowdbunker import ( from .crowdbunker import (
CrowdBunkerIE,
CrowdBunkerChannelIE, CrowdBunkerChannelIE,
CrowdBunkerIE,
) )
from .crtvg import CrtvgIE from .crtvg import CrtvgIE
from .crunchyroll import ( from .crunchyroll import (
CrunchyrollArtistIE,
CrunchyrollBetaIE, CrunchyrollBetaIE,
CrunchyrollBetaShowIE, CrunchyrollBetaShowIE,
CrunchyrollMusicIE, CrunchyrollMusicIE,
CrunchyrollArtistIE,
) )
from .cspan import CSpanIE, CSpanCongressIE from .cspan import (
CSpanCongressIE,
CSpanIE,
)
from .ctsnews import CtsNewsIE from .ctsnews import CtsNewsIE
from .ctv import CTVIE from .ctv import CTVIE
from .ctvnews import CTVNewsIE from .ctvnews import CTVNewsIE
from .cultureunplugged import CultureUnpluggedIE from .cultureunplugged import CultureUnpluggedIE
from .curiositystream import ( from .curiositystream import (
CuriosityStreamIE,
CuriosityStreamCollectionsIE, CuriosityStreamCollectionsIE,
CuriosityStreamIE,
CuriosityStreamSeriesIE, CuriosityStreamSeriesIE,
) )
from .cwtv import CWTVIE from .cwtv import CWTVIE
from .cybrary import ( from .cybrary import (
CybraryCourseIE,
CybraryIE, CybraryIE,
CybraryCourseIE
) )
from .dacast import ( from .dacast import (
DacastVODIE,
DacastPlaylistIE, DacastPlaylistIE,
DacastVODIE,
) )
from .dailymail import DailyMailIE from .dailymail import DailyMailIE
from .dailymotion import ( from .dailymotion import (
@@ -458,8 +479,8 @@ from .dangalplay import (
DangalPlaySeasonIE, DangalPlaySeasonIE,
) )
from .daum import ( from .daum import (
DaumIE,
DaumClipIE, DaumClipIE,
DaumIE,
DaumPlaylistIE, DaumPlaylistIE,
DaumUserIE, DaumUserIE,
) )
@@ -467,49 +488,69 @@ from .daystar import DaystarClipIE
from .dbtv import DBTVIE from .dbtv import DBTVIE
from .dctp import DctpTvIE from .dctp import DctpTvIE
from .deezer import ( from .deezer import (
DeezerPlaylistIE,
DeezerAlbumIE, DeezerAlbumIE,
DeezerPlaylistIE,
) )
from .democracynow import DemocracynowIE from .democracynow import DemocracynowIE
from .detik import DetikEmbedIE from .detik import DetikEmbedIE
from .deuxm import (
DeuxMIE,
DeuxMNewsIE,
)
from .dfb import DFBIE
from .dhm import DHMIE
from .digitalconcerthall import DigitalConcertHallIE
from .digiteka import DigitekaIE
from .discogs import DiscogsReleasePlaylistIE
from .discovery import DiscoveryIE
from .disney import DisneyIE
from .dispeak import DigitallySpeakingIE
from .dlf import ( from .dlf import (
DLFIE, DLFIE,
DLFCorpusIE, DLFCorpusIE,
) )
from .dfb import DFBIE from .dlive import (
from .dhm import DHMIE DLiveStreamIE,
DLiveVODIE,
)
from .douyutv import ( from .douyutv import (
DouyuShowIE, DouyuShowIE,
DouyuTVIE, DouyuTVIE,
) )
from .dplay import ( from .dplay import (
DPlayIE,
DiscoveryPlusIE,
HGTVDeIE,
GoDiscoveryIE,
TravelChannelIE,
CookingChannelIE,
HGTVUsaIE,
FoodNetworkIE,
InvestigationDiscoveryIE,
DestinationAmericaIE,
AmHistoryChannelIE,
ScienceChannelIE,
DIYNetworkIE,
DiscoveryLifeIE,
AnimalPlanetIE,
TLCIE, TLCIE,
MotorTrendIE, AmHistoryChannelIE,
MotorTrendOnDemandIE, AnimalPlanetIE,
DiscoveryPlusIndiaIE, CookingChannelIE,
DestinationAmericaIE,
DiscoveryLifeIE,
DiscoveryNetworksDeIE, DiscoveryNetworksDeIE,
DiscoveryPlusIE,
DiscoveryPlusIndiaIE,
DiscoveryPlusIndiaShowIE,
DiscoveryPlusItalyIE, DiscoveryPlusItalyIE,
DiscoveryPlusItalyShowIE, DiscoveryPlusItalyShowIE,
DiscoveryPlusIndiaShowIE, DIYNetworkIE,
DPlayIE,
FoodNetworkIE,
GlobalCyclingNetworkPlusIE, GlobalCyclingNetworkPlusIE,
GoDiscoveryIE,
HGTVDeIE,
HGTVUsaIE,
InvestigationDiscoveryIE,
MotorTrendIE,
MotorTrendOnDemandIE,
ScienceChannelIE,
TravelChannelIE,
) )
from .dreisat import DreiSatIE
from .drbonanza import DRBonanzaIE from .drbonanza import DRBonanzaIE
from .dreisat import DreiSatIE
from .drooble import DroobleIE
from .dropbox import DropboxIE
from .dropout import (
DropoutIE,
DropoutSeasonIE,
)
from .drtuber import DrTuberIE from .drtuber import DrTuberIE
from .drtv import ( from .drtv import (
DRTVIE, DRTVIE,
@@ -518,32 +559,21 @@ from .drtv import (
DRTVSeriesIE, DRTVSeriesIE,
) )
from .dtube import DTubeIE from .dtube import DTubeIE
from .dvtv import DVTVIE
from .duboku import ( from .duboku import (
DubokuIE, DubokuIE,
DubokuPlaylistIE DubokuPlaylistIE,
) )
from .dumpert import DumpertIE from .dumpert import DumpertIE
from .deuxm import (
DeuxMIE,
DeuxMNewsIE
)
from .digitalconcerthall import DigitalConcertHallIE
from .discogs import DiscogsReleasePlaylistIE
from .discovery import DiscoveryIE
from .disney import DisneyIE
from .dispeak import DigitallySpeakingIE
from .dropbox import DropboxIE
from .dropout import (
DropoutSeasonIE,
DropoutIE
)
from .duoplay import DuoplayIE from .duoplay import DuoplayIE
from .dvtv import DVTVIE
from .dw import ( from .dw import (
DWIE, DWIE,
DWArticleIE, DWArticleIE,
) )
from .eagleplatform import EaglePlatformIE, ClipYouEmbedIE from .eagleplatform import (
ClipYouEmbedIE,
EaglePlatformIE,
)
from .ebaumsworld import EbaumsWorldIE from .ebaumsworld import EbaumsWorldIE
from .ebay import EbayIE from .ebay import EbayIE
from .egghead import ( from .egghead import (
@@ -567,8 +597,8 @@ from .epoch import EpochIE
from .eporner import EpornerIE from .eporner import EpornerIE
from .erocast import ErocastIE from .erocast import ErocastIE
from .eroprofile import ( from .eroprofile import (
EroProfileIE,
EroProfileAlbumIE, EroProfileAlbumIE,
EroProfileIE,
) )
from .err import ERRJupiterIE from .err import ERRJupiterIE
from .ertgr import ( from .ertgr import (
@@ -578,31 +608,33 @@ from .ertgr import (
) )
from .espn import ( from .espn import (
ESPNIE, ESPNIE,
WatchESPNIE,
ESPNArticleIE, ESPNArticleIE,
FiveThirtyEightIE,
ESPNCricInfoIE, ESPNCricInfoIE,
FiveThirtyEightIE,
WatchESPNIE,
) )
from .ettutv import EttuTvIE from .ettutv import EttuTvIE
from .europa import EuropaIE, EuroParlWebstreamIE from .europa import (
EuropaIE,
EuroParlWebstreamIE,
)
from .europeantour import EuropeanTourIE from .europeantour import EuropeanTourIE
from .eurosport import EurosportIE from .eurosport import EurosportIE
from .euscreen import EUScreenIE from .euscreen import EUScreenIE
from .expressen import ExpressenIE from .expressen import ExpressenIE
from .eyedotv import EyedoTVIE from .eyedotv import EyedoTVIE
from .facebook import ( from .facebook import (
FacebookAdsIE,
FacebookIE, FacebookIE,
FacebookPluginsVideoIE, FacebookPluginsVideoIE,
FacebookRedirectURLIE, FacebookRedirectURLIE,
FacebookReelIE, FacebookReelIE,
FacebookAdsIE, )
from .fancode import (
FancodeLiveIE,
FancodeVodIE,
) )
from .fathom import FathomIE from .fathom import FathomIE
from .fancode import (
FancodeVodIE,
FancodeLiveIE
)
from .faz import FazIE from .faz import FazIE
from .fc2 import ( from .fc2 import (
FC2IE, FC2IE,
@@ -612,8 +644,8 @@ from .fc2 import (
from .fczenit import FczenitIE from .fczenit import FczenitIE
from .fifa import FifaIE from .fifa import FifaIE
from .filmon import ( from .filmon import (
FilmOnIE,
FilmOnChannelIE, FilmOnChannelIE,
FilmOnIE,
) )
from .filmweb import FilmwebIE from .filmweb import FilmwebIE
from .firsttv import FirstTVIE from .firsttv import FirstTVIE
@@ -621,17 +653,17 @@ from .fivetv import FiveTVIE
from .flextv import FlexTVIE from .flextv import FlexTVIE
from .flickr import FlickrIE from .flickr import FlickrIE
from .floatplane import ( from .floatplane import (
FloatplaneIE,
FloatplaneChannelIE, FloatplaneChannelIE,
FloatplaneIE,
) )
from .folketinget import FolketingetIE from .folketinget import FolketingetIE
from .footyroom import FootyRoomIE from .footyroom import FootyRoomIE
from .formula1 import Formula1IE from .formula1 import Formula1IE
from .fourtube import ( from .fourtube import (
FourTubeIE, FourTubeIE,
PornTubeIE,
PornerBrosIE,
FuxIE, FuxIE,
PornerBrosIE,
PornTubeIE,
) )
from .fox import FOXIE from .fox import FOXIE
from .fox9 import ( from .fox9 import (
@@ -639,8 +671,8 @@ from .fox9 import (
FOX9NewsIE, FOX9NewsIE,
) )
from .foxnews import ( from .foxnews import (
FoxNewsIE,
FoxNewsArticleIE, FoxNewsArticleIE,
FoxNewsIE,
FoxNewsVideoIE, FoxNewsVideoIE,
) )
from .foxsports import FoxSportsIE from .foxsports import FoxSportsIE
@@ -648,20 +680,20 @@ from .fptplay import FptplayIE
from .franceinter import FranceInterIE from .franceinter import FranceInterIE
from .francetv import ( from .francetv import (
FranceTVIE, FranceTVIE,
FranceTVSiteIE,
FranceTVInfoIE, FranceTVInfoIE,
FranceTVSiteIE,
) )
from .freesound import FreesoundIE from .freesound import FreesoundIE
from .freespeech import FreespeechIE from .freespeech import FreespeechIE
from .frontendmasters import (
FrontendMastersIE,
FrontendMastersLessonIE,
FrontendMastersCourseIE
)
from .freetv import ( from .freetv import (
FreeTvIE, FreeTvIE,
FreeTvMoviesIE, FreeTvMoviesIE,
) )
from .frontendmasters import (
FrontendMastersCourseIE,
FrontendMastersIE,
FrontendMastersLessonIE,
)
from .fujitv import FujiTVFODPlus7IE from .fujitv import FujiTVFODPlus7IE
from .funimation import ( from .funimation import (
FunimationIE, FunimationIE,
@@ -672,17 +704,17 @@ from .funk import FunkIE
from .funker530 import Funker530IE from .funker530 import Funker530IE
from .fuyintv import FuyinTVIE from .fuyintv import FuyinTVIE
from .gab import ( from .gab import (
GabTVIE,
GabIE, GabIE,
GabTVIE,
) )
from .gaia import GaiaIE from .gaia import GaiaIE
from .gamejolt import ( from .gamejolt import (
GameJoltIE, GameJoltCommunityIE,
GameJoltUserIE,
GameJoltGameIE, GameJoltGameIE,
GameJoltGameSoundtrackIE, GameJoltGameSoundtrackIE,
GameJoltCommunityIE, GameJoltIE,
GameJoltSearchIE, GameJoltSearchIE,
GameJoltUserIE,
) )
from .gamespot import GameSpotIE from .gamespot import GameSpotIE
from .gamestar import GameStarIE from .gamestar import GameStarIE
@@ -691,13 +723,17 @@ from .gazeta import GazetaIE
from .gdcvault import GDCVaultIE from .gdcvault import GDCVaultIE
from .gedidigital import GediDigitalIE from .gedidigital import GediDigitalIE
from .generic import GenericIE from .generic import GenericIE
from .genericembeds import (
HTML5MediaEmbedIE,
QuotedHTMLIE,
)
from .genius import ( from .genius import (
GeniusIE, GeniusIE,
GeniusLyricsIE, GeniusLyricsIE,
) )
from .getcourseru import ( from .getcourseru import (
GetCourseRuIE,
GetCourseRuPlayerIE, GetCourseRuPlayerIE,
GetCourseRuIE
) )
from .gettr import ( from .gettr import (
GettrIE, GettrIE,
@@ -706,41 +742,45 @@ from .gettr import (
from .giantbomb import GiantBombIE from .giantbomb import GiantBombIE
from .glide import GlideIE from .glide import GlideIE
from .globalplayer import ( from .globalplayer import (
GlobalPlayerAudioEpisodeIE,
GlobalPlayerAudioIE,
GlobalPlayerLiveIE, GlobalPlayerLiveIE,
GlobalPlayerLivePlaylistIE, GlobalPlayerLivePlaylistIE,
GlobalPlayerAudioIE, GlobalPlayerVideoIE,
GlobalPlayerAudioEpisodeIE,
GlobalPlayerVideoIE
) )
from .globo import ( from .globo import (
GloboIE,
GloboArticleIE, GloboArticleIE,
GloboIE,
)
from .glomex import (
GlomexEmbedIE,
GlomexIE,
) )
from .gmanetwork import GMANetworkVideoIE from .gmanetwork import GMANetworkVideoIE
from .go import GoIE from .go import GoIE
from .godtube import GodTubeIE
from .godresource import GodResourceIE from .godresource import GodResourceIE
from .godtube import GodTubeIE
from .gofile import GofileIE from .gofile import GofileIE
from .golem import GolemIE from .golem import GolemIE
from .goodgame import GoodGameIE from .goodgame import GoodGameIE
from .googledrive import ( from .googledrive import (
GoogleDriveIE,
GoogleDriveFolderIE, GoogleDriveFolderIE,
GoogleDriveIE,
) )
from .googlepodcasts import ( from .googlepodcasts import (
GooglePodcastsIE,
GooglePodcastsFeedIE, GooglePodcastsFeedIE,
GooglePodcastsIE,
) )
from .googlesearch import GoogleSearchIE from .googlesearch import GoogleSearchIE
from .gopro import GoProIE
from .goplay import GoPlayIE from .goplay import GoPlayIE
from .gopro import GoProIE
from .goshgay import GoshgayIE from .goshgay import GoshgayIE
from .gotostage import GoToStageIE from .gotostage import GoToStageIE
from .gputechconf import GPUTechConfIE from .gputechconf import GPUTechConfIE
from .gronkh import ( from .gronkh import (
GronkhIE,
GronkhFeedIE, GronkhFeedIE,
GronkhVodsIE GronkhIE,
GronkhVodsIE,
) )
from .groupon import GrouponIE from .groupon import GrouponIE
from .harpodeon import HarpodeonIE from .harpodeon import HarpodeonIE
@@ -749,10 +789,10 @@ from .hearthisat import HearThisAtIE
from .heise import HeiseIE from .heise import HeiseIE
from .hellporno import HellPornoIE from .hellporno import HellPornoIE
from .hgtv import HGTVComShowIE from .hgtv import HGTVComShowIE
from .hketv import HKETVIE
from .hidive import HiDiveIE from .hidive import HiDiveIE
from .historicfilms import HistoricFilmsIE from .historicfilms import HistoricFilmsIE
from .hitrecord import HitRecordIE from .hitrecord import HitRecordIE
from .hketv import HKETVIE
from .hollywoodreporter import ( from .hollywoodreporter import (
HollywoodReporterIE, HollywoodReporterIE,
HollywoodReporterPlaylistIE, HollywoodReporterPlaylistIE,
@@ -761,8 +801,8 @@ from .holodex import HolodexIE
from .hotnewhiphop import HotNewHipHopIE from .hotnewhiphop import HotNewHipHopIE
from .hotstar import ( from .hotstar import (
HotStarIE, HotStarIE,
HotStarPrefixIE,
HotStarPlaylistIE, HotStarPlaylistIE,
HotStarPrefixIE,
HotStarSeasonIE, HotStarSeasonIE,
HotStarSeriesIE, HotStarSeriesIE,
) )
@@ -773,34 +813,30 @@ from .hrti import (
HRTiPlaylistIE, HRTiPlaylistIE,
) )
from .hse import ( from .hse import (
HSEShowIE,
HSEProductIE, HSEProductIE,
) HSEShowIE,
from .genericembeds import (
HTML5MediaEmbedIE,
QuotedHTMLIE,
) )
from .huajiao import HuajiaoIE from .huajiao import HuajiaoIE
from .huya import HuyaLiveIE
from .huffpost import HuffPostIE from .huffpost import HuffPostIE
from .hungama import ( from .hungama import (
HungamaAlbumPlaylistIE,
HungamaIE, HungamaIE,
HungamaSongIE, HungamaSongIE,
HungamaAlbumPlaylistIE,
) )
from .huya import HuyaLiveIE
from .hypem import HypemIE from .hypem import HypemIE
from .hypergryph import MonsterSirenHypergryphMusicIE from .hypergryph import MonsterSirenHypergryphMusicIE
from .hytale import HytaleIE from .hytale import HytaleIE
from .icareus import IcareusIE from .icareus import IcareusIE
from .ichinanalive import ( from .ichinanalive import (
IchinanaLiveIE,
IchinanaLiveClipIE, IchinanaLiveClipIE,
IchinanaLiveIE,
) )
from .idolplus import IdolPlusIE from .idolplus import IdolPlusIE
from .ign import ( from .ign import (
IGNIE, IGNIE,
IGNVideoIE,
IGNArticleIE, IGNArticleIE,
IGNVideoIE,
) )
from .iheart import ( from .iheart import (
IHeartRadioIE, IHeartRadioIE,
@@ -810,12 +846,12 @@ from .ilpost import IlPostIE
from .iltalehti import IltalehtiIE from .iltalehti import IltalehtiIE
from .imdb import ( from .imdb import (
ImdbIE, ImdbIE,
ImdbListIE ImdbListIE,
) )
from .imgur import ( from .imgur import (
ImgurIE,
ImgurAlbumIE, ImgurAlbumIE,
ImgurGalleryIE, ImgurGalleryIE,
ImgurIE,
) )
from .ina import InaIE from .ina import InaIE
from .inc import IncIE from .inc import IncIE
@@ -824,20 +860,20 @@ from .infoq import InfoQIE
from .instagram import ( from .instagram import (
InstagramIE, InstagramIE,
InstagramIOSIE, InstagramIOSIE,
InstagramUserIE,
InstagramTagIE,
InstagramStoryIE, InstagramStoryIE,
InstagramTagIE,
InstagramUserIE,
) )
from .internazionale import InternazionaleIE from .internazionale import InternazionaleIE
from .internetvideoarchive import InternetVideoArchiveIE from .internetvideoarchive import InternetVideoArchiveIE
from .iprima import ( from .iprima import (
IPrimaCNNIE,
IPrimaIE, IPrimaIE,
IPrimaCNNIE
) )
from .iqiyi import ( from .iqiyi import (
IqiyiIE, IqAlbumIE,
IqIE, IqIE,
IqAlbumIE IqiyiIE,
) )
from .islamchannel import ( from .islamchannel import (
IslamChannelIE, IslamChannelIE,
@@ -845,16 +881,16 @@ from .islamchannel import (
) )
from .israelnationalnews import IsraelNationalNewsIE from .israelnationalnews import IsraelNationalNewsIE
from .itprotv import ( from .itprotv import (
ITProTVCourseIE,
ITProTVIE, ITProTVIE,
ITProTVCourseIE
) )
from .itv import ( from .itv import (
ITVIE,
ITVBTCCIE, ITVBTCCIE,
ITVIE,
) )
from .ivi import ( from .ivi import (
IviCompilationIE,
IviIE, IviIE,
IviCompilationIE
) )
from .ivideon import IvideonIE from .ivideon import IvideonIE
from .iwara import ( from .iwara import (
@@ -865,15 +901,15 @@ from .iwara import (
from .ixigua import IxiguaIE from .ixigua import IxiguaIE
from .izlesene import IzleseneIE from .izlesene import IzleseneIE
from .jamendo import ( from .jamendo import (
JamendoIE,
JamendoAlbumIE, JamendoAlbumIE,
JamendoIE,
) )
from .japandiet import ( from .japandiet import (
SangiinIE,
SangiinInstructionIE,
ShugiinItvLiveIE, ShugiinItvLiveIE,
ShugiinItvLiveRoomIE, ShugiinItvLiveRoomIE,
ShugiinItvVodIE, ShugiinItvVodIE,
SangiinInstructionIE,
SangiinIE,
) )
from .jeuxvideo import JeuxVideoIE from .jeuxvideo import JeuxVideoIE
from .jiocinema import ( from .jiocinema import (
@@ -881,13 +917,13 @@ from .jiocinema import (
JioCinemaSeriesIE, JioCinemaSeriesIE,
) )
from .jiosaavn import ( from .jiosaavn import (
JioSaavnSongIE,
JioSaavnAlbumIE, JioSaavnAlbumIE,
JioSaavnPlaylistIE, JioSaavnPlaylistIE,
JioSaavnSongIE,
) )
from .jove import JoveIE
from .joj import JojIE from .joj import JojIE
from .joqrag import JoqrAgIE from .joqrag import JoqrAgIE
from .jove import JoveIE
from .jstream import JStreamIE from .jstream import JStreamIE
from .jtbc import ( from .jtbc import (
JTBCIE, JTBCIE,
@@ -914,17 +950,17 @@ from .kinopoisk import KinoPoiskIE
from .kommunetv import KommunetvIE from .kommunetv import KommunetvIE
from .kompas import KompasVideoIE from .kompas import KompasVideoIE
from .koo import KooIE from .koo import KooIE
from .kth import KTHIE
from .krasview import KrasViewIE from .krasview import KrasViewIE
from .kth import KTHIE
from .ku6 import Ku6IE from .ku6 import Ku6IE
from .kukululive import KukuluLiveIE from .kukululive import KukuluLiveIE
from .kuwo import ( from .kuwo import (
KuwoIE,
KuwoAlbumIE, KuwoAlbumIE,
KuwoChartIE,
KuwoSingerIE,
KuwoCategoryIE, KuwoCategoryIE,
KuwoChartIE,
KuwoIE,
KuwoMvIE, KuwoMvIE,
KuwoSingerIE,
) )
from .la7 import ( from .la7 import (
LA7IE, LA7IE,
@@ -944,14 +980,14 @@ from .lbry import (
) )
from .lci import LCIIE from .lci import LCIIE
from .lcp import ( from .lcp import (
LcpPlayIE,
LcpIE, LcpIE,
LcpPlayIE,
) )
from .lecture2go import Lecture2GoIE from .lecture2go import Lecture2GoIE
from .lecturio import ( from .lecturio import (
LecturioIE,
LecturioCourseIE, LecturioCourseIE,
LecturioDeCourseIE, LecturioDeCourseIE,
LecturioIE,
) )
from .leeco import ( from .leeco import (
LeIE, LeIE,
@@ -968,22 +1004,22 @@ from .lenta import LentaIE
from .libraryofcongress import LibraryOfCongressIE from .libraryofcongress import LibraryOfCongressIE
from .libsyn import LibsynIE from .libsyn import LibsynIE
from .lifenews import ( from .lifenews import (
LifeNewsIE,
LifeEmbedIE, LifeEmbedIE,
LifeNewsIE,
) )
from .likee import ( from .likee import (
LikeeIE, LikeeIE,
LikeeUserIE LikeeUserIE,
) )
from .limelight import ( from .limelight import (
LimelightMediaIE,
LimelightChannelIE, LimelightChannelIE,
LimelightChannelListIE, LimelightChannelListIE,
LimelightMediaIE,
) )
from .linkedin import ( from .linkedin import (
LinkedInIE, LinkedInIE,
LinkedInLearningIE,
LinkedInLearningCourseIE, LinkedInLearningCourseIE,
LinkedInLearningIE,
) )
from .liputan6 import Liputan6IE from .liputan6 import Liputan6IE
from .listennotes import ListenNotesIE from .listennotes import ListenNotesIE
@@ -1000,25 +1036,23 @@ from .lnkgo import (
LnkIE, LnkIE,
) )
from .loom import ( from .loom import (
LoomIE,
LoomFolderIE, LoomFolderIE,
LoomIE,
) )
from .lovehomeporn import LoveHomePornIE from .lovehomeporn import LoveHomePornIE
from .lrt import ( from .lrt import (
LRTVODIE, LRTVODIE,
LRTStreamIE LRTStreamIE,
) )
from .lsm import ( from .lsm import (
LSMLREmbedIE, LSMLREmbedIE,
LSMLTVEmbedIE, LSMLTVEmbedIE,
LSMReplayIE LSMReplayIE,
)
from .lumni import (
LumniIE
) )
from .lumni import LumniIE
from .lynda import ( from .lynda import (
LyndaCourseIE,
LyndaIE, LyndaIE,
LyndaCourseIE
) )
from .maariv import MaarivIE from .maariv import MaarivIE
from .magellantv import MagellanTVIE from .magellantv import MagellanTVIE
@@ -1030,13 +1064,13 @@ from .mailru import (
) )
from .mainstreaming import MainStreamingIE from .mainstreaming import MainStreamingIE
from .mangomolo import ( from .mangomolo import (
MangomoloVideoIE,
MangomoloLiveIE, MangomoloLiveIE,
MangomoloVideoIE,
) )
from .manoto import ( from .manoto import (
ManotoTVIE, ManotoTVIE,
ManotoTVShowIE,
ManotoTVLiveIE, ManotoTVLiveIE,
ManotoTVShowIE,
) )
from .manyvids import ManyVidsIE from .manyvids import ManyVidsIE
from .maoritv import MaoriTVIE from .maoritv import MaoriTVIE
@@ -1052,13 +1086,14 @@ from .mdr import MDRIE
from .medaltv import MedalTVIE from .medaltv import MedalTVIE
from .mediaite import MediaiteIE from .mediaite import MediaiteIE
from .mediaklikk import MediaKlikkIE from .mediaklikk import MediaKlikkIE
from .medialaan import MedialaanIE
from .mediaset import ( from .mediaset import (
MediasetIE, MediasetIE,
MediasetShowIE, MediasetShowIE,
) )
from .mediasite import ( from .mediasite import (
MediasiteIE,
MediasiteCatalogIE, MediasiteCatalogIE,
MediasiteIE,
MediasiteNamedCatalogIE, MediasiteNamedCatalogIE,
) )
from .mediastream import ( from .mediastream import (
@@ -1068,26 +1103,30 @@ from .mediastream import (
from .mediaworksnz import MediaWorksNZVODIE from .mediaworksnz import MediaWorksNZVODIE
from .medici import MediciIE from .medici import MediciIE
from .megaphone import MegaphoneIE from .megaphone import MegaphoneIE
from .megatvcom import (
MegaTVComEmbedIE,
MegaTVComIE,
)
from .meipai import MeipaiIE from .meipai import MeipaiIE
from .melonvod import MelonVODIE from .melonvod import MelonVODIE
from .metacritic import MetacriticIE from .metacritic import MetacriticIE
from .mgtv import MGTVIE from .mgtv import MGTVIE
from .microsoftembed import MicrosoftEmbedIE
from .microsoftstream import MicrosoftStreamIE from .microsoftstream import MicrosoftStreamIE
from .microsoftvirtualacademy import ( from .microsoftvirtualacademy import (
MicrosoftVirtualAcademyIE,
MicrosoftVirtualAcademyCourseIE, MicrosoftVirtualAcademyCourseIE,
MicrosoftVirtualAcademyIE,
) )
from .microsoftembed import MicrosoftEmbedIE
from .mildom import ( from .mildom import (
MildomIE,
MildomVodIE,
MildomClipIE, MildomClipIE,
MildomIE,
MildomUserVodIE, MildomUserVodIE,
MildomVodIE,
) )
from .minds import ( from .minds import (
MindsIE,
MindsChannelIE, MindsChannelIE,
MindsGroupIE, MindsGroupIE,
MindsIE,
) )
from .minoto import MinotoIE from .minoto import MinotoIE
from .mirrativ import ( from .mirrativ import (
@@ -1095,31 +1134,34 @@ from .mirrativ import (
MirrativUserIE, MirrativUserIE,
) )
from .mirrorcouk import MirrorCoUKIE from .mirrorcouk import MirrorCoUKIE
from .mit import TechTVMITIE, OCWMITIE from .mit import (
OCWMITIE,
TechTVMITIE,
)
from .mitele import MiTeleIE from .mitele import MiTeleIE
from .mixch import ( from .mixch import (
MixchIE,
MixchArchiveIE, MixchArchiveIE,
MixchIE,
) )
from .mixcloud import ( from .mixcloud import (
MixcloudIE, MixcloudIE,
MixcloudUserIE,
MixcloudPlaylistIE, MixcloudPlaylistIE,
MixcloudUserIE,
) )
from .mlb import ( from .mlb import (
MLBIE, MLBIE,
MLBVideoIE,
MLBTVIE, MLBTVIE,
MLBArticleIE, MLBArticleIE,
MLBVideoIE,
) )
from .mlssoccer import MLSSoccerIE from .mlssoccer import MLSSoccerIE
from .mocha import MochaVideoIE from .mocha import MochaVideoIE
from .mojvideo import MojvideoIE from .mojvideo import MojvideoIE
from .monstercat import MonstercatIE from .monstercat import MonstercatIE
from .motherless import ( from .motherless import (
MotherlessIE,
MotherlessGroupIE,
MotherlessGalleryIE, MotherlessGalleryIE,
MotherlessGroupIE,
MotherlessIE,
MotherlessUploaderIE, MotherlessUploaderIE,
) )
from .motorsport import MotorsportIE from .motorsport import MotorsportIE
@@ -1129,23 +1171,26 @@ from .moviezine import MoviezineIE
from .movingimage import MovingImageIE from .movingimage import MovingImageIE
from .msn import MSNIE from .msn import MSNIE
from .mtv import ( from .mtv import (
MTVIE,
MTVVideoIE,
MTVServicesEmbeddedIE,
MTVDEIE, MTVDEIE,
MTVJapanIE, MTVIE,
MTVItaliaIE, MTVItaliaIE,
MTVItaliaProgrammaIE, MTVItaliaProgrammaIE,
MTVJapanIE,
MTVServicesEmbeddedIE,
MTVVideoIE,
) )
from .muenchentv import MuenchenTVIE from .muenchentv import MuenchenTVIE
from .murrtube import MurrtubeIE, MurrtubeUserIE from .murrtube import (
MurrtubeIE,
MurrtubeUserIE,
)
from .museai import MuseAIIE from .museai import MuseAIIE
from .musescore import MuseScoreIE from .musescore import MuseScoreIE
from .musicdex import ( from .musicdex import (
MusicdexSongIE,
MusicdexAlbumIE, MusicdexAlbumIE,
MusicdexArtistIE, MusicdexArtistIE,
MusicdexPlaylistIE, MusicdexPlaylistIE,
MusicdexSongIE,
) )
from .mx3 import ( from .mx3 import (
Mx3IE, Mx3IE,
@@ -1156,7 +1201,10 @@ from .mxplayer import (
MxplayerIE, MxplayerIE,
MxplayerShowIE, MxplayerShowIE,
) )
from .myspace import MySpaceIE, MySpaceAlbumIE from .myspace import (
MySpaceAlbumIE,
MySpaceIE,
)
from .myspass import MySpassIE from .myspass import MySpassIE
from .myvideoge import MyVideoGeIE from .myvideoge import MyVideoGeIE
from .myvidster import MyVidsterIE from .myvidster import MyVidsterIE
@@ -1170,8 +1218,8 @@ from .nate import (
NateProgramIE, NateProgramIE,
) )
from .nationalgeographic import ( from .nationalgeographic import (
NationalGeographicVideoIE,
NationalGeographicTVIE, NationalGeographicTVIE,
NationalGeographicVideoIE,
) )
from .naver import ( from .naver import (
NaverIE, NaverIE,
@@ -1179,12 +1227,12 @@ from .naver import (
NaverNowIE, NaverNowIE,
) )
from .nba import ( from .nba import (
NBAWatchEmbedIE,
NBAWatchIE,
NBAWatchCollectionIE,
NBAEmbedIE,
NBAIE, NBAIE,
NBAChannelIE, NBAChannelIE,
NBAEmbedIE,
NBAWatchCollectionIE,
NBAWatchEmbedIE,
NBAWatchIE,
) )
from .nbc import ( from .nbc import (
NBCIE, NBCIE,
@@ -1198,35 +1246,35 @@ from .nbc import (
) )
from .ndr import ( from .ndr import (
NDRIE, NDRIE,
NJoyIE,
NDREmbedBaseIE, NDREmbedBaseIE,
NDREmbedIE, NDREmbedIE,
NJoyEmbedIE, NJoyEmbedIE,
NJoyIE,
) )
from .ndtv import NDTVIE from .ndtv import NDTVIE
from .nebula import ( from .nebula import (
NebulaIE,
NebulaClassIE,
NebulaSubscriptionsIE,
NebulaChannelIE, NebulaChannelIE,
NebulaClassIE,
NebulaIE,
NebulaSubscriptionsIE,
) )
from .nekohacker import NekoHackerIE from .nekohacker import NekoHackerIE
from .nerdcubed import NerdCubedFeedIE from .nerdcubed import NerdCubedFeedIE
from .netzkino import NetzkinoIE
from .neteasemusic import ( from .neteasemusic import (
NetEaseMusicIE,
NetEaseMusicAlbumIE, NetEaseMusicAlbumIE,
NetEaseMusicSingerIE, NetEaseMusicDjRadioIE,
NetEaseMusicIE,
NetEaseMusicListIE, NetEaseMusicListIE,
NetEaseMusicMvIE, NetEaseMusicMvIE,
NetEaseMusicProgramIE, NetEaseMusicProgramIE,
NetEaseMusicDjRadioIE, NetEaseMusicSingerIE,
) )
from .netverse import ( from .netverse import (
NetverseIE, NetverseIE,
NetversePlaylistIE, NetversePlaylistIE,
NetverseSearchIE, NetverseSearchIE,
) )
from .netzkino import NetzkinoIE
from .newgrounds import ( from .newgrounds import (
NewgroundsIE, NewgroundsIE,
NewgroundsPlaylistIE, NewgroundsPlaylistIE,
@@ -1235,14 +1283,14 @@ from .newgrounds import (
from .newspicks import NewsPicksIE from .newspicks import NewsPicksIE
from .newsy import NewsyIE from .newsy import NewsyIE
from .nextmedia import ( from .nextmedia import (
NextMediaIE,
NextMediaActionNewsIE,
AppleDailyIE, AppleDailyIE,
NextMediaActionNewsIE,
NextMediaIE,
NextTVIE, NextTVIE,
) )
from .nexx import ( from .nexx import (
NexxIE,
NexxEmbedIE, NexxEmbedIE,
NexxIE,
) )
from .nfb import ( from .nfb import (
NFBIE, NFBIE,
@@ -1256,43 +1304,43 @@ from .nfl import (
NFLPlusReplayIE, NFLPlusReplayIE,
) )
from .nhk import ( from .nhk import (
NhkVodIE,
NhkVodProgramIE,
NhkForSchoolBangumiIE, NhkForSchoolBangumiIE,
NhkForSchoolSubjectIE,
NhkForSchoolProgramListIE, NhkForSchoolProgramListIE,
NhkForSchoolSubjectIE,
NhkRadioNewsPageIE, NhkRadioNewsPageIE,
NhkRadiruIE, NhkRadiruIE,
NhkRadiruLiveIE, NhkRadiruLiveIE,
NhkVodIE,
NhkVodProgramIE,
) )
from .nhl import NHLIE from .nhl import NHLIE
from .nick import ( from .nick import (
NickIE,
NickBrIE, NickBrIE,
NickDeIE, NickDeIE,
NickIE,
NickRuIE, NickRuIE,
) )
from .niconico import ( from .niconico import (
NiconicoIE,
NiconicoPlaylistIE,
NiconicoUserIE,
NiconicoSeriesIE,
NiconicoHistoryIE, NiconicoHistoryIE,
NiconicoIE,
NiconicoLiveIE,
NiconicoPlaylistIE,
NiconicoSeriesIE,
NiconicoUserIE,
NicovideoSearchDateIE, NicovideoSearchDateIE,
NicovideoSearchIE, NicovideoSearchIE,
NicovideoSearchURLIE, NicovideoSearchURLIE,
NicovideoTagURLIE, NicovideoTagURLIE,
NiconicoLiveIE, )
from .niconicochannelplus import (
NiconicoChannelPlusChannelLivesIE,
NiconicoChannelPlusChannelVideosIE,
NiconicoChannelPlusIE,
) )
from .ninaprotocol import NinaProtocolIE from .ninaprotocol import NinaProtocolIE
from .ninecninemedia import ( from .ninecninemedia import (
NineCNineMediaIE,
CPTwentyFourIE, CPTwentyFourIE,
) NineCNineMediaIE,
from .niconicochannelplus import (
NiconicoChannelPlusIE,
NiconicoChannelPlusChannelVideosIE,
NiconicoChannelPlusChannelLivesIE,
) )
from .ninegag import NineGagIE from .ninegag import NineGagIE
from .ninenews import NineNewsIE from .ninenews import NineNewsIE
@@ -1317,24 +1365,24 @@ from .nowness import (
) )
from .noz import NozIE from .noz import NozIE
from .npo import ( from .npo import (
AndereTijdenIE,
NPOIE, NPOIE,
NPOLiveIE,
NPORadioIE,
NPORadioFragmentIE,
SchoolTVIE,
HetKlokhuisIE,
VPROIE, VPROIE,
WNLIE, WNLIE,
AndereTijdenIE,
HetKlokhuisIE,
NPOLiveIE,
NPORadioFragmentIE,
NPORadioIE,
SchoolTVIE,
) )
from .npr import NprIE from .npr import NprIE
from .nrk import ( from .nrk import (
NRKIE, NRKIE,
NRKPlaylistIE,
NRKSkoleIE,
NRKTVIE, NRKTVIE,
NRKTVDirekteIE, NRKPlaylistIE,
NRKRadioPodkastIE, NRKRadioPodkastIE,
NRKSkoleIE,
NRKTVDirekteIE,
NRKTVEpisodeIE, NRKTVEpisodeIE,
NRKTVEpisodesIE, NRKTVEpisodesIE,
NRKTVSeasonIE, NRKTVSeasonIE,
@@ -1346,18 +1394,18 @@ from .ntvcojp import NTVCoJpCUIE
from .ntvde import NTVDeIE from .ntvde import NTVDeIE
from .ntvru import NTVRuIE from .ntvru import NTVRuIE
from .nubilesporn import NubilesPornIE from .nubilesporn import NubilesPornIE
from .nuum import (
NuumLiveIE,
NuumMediaIE,
NuumTabIE,
)
from .nuvid import NuvidIE
from .nytimes import ( from .nytimes import (
NYTimesIE,
NYTimesArticleIE, NYTimesArticleIE,
NYTimesCookingIE, NYTimesCookingIE,
NYTimesCookingRecipeIE, NYTimesCookingRecipeIE,
NYTimesIE,
) )
from .nuum import (
NuumLiveIE,
NuumTabIE,
NuumMediaIE,
)
from .nuvid import NuvidIE
from .nzherald import NZHeraldIE from .nzherald import NZHeraldIE
from .nzonscreen import NZOnScreenIE from .nzonscreen import NZOnScreenIE
from .nzz import NZZIE from .nzz import NZZIE
@@ -1365,7 +1413,7 @@ from .odkmedia import OnDemandChinaEpisodeIE
from .odnoklassniki import OdnoklassnikiIE from .odnoklassniki import OdnoklassnikiIE
from .oftv import ( from .oftv import (
OfTVIE, OfTVIE,
OfTVPlaylistIE OfTVPlaylistIE,
) )
from .oktoberfesttv import OktoberfestTVIE from .oktoberfesttv import OktoberfestTVIE
from .olympics import OlympicsReplayIE from .olympics import OlympicsReplayIE
@@ -1378,8 +1426,8 @@ from .onefootball import OneFootballIE
from .onenewsnz import OneNewsNZIE from .onenewsnz import OneNewsNZIE
from .oneplace import OnePlacePodcastIE from .oneplace import OnePlacePodcastIE
from .onet import ( from .onet import (
OnetIE,
OnetChannelIE, OnetChannelIE,
OnetIE,
OnetMVPIE, OnetMVPIE,
OnetPlIE, OnetPlIE,
) )
@@ -1389,33 +1437,33 @@ from .opencast import (
OpencastPlaylistIE, OpencastPlaylistIE,
) )
from .openrec import ( from .openrec import (
OpenRecIE,
OpenRecCaptureIE, OpenRecCaptureIE,
OpenRecIE,
OpenRecMovieIE, OpenRecMovieIE,
) )
from .ora import OraTVIE from .ora import OraTVIE
from .orf import ( from .orf import (
ORFFM4StoryIE,
ORFONIE,
ORFRadioIE,
ORFPodcastIE,
ORFIPTVIE, ORFIPTVIE,
ORFONIE,
ORFFM4StoryIE,
ORFPodcastIE,
ORFRadioIE,
) )
from .outsidetv import OutsideTVIE from .outsidetv import OutsideTVIE
from .owncloud import OwnCloudIE from .owncloud import OwnCloudIE
from .packtpub import ( from .packtpub import (
PacktPubIE,
PacktPubCourseIE, PacktPubCourseIE,
PacktPubIE,
) )
from .palcomp3 import ( from .palcomp3 import (
PalcoMP3IE,
PalcoMP3ArtistIE, PalcoMP3ArtistIE,
PalcoMP3IE,
PalcoMP3VideoIE, PalcoMP3VideoIE,
) )
from .panopto import ( from .panopto import (
PanoptoIE, PanoptoIE,
PanoptoListIE, PanoptoListIE,
PanoptoPlaylistIE PanoptoPlaylistIE,
) )
from .paramountplus import ( from .paramountplus import (
ParamountPlusIE, ParamountPlusIE,
@@ -1424,12 +1472,18 @@ from .paramountplus import (
from .parler import ParlerIE from .parler import ParlerIE
from .parlview import ParlviewIE from .parlview import ParlviewIE
from .patreon import ( from .patreon import (
PatreonCampaignIE,
PatreonIE, PatreonIE,
PatreonCampaignIE
) )
from .pbs import PBSIE, PBSKidsIE from .pbs import (
PBSIE,
PBSKidsIE,
)
from .pearvideo import PearVideoIE from .pearvideo import PearVideoIE
from .peekvids import PeekVidsIE, PlayVidsIE from .peekvids import (
PeekVidsIE,
PlayVidsIE,
)
from .peertube import ( from .peertube import (
PeerTubeIE, PeerTubeIE,
PeerTubePlaylistIE, PeerTubePlaylistIE,
@@ -1437,7 +1491,7 @@ from .peertube import (
from .peertv import PeerTVIE from .peertv import PeerTVIE
from .peloton import ( from .peloton import (
PelotonIE, PelotonIE,
PelotonLiveIE PelotonLiveIE,
) )
from .performgroup import PerformGroupIE from .performgroup import PerformGroupIE
from .periscope import ( from .periscope import (
@@ -1457,8 +1511,8 @@ from .picarto import (
from .piksel import PikselIE from .piksel import PikselIE
from .pinkbike import PinkbikeIE from .pinkbike import PinkbikeIE
from .pinterest import ( from .pinterest import (
PinterestIE,
PinterestCollectionIE, PinterestCollectionIE,
PinterestIE,
) )
from .pixivsketch import ( from .pixivsketch import (
PixivSketchIE, PixivSketchIE,
@@ -1467,19 +1521,22 @@ from .pixivsketch import (
from .pladform import PladformIE from .pladform import PladformIE
from .planetmarathi import PlanetMarathiIE from .planetmarathi import PlanetMarathiIE
from .platzi import ( from .platzi import (
PlatziIE,
PlatziCourseIE, PlatziCourseIE,
PlatziIE,
) )
from .playplustv import PlayPlusTVIE from .playplustv import PlayPlusTVIE
from .playsuisse import PlaySuisseIE from .playsuisse import PlaySuisseIE
from .playtvak import PlaytvakIE from .playtvak import PlaytvakIE
from .playwire import PlaywireIE from .playwire import PlaywireIE
from .plutotv import PlutoTVIE
from .pluralsight import ( from .pluralsight import (
PluralsightIE,
PluralsightCourseIE, PluralsightCourseIE,
PluralsightIE,
)
from .plutotv import PlutoTVIE
from .podbayfm import (
PodbayFMChannelIE,
PodbayFMIE,
) )
from .podbayfm import PodbayFMIE, PodbayFMChannelIE
from .podchaser import PodchaserIE from .podchaser import PodchaserIE
from .podomatic import PodomaticIE from .podomatic import PodomaticIE
from .pokemon import ( from .pokemon import (
@@ -1487,15 +1544,15 @@ from .pokemon import (
PokemonWatchIE, PokemonWatchIE,
) )
from .pokergo import ( from .pokergo import (
PokerGoIE,
PokerGoCollectionIE, PokerGoCollectionIE,
PokerGoIE,
) )
from .polsatgo import PolsatGoIE from .polsatgo import PolsatGoIE
from .polskieradio import ( from .polskieradio import (
PolskieRadioIE,
PolskieRadioLegacyIE,
PolskieRadioAuditionIE, PolskieRadioAuditionIE,
PolskieRadioCategoryIE, PolskieRadioCategoryIE,
PolskieRadioIE,
PolskieRadioLegacyIE,
PolskieRadioPlayerIE, PolskieRadioPlayerIE,
PolskieRadioPodcastIE, PolskieRadioPodcastIE,
PolskieRadioPodcastListIE, PolskieRadioPodcastListIE,
@@ -1506,57 +1563,62 @@ from .pornbox import PornboxIE
from .pornflip import PornFlipIE from .pornflip import PornFlipIE
from .pornhub import ( from .pornhub import (
PornHubIE, PornHubIE,
PornHubUserIE,
PornHubPlaylistIE,
PornHubPagedVideoListIE, PornHubPagedVideoListIE,
PornHubPlaylistIE,
PornHubUserIE,
PornHubUserVideosUploadIE, PornHubUserVideosUploadIE,
) )
from .pornotube import PornotubeIE from .pornotube import PornotubeIE
from .pornovoisines import PornoVoisinesIE from .pornovoisines import PornoVoisinesIE
from .pornoxo import PornoXOIE from .pornoxo import PornoXOIE
from .puhutv import (
PuhuTVIE,
PuhuTVSerieIE,
)
from .pr0gramm import Pr0grammIE from .pr0gramm import Pr0grammIE
from .prankcast import PrankCastIE, PrankCastPostIE from .prankcast import (
PrankCastIE,
PrankCastPostIE,
)
from .premiershiprugby import PremiershipRugbyIE from .premiershiprugby import PremiershipRugbyIE
from .presstv import PressTVIE from .presstv import PressTVIE
from .projectveritas import ProjectVeritasIE from .projectveritas import ProjectVeritasIE
from .prosiebensat1 import ProSiebenSat1IE from .prosiebensat1 import ProSiebenSat1IE
from .prx import ( from .prx import (
PRXStoryIE,
PRXSeriesIE,
PRXAccountIE, PRXAccountIE,
PRXSeriesIE,
PRXSeriesSearchIE,
PRXStoriesSearchIE, PRXStoriesSearchIE,
PRXSeriesSearchIE PRXStoryIE,
)
from .puhutv import (
PuhuTVIE,
PuhuTVSerieIE,
) )
from .puls4 import Puls4IE from .puls4 import Puls4IE
from .pyvideo import PyvideoIE from .pyvideo import PyvideoIE
from .qdance import QDanceIE from .qdance import QDanceIE
from .qingting import QingTingIE from .qingting import QingTingIE
from .qqmusic import ( from .qqmusic import (
QQMusicIE,
QQMusicSingerIE,
QQMusicAlbumIE, QQMusicAlbumIE,
QQMusicToplistIE, QQMusicIE,
QQMusicPlaylistIE, QQMusicPlaylistIE,
QQMusicSingerIE,
QQMusicToplistIE,
) )
from .r7 import ( from .r7 import (
R7IE, R7IE,
R7ArticleIE, R7ArticleIE,
) )
from .radiko import RadikoIE, RadikoRadioIE from .radiko import (
RadikoIE,
RadikoRadioIE,
)
from .radiocanada import ( from .radiocanada import (
RadioCanadaIE,
RadioCanadaAudioVideoIE, RadioCanadaAudioVideoIE,
RadioCanadaIE,
) )
from .radiocomercial import ( from .radiocomercial import (
RadioComercialIE, RadioComercialIE,
RadioComercialPlaylistIE, RadioComercialPlaylistIE,
) )
from .radiode import RadioDeIE from .radiode import RadioDeIE
from .radiojavan import RadioJavanIE
from .radiofrance import ( from .radiofrance import (
FranceCultureIE, FranceCultureIE,
RadioFranceIE, RadioFranceIE,
@@ -1565,35 +1627,36 @@ from .radiofrance import (
RadioFranceProfileIE, RadioFranceProfileIE,
RadioFranceProgramScheduleIE, RadioFranceProgramScheduleIE,
) )
from .radiozet import RadioZetPodcastIE from .radiojavan import RadioJavanIE
from .radiokapital import ( from .radiokapital import (
RadioKapitalIE, RadioKapitalIE,
RadioKapitalShowIE, RadioKapitalShowIE,
) )
from .radiozet import RadioZetPodcastIE
from .radlive import ( from .radlive import (
RadLiveIE,
RadLiveChannelIE, RadLiveChannelIE,
RadLiveIE,
RadLiveSeasonIE, RadLiveSeasonIE,
) )
from .rai import ( from .rai import (
RaiIE,
RaiCulturaIE, RaiCulturaIE,
RaiIE,
RaiNewsIE,
RaiPlayIE, RaiPlayIE,
RaiPlayLiveIE, RaiPlayLiveIE,
RaiPlayPlaylistIE, RaiPlayPlaylistIE,
RaiPlaySoundIE, RaiPlaySoundIE,
RaiPlaySoundLiveIE, RaiPlaySoundLiveIE,
RaiPlaySoundPlaylistIE, RaiPlaySoundPlaylistIE,
RaiNewsIE,
RaiSudtirolIE, RaiSudtirolIE,
) )
from .raywenderlich import ( from .raywenderlich import (
RayWenderlichIE,
RayWenderlichCourseIE, RayWenderlichCourseIE,
RayWenderlichIE,
) )
from .rbgtum import ( from .rbgtum import (
RbgTumIE,
RbgTumCourseIE, RbgTumCourseIE,
RbgTumIE,
RbgTumNewCourseIE, RbgTumNewCourseIE,
) )
from .rcs import ( from .rcs import (
@@ -1607,12 +1670,15 @@ from .rcti import (
RCTIPlusTVIE, RCTIPlusTVIE,
) )
from .rds import RDSIE from .rds import RDSIE
from .redbee import ParliamentLiveUKIE, RTBFIE from .redbee import (
RTBFIE,
ParliamentLiveUKIE,
)
from .redbulltv import ( from .redbulltv import (
RedBullTVIE,
RedBullEmbedIE, RedBullEmbedIE,
RedBullTVRrnContentIE,
RedBullIE, RedBullIE,
RedBullTVIE,
RedBullTVRrnContentIE,
) )
from .reddit import RedditIE from .reddit import RedditIE
from .redge import RedCDNLivxIE from .redge import RedCDNLivxIE
@@ -1632,107 +1698,100 @@ from .reverbnation import ReverbNationIE
from .rheinmaintv import RheinMainTVIE from .rheinmaintv import RheinMainTVIE
from .ridehome import RideHomeIE from .ridehome import RideHomeIE
from .rinsefm import ( from .rinsefm import (
RinseFMIE,
RinseFMArtistPlaylistIE, RinseFMArtistPlaylistIE,
RinseFMIE,
) )
from .rmcdecouverte import RMCDecouverteIE from .rmcdecouverte import RMCDecouverteIE
from .rockstargames import RockstarGamesIE from .rockstargames import RockstarGamesIE
from .rokfin import ( from .rokfin import (
RokfinIE,
RokfinStackIE,
RokfinChannelIE, RokfinChannelIE,
RokfinIE,
RokfinSearchIE, RokfinSearchIE,
RokfinStackIE,
)
from .roosterteeth import (
RoosterTeethIE,
RoosterTeethSeriesIE,
) )
from .roosterteeth import RoosterTeethIE, RoosterTeethSeriesIE
from .rottentomatoes import RottenTomatoesIE from .rottentomatoes import RottenTomatoesIE
from .rozhlas import ( from .rozhlas import (
MujRozhlasIE,
RozhlasIE, RozhlasIE,
RozhlasVltavaIE, RozhlasVltavaIE,
MujRozhlasIE,
) )
from .rte import RteIE, RteRadioIE from .rte import (
RteIE,
RteRadioIE,
)
from .rtl2 import RTL2IE
from .rtlnl import ( from .rtlnl import (
RtlNlIE,
RTLLuTeleVODIE,
RTLLuArticleIE, RTLLuArticleIE,
RTLLuLiveIE, RTLLuLiveIE,
RTLLuRadioIE, RTLLuRadioIE,
RTLLuTeleVODIE,
RtlNlIE,
) )
from .rtl2 import RTL2IE
from .rtnews import ( from .rtnews import (
RTNewsIE,
RTDocumentryIE, RTDocumentryIE,
RTDocumentryPlaylistIE, RTDocumentryPlaylistIE,
RTNewsIE,
RuptlyIE, RuptlyIE,
) )
from .rtp import RTPIE from .rtp import RTPIE
from .rtrfm import RTRFMIE from .rtrfm import RTRFMIE
from .rts import RTSIE from .rts import RTSIE
from .rtvcplay import ( from .rtvcplay import (
RTVCPlayIE,
RTVCPlayEmbedIE,
RTVCKalturaIE, RTVCKalturaIE,
RTVCPlayEmbedIE,
RTVCPlayIE,
) )
from .rtve import ( from .rtve import (
RTVEALaCartaIE, RTVEALaCartaIE,
RTVEAudioIE, RTVEAudioIE,
RTVELiveIE,
RTVEInfantilIE, RTVEInfantilIE,
RTVELiveIE,
RTVETelevisionIE, RTVETelevisionIE,
) )
from .rtvs import RTVSIE from .rtvs import RTVSIE
from .rtvslo import RTVSLOIE from .rtvslo import RTVSLOIE
from .rudovideo import RudoVideoIE
from .rule34video import Rule34VideoIE from .rule34video import Rule34VideoIE
from .rumble import ( from .rumble import (
RumbleChannelIE,
RumbleEmbedIE, RumbleEmbedIE,
RumbleIE, RumbleIE,
RumbleChannelIE,
) )
from .rudovideo import RudoVideoIE
from .rutube import ( from .rutube import (
RutubeIE,
RutubeChannelIE, RutubeChannelIE,
RutubeEmbedIE, RutubeEmbedIE,
RutubeIE,
RutubeMovieIE, RutubeMovieIE,
RutubePersonIE, RutubePersonIE,
RutubePlaylistIE, RutubePlaylistIE,
RutubeTagsIE, RutubeTagsIE,
) )
from .glomex import (
GlomexIE,
GlomexEmbedIE,
)
from .megatvcom import (
MegaTVComIE,
MegaTVComEmbedIE,
)
from .antenna import (
AntennaGrWatchIE,
Ant1NewsGrArticleIE,
Ant1NewsGrEmbedIE,
)
from .rutv import RUTVIE from .rutv import RUTVIE
from .ruutu import RuutuIE from .ruutu import RuutuIE
from .ruv import ( from .ruv import (
RuvIE, RuvIE,
RuvSpilaIE RuvSpilaIE,
) )
from .s4c import ( from .s4c import (
S4CIE, S4CIE,
S4CSeriesIE S4CSeriesIE,
) )
from .safari import ( from .safari import (
SafariIE,
SafariApiIE, SafariApiIE,
SafariCourseIE, SafariCourseIE,
SafariIE,
) )
from .saitosan import SaitosanIE from .saitosan import SaitosanIE
from .samplefocus import SampleFocusIE from .samplefocus import SampleFocusIE
from .sapo import SapoIE from .sapo import SapoIE
from .sbs import SBSIE from .sbs import SBSIE
from .sbscokr import ( from .sbscokr import (
SBSCoKrIE,
SBSCoKrAllvodProgramIE, SBSCoKrAllvodProgramIE,
SBSCoKrIE,
SBSCoKrProgramsVodIE, SBSCoKrProgramsVodIE,
) )
from .screen9 import Screen9IE from .screen9 import Screen9IE
@@ -1740,24 +1799,27 @@ from .screencast import ScreencastIE
from .screencastify import ScreencastifyIE from .screencastify import ScreencastifyIE
from .screencastomatic import ScreencastOMaticIE from .screencastomatic import ScreencastOMaticIE
from .scrippsnetworks import ( from .scrippsnetworks import (
ScrippsNetworksWatchIE,
ScrippsNetworksIE, ScrippsNetworksIE,
ScrippsNetworksWatchIE,
) )
from .scrolller import ScrolllerIE
from .scte import ( from .scte import (
SCTEIE, SCTEIE,
SCTECourseIE, SCTECourseIE,
) )
from .scrolller import ScrolllerIE
from .sejmpl import SejmIE from .sejmpl import SejmIE
from .senalcolombia import SenalColombiaLiveIE from .senalcolombia import SenalColombiaLiveIE
from .senategov import SenateISVPIE, SenateGovIE from .senategov import (
SenateGovIE,
SenateISVPIE,
)
from .sendtonews import SendtoNewsIE from .sendtonews import SendtoNewsIE
from .servus import ServusIE from .servus import ServusIE
from .sevenplus import SevenPlusIE from .sevenplus import SevenPlusIE
from .sexu import SexuIE from .sexu import SexuIE
from .seznamzpravy import ( from .seznamzpravy import (
SeznamZpravyIE,
SeznamZpravyArticleIE, SeznamZpravyArticleIE,
SeznamZpravyIE,
) )
from .shahid import ( from .shahid import (
ShahidIE, ShahidIE,
@@ -1765,38 +1827,38 @@ from .shahid import (
) )
from .sharepoint import SharePointIE from .sharepoint import SharePointIE
from .sharevideos import ShareVideosEmbedIE from .sharevideos import ShareVideosEmbedIE
from .sibnet import SibnetEmbedIE
from .shemaroome import ShemarooMeIE from .shemaroome import ShemarooMeIE
from .showroomlive import ShowRoomLiveIE from .showroomlive import ShowRoomLiveIE
from .sibnet import SibnetEmbedIE
from .simplecast import ( from .simplecast import (
SimplecastIE,
SimplecastEpisodeIE, SimplecastEpisodeIE,
SimplecastIE,
SimplecastPodcastIE, SimplecastPodcastIE,
) )
from .sina import SinaIE from .sina import SinaIE
from .sixplay import SixPlayIE from .sixplay import SixPlayIE
from .skeb import SkebIE from .skeb import SkebIE
from .skyit import (
SkyItPlayerIE,
SkyItVideoIE,
SkyItVideoLiveIE,
SkyItIE,
SkyItArteIE,
CieloTVItIE,
TV8ItIE,
)
from .skylinewebcams import SkylineWebcamsIE
from .skynewsarabia import (
SkyNewsArabiaIE,
SkyNewsArabiaArticleIE,
)
from .skynewsau import SkyNewsAUIE
from .sky import ( from .sky import (
SkyNewsIE, SkyNewsIE,
SkyNewsStoryIE, SkyNewsStoryIE,
SkySportsIE, SkySportsIE,
SkySportsNewsIE, SkySportsNewsIE,
) )
from .skyit import (
CieloTVItIE,
SkyItArteIE,
SkyItIE,
SkyItPlayerIE,
SkyItVideoIE,
SkyItVideoLiveIE,
TV8ItIE,
)
from .skylinewebcams import SkylineWebcamsIE
from .skynewsarabia import (
SkyNewsArabiaArticleIE,
SkyNewsArabiaIE,
)
from .skynewsau import SkyNewsAUIE
from .slideshare import SlideshareIE from .slideshare import SlideshareIE
from .slideslive import SlidesLiveIE from .slideslive import SlidesLiveIE
from .slutload import SlutloadIE from .slutload import SlutloadIE
@@ -1813,29 +1875,29 @@ from .sonyliv import (
from .soundcloud import ( from .soundcloud import (
SoundcloudEmbedIE, SoundcloudEmbedIE,
SoundcloudIE, SoundcloudIE,
SoundcloudSetIE, SoundcloudPlaylistIE,
SoundcloudRelatedIE, SoundcloudRelatedIE,
SoundcloudSearchIE,
SoundcloudSetIE,
SoundcloudTrackStationIE,
SoundcloudUserIE, SoundcloudUserIE,
SoundcloudUserPermalinkIE, SoundcloudUserPermalinkIE,
SoundcloudTrackStationIE,
SoundcloudPlaylistIE,
SoundcloudSearchIE,
) )
from .soundgasm import ( from .soundgasm import (
SoundgasmIE, SoundgasmIE,
SoundgasmProfileIE SoundgasmProfileIE,
) )
from .southpark import ( from .southpark import (
SouthParkIE,
SouthParkDeIE, SouthParkDeIE,
SouthParkDkIE, SouthParkDkIE,
SouthParkEsIE, SouthParkEsIE,
SouthParkIE,
SouthParkLatIE, SouthParkLatIE,
SouthParkNlIE SouthParkNlIE,
) )
from .sovietscloset import ( from .sovietscloset import (
SovietsClosetIE, SovietsClosetIE,
SovietsClosetPlaylistIE SovietsClosetPlaylistIE,
) )
from .spankbang import ( from .spankbang import (
SpankBangIE, SpankBangIE,
@@ -1846,12 +1908,6 @@ from .spike import (
BellatorIE, BellatorIE,
ParamountNetworkIE, ParamountNetworkIE,
) )
from .stageplus import StagePlusVODConcertIE
from .startrek import StarTrekIE
from .stitcher import (
StitcherIE,
StitcherShowIE,
)
from .sport5 import Sport5IE from .sport5 import Sport5IE
from .sportbox import SportBoxIE from .sportbox import SportBoxIE
from .sportdeutschland import SportDeutschlandIE from .sportdeutschland import SportDeutschlandIE
@@ -1875,19 +1931,25 @@ from .srmediathek import SRMediathekIE
from .stacommu import ( from .stacommu import (
StacommuLiveIE, StacommuLiveIE,
StacommuVODIE, StacommuVODIE,
TheaterComplexTownVODIE,
TheaterComplexTownPPVIE, TheaterComplexTownPPVIE,
TheaterComplexTownVODIE,
) )
from .stageplus import StagePlusVODConcertIE
from .stanfordoc import StanfordOpenClassroomIE from .stanfordoc import StanfordOpenClassroomIE
from .startrek import StarTrekIE
from .startv import StarTVIE from .startv import StarTVIE
from .steam import ( from .steam import (
SteamIE,
SteamCommunityBroadcastIE, SteamCommunityBroadcastIE,
SteamIE,
)
from .stitcher import (
StitcherIE,
StitcherShowIE,
) )
from .storyfire import ( from .storyfire import (
StoryFireIE, StoryFireIE,
StoryFireUserIE,
StoryFireSeriesIE, StoryFireSeriesIE,
StoryFireUserIE,
) )
from .streamable import StreamableIE from .streamable import StreamableIE
from .streamcz import StreamCZIE from .streamcz import StreamCZIE
@@ -1908,26 +1970,26 @@ from .svt import (
SVTSeriesIE, SVTSeriesIE,
) )
from .swearnet import SwearnetEpisodeIE from .swearnet import SwearnetEpisodeIE
from .syvdk import SYVDKIE
from .syfy import SyfyIE from .syfy import SyfyIE
from .syvdk import SYVDKIE
from .sztvhu import SztvHuIE from .sztvhu import SztvHuIE
from .tagesschau import TagesschauIE from .tagesschau import TagesschauIE
from .taptap import ( from .taptap import (
TapTapMomentIE,
TapTapAppIE, TapTapAppIE,
TapTapAppIntlIE, TapTapAppIntlIE,
TapTapMomentIE,
TapTapPostIntlIE, TapTapPostIntlIE,
) )
from .tass import TassIE from .tass import TassIE
from .tbs import TBSIE from .tbs import TBSIE
from .tbsjp import ( from .tbsjp import (
TBSJPEpisodeIE, TBSJPEpisodeIE,
TBSJPProgramIE,
TBSJPPlaylistIE, TBSJPPlaylistIE,
TBSJPProgramIE,
) )
from .teachable import ( from .teachable import (
TeachableIE,
TeachableCourseIE, TeachableCourseIE,
TeachableIE,
) )
from .teachertube import ( from .teachertube import (
TeacherTubeIE, TeacherTubeIE,
@@ -1935,8 +1997,8 @@ from .teachertube import (
) )
from .teachingchannel import TeachingChannelIE from .teachingchannel import TeachingChannelIE
from .teamcoco import ( from .teamcoco import (
TeamcocoIE,
ConanClassicIE, ConanClassicIE,
TeamcocoIE,
) )
from .teamtreehouse import TeamTreeHouseIE from .teamtreehouse import TeamTreeHouseIE
from .ted import ( from .ted import (
@@ -1955,15 +2017,18 @@ from .telegram import TelegramEmbedIE
from .telemb import TeleMBIE from .telemb import TeleMBIE
from .telemundo import TelemundoIE from .telemundo import TelemundoIE
from .telequebec import ( from .telequebec import (
TeleQuebecIE,
TeleQuebecSquatIE,
TeleQuebecEmissionIE, TeleQuebecEmissionIE,
TeleQuebecIE,
TeleQuebecLiveIE, TeleQuebecLiveIE,
TeleQuebecSquatIE,
TeleQuebecVideoIE, TeleQuebecVideoIE,
) )
from .teletask import TeleTaskIE from .teletask import TeleTaskIE
from .telewebion import TelewebionIE from .telewebion import TelewebionIE
from .tempo import TempoIE, IVXPlayerIE from .tempo import (
IVXPlayerIE,
TempoIE,
)
from .tencent import ( from .tencent import (
IflixEpisodeIE, IflixEpisodeIE,
IflixSeriesIE, IflixSeriesIE,
@@ -1987,8 +2052,8 @@ from .theguardian import (
from .theholetv import TheHoleTvIE from .theholetv import TheHoleTvIE
from .theintercept import TheInterceptIE from .theintercept import TheInterceptIE
from .theplatform import ( from .theplatform import (
ThePlatformIE,
ThePlatformFeedIE, ThePlatformFeedIE,
ThePlatformIE,
) )
from .thestar import TheStarIE from .thestar import TheStarIE
from .thesun import TheSunIE from .thesun import TheSunIE
@@ -2000,50 +2065,51 @@ from .thisvid import (
ThisVidMemberIE, ThisVidMemberIE,
ThisVidPlaylistIE, ThisVidPlaylistIE,
) )
from .threeqsdn import ThreeQSDNIE
from .threespeak import ( from .threespeak import (
ThreeSpeakIE, ThreeSpeakIE,
ThreeSpeakUserIE, ThreeSpeakUserIE,
) )
from .threeqsdn import ThreeQSDNIE
from .tiktok import ( from .tiktok import (
TikTokIE,
TikTokUserIE,
TikTokSoundIE,
TikTokEffectIE,
TikTokTagIE,
TikTokVMIE,
TikTokLiveIE,
DouyinIE, DouyinIE,
TikTokEffectIE,
TikTokIE,
TikTokLiveIE,
TikTokSoundIE,
TikTokTagIE,
TikTokUserIE,
TikTokVMIE,
) )
from .tmz import TMZIE from .tmz import TMZIE
from .tnaflix import ( from .tnaflix import (
TNAFlixNetworkEmbedIE,
TNAFlixIE,
EMPFlixIE, EMPFlixIE,
MovieFapIE, MovieFapIE,
TNAFlixIE,
TNAFlixNetworkEmbedIE,
) )
from .toggle import ( from .toggle import (
ToggleIE,
MeWatchIE, MeWatchIE,
ToggleIE,
) )
from .toggo import ( from .toggo import ToggoIE
ToggoIE,
)
from .tonline import TOnlineIE from .tonline import TOnlineIE
from .toongoggles import ToonGogglesIE from .toongoggles import ToonGogglesIE
from .toutv import TouTvIE from .toutv import TouTvIE
from .toypics import ToypicsUserIE, ToypicsIE from .toypics import (
ToypicsIE,
ToypicsUserIE,
)
from .traileraddict import TrailerAddictIE from .traileraddict import TrailerAddictIE
from .triller import ( from .triller import (
TrillerIE, TrillerIE,
TrillerUserIE,
TrillerShortIE, TrillerShortIE,
TrillerUserIE,
) )
from .trovo import ( from .trovo import (
TrovoChannelClipIE,
TrovoChannelVodIE,
TrovoIE, TrovoIE,
TrovoVodIE, TrovoVodIE,
TrovoChannelVodIE,
TrovoChannelClipIE,
) )
from .trtcocuk import TrtCocukVideoIE from .trtcocuk import TrtCocukVideoIE
from .trtworld import TrtWorldIE from .trtworld import TrtWorldIE
@@ -2052,26 +2118,26 @@ from .trunews import TruNewsIE
from .truth import TruthIE from .truth import TruthIE
from .trutv import TruTVIE from .trutv import TruTVIE
from .tube8 import Tube8IE from .tube8 import Tube8IE
from .tubetugraz import TubeTuGrazIE, TubeTuGrazSeriesIE from .tubetugraz import (
TubeTuGrazIE,
TubeTuGrazSeriesIE,
)
from .tubitv import ( from .tubitv import (
TubiTvIE, TubiTvIE,
TubiTvShowIE, TubiTvShowIE,
) )
from .tumblr import TumblrIE from .tumblr import TumblrIE
from .tunein import ( from .tunein import (
TuneInStationIE,
TuneInPodcastIE,
TuneInPodcastEpisodeIE, TuneInPodcastEpisodeIE,
TuneInPodcastIE,
TuneInShortenerIE, TuneInShortenerIE,
TuneInStationIE,
) )
from .tv2 import ( from .tv2 import (
TV2IE, TV2IE,
TV2ArticleIE,
KatsomoIE, KatsomoIE,
MTVUutisetArticleIE, MTVUutisetArticleIE,
) TV2ArticleIE,
from .tv24ua import (
TV24UAVideoIE,
) )
from .tv2dk import ( from .tv2dk import (
TV2DKIE, TV2DKIE,
@@ -2084,16 +2150,17 @@ from .tv2hu import (
from .tv4 import TV4IE from .tv4 import TV4IE
from .tv5mondeplus import TV5MondePlusIE from .tv5mondeplus import TV5MondePlusIE
from .tv5unis import ( from .tv5unis import (
TV5UnisVideoIE,
TV5UnisIE, TV5UnisIE,
TV5UnisVideoIE,
) )
from .tv24ua import TV24UAVideoIE
from .tva import ( from .tva import (
TVAIE, TVAIE,
QubIE, QubIE,
) )
from .tvanouvelles import ( from .tvanouvelles import (
TVANouvellesIE,
TVANouvellesArticleIE, TVANouvellesArticleIE,
TVANouvellesIE,
) )
from .tvc import ( from .tvc import (
TVCIE, TVCIE,
@@ -2106,19 +2173,19 @@ from .tvland import TVLandIE
from .tvn24 import TVN24IE from .tvn24 import TVN24IE
from .tvnoe import TVNoeIE from .tvnoe import TVNoeIE
from .tvopengr import ( from .tvopengr import (
TVOpenGrWatchIE,
TVOpenGrEmbedIE, TVOpenGrEmbedIE,
TVOpenGrWatchIE,
) )
from .tvp import ( from .tvp import (
TVPEmbedIE,
TVPIE, TVPIE,
TVPEmbedIE,
TVPStreamIE, TVPStreamIE,
TVPVODSeriesIE, TVPVODSeriesIE,
TVPVODVideoIE, TVPVODVideoIE,
) )
from .tvplay import ( from .tvplay import (
TVPlayIE,
TVPlayHomeIE, TVPlayHomeIE,
TVPlayIE,
) )
from .tvplayer import TVPlayerIE from .tvplayer import TVPlayerIE
from .tweakers import TweakersIE from .tweakers import TweakersIE
@@ -2130,29 +2197,29 @@ from .twitcasting import (
TwitCastingUserIE, TwitCastingUserIE,
) )
from .twitch import ( from .twitch import (
TwitchVodIE, TwitchClipsIE,
TwitchCollectionIE, TwitchCollectionIE,
TwitchVideosIE, TwitchStreamIE,
TwitchVideosClipsIE, TwitchVideosClipsIE,
TwitchVideosCollectionsIE, TwitchVideosCollectionsIE,
TwitchStreamIE, TwitchVideosIE,
TwitchClipsIE, TwitchVodIE,
) )
from .twitter import ( from .twitter import (
TwitterCardIE,
TwitterIE,
TwitterAmplifyIE, TwitterAmplifyIE,
TwitterBroadcastIE, TwitterBroadcastIE,
TwitterSpacesIE, TwitterCardIE,
TwitterIE,
TwitterShortenerIE, TwitterShortenerIE,
TwitterSpacesIE,
) )
from .txxx import ( from .txxx import (
TxxxIE,
PornTopIE, PornTopIE,
TxxxIE,
) )
from .udemy import ( from .udemy import (
UdemyCourseIE,
UdemyIE, UdemyIE,
UdemyCourseIE
) )
from .udn import UDNEmbedIE from .udn import UDNEmbedIE
from .ufctv import ( from .ufctv import (
@@ -2161,16 +2228,13 @@ from .ufctv import (
) )
from .ukcolumn import UkColumnIE from .ukcolumn import UkColumnIE
from .uktvplay import UKTVPlayIE from .uktvplay import UKTVPlayIE
from .digiteka import DigitekaIE
from .dlive import (
DLiveVODIE,
DLiveStreamIE,
)
from .drooble import DroobleIE
from .umg import UMGDeIE from .umg import UMGDeIE
from .unistra import UnistraIE from .unistra import UnistraIE
from .unity import UnityIE from .unity import UnityIE
from .unsupported import KnownDRMIE, KnownPiracyIE from .unsupported import (
KnownDRMIE,
KnownPiracyIE,
)
from .uol import UOLIE from .uol import UOLIE
from .uplynk import ( from .uplynk import (
UplynkIE, UplynkIE,
@@ -2180,10 +2244,13 @@ from .urort import UrortIE
from .urplay import URPlayIE from .urplay import URPlayIE
from .usanetwork import USANetworkIE from .usanetwork import USANetworkIE
from .usatoday import USATodayIE from .usatoday import USATodayIE
from .ustream import UstreamIE, UstreamChannelIE from .ustream import (
UstreamChannelIE,
UstreamIE,
)
from .ustudio import ( from .ustudio import (
UstudioIE,
UstudioEmbedIE, UstudioEmbedIE,
UstudioIE,
) )
from .utreon import UtreonIE from .utreon import UtreonIE
from .varzesh3 import Varzesh3IE from .varzesh3 import Varzesh3IE
@@ -2191,7 +2258,7 @@ from .vbox7 import Vbox7IE
from .veo import VeoIE from .veo import VeoIE
from .veoh import ( from .veoh import (
VeohIE, VeohIE,
VeohUserIE VeohUserIE,
) )
from .vesti import VestiIE from .vesti import VestiIE
from .vevo import ( from .vevo import (
@@ -2199,14 +2266,14 @@ from .vevo import (
VevoPlaylistIE, VevoPlaylistIE,
) )
from .vgtv import ( from .vgtv import (
VGTVIE,
BTArticleIE, BTArticleIE,
BTVestlendingenIE, BTVestlendingenIE,
VGTVIE,
) )
from .vh1 import VH1IE from .vh1 import VH1IE
from .vice import ( from .vice import (
ViceIE,
ViceArticleIE, ViceArticleIE,
ViceIE,
ViceShowIE, ViceShowIE,
) )
from .viddler import ViddlerIE from .viddler import ViddlerIE
@@ -2218,42 +2285,46 @@ from .videocampus_sachsen import (
from .videodetective import VideoDetectiveIE from .videodetective import VideoDetectiveIE
from .videofyme import VideofyMeIE from .videofyme import VideofyMeIE
from .videoken import ( from .videoken import (
VideoKenCategoryIE,
VideoKenIE, VideoKenIE,
VideoKenPlayerIE, VideoKenPlayerIE,
VideoKenPlaylistIE, VideoKenPlaylistIE,
VideoKenCategoryIE,
VideoKenTopicIE, VideoKenTopicIE,
) )
from .videomore import ( from .videomore import (
VideomoreIE, VideomoreIE,
VideomoreVideoIE,
VideomoreSeasonIE, VideomoreSeasonIE,
VideomoreVideoIE,
) )
from .videopress import VideoPressIE from .videopress import VideoPressIE
from .vidio import ( from .vidio import (
VidioIE, VidioIE,
VidioLiveIE,
VidioPremierIE, VidioPremierIE,
VidioLiveIE
) )
from .vidlii import VidLiiIE from .vidlii import VidLiiIE
from .vidly import VidlyIE from .vidly import VidlyIE
from .viewlift import ( from .viewlift import (
ViewLiftIE,
ViewLiftEmbedIE, ViewLiftEmbedIE,
ViewLiftIE,
) )
from .viidea import ViideaIE from .viidea import ViideaIE
from .viki import (
VikiChannelIE,
VikiIE,
)
from .vimeo import ( from .vimeo import (
VimeoIE, VHXEmbedIE,
VimeoAlbumIE, VimeoAlbumIE,
VimeoChannelIE, VimeoChannelIE,
VimeoGroupsIE, VimeoGroupsIE,
VimeoIE,
VimeoLikesIE, VimeoLikesIE,
VimeoOndemandIE, VimeoOndemandIE,
VimeoProIE, VimeoProIE,
VimeoReviewIE, VimeoReviewIE,
VimeoUserIE, VimeoUserIE,
VimeoWatchLaterIE, VimeoWatchLaterIE,
VHXEmbedIE,
) )
from .vimm import ( from .vimm import (
VimmIE, VimmIE,
@@ -2263,46 +2334,41 @@ from .vine import (
VineIE, VineIE,
VineUserIE, VineUserIE,
) )
from .viki import (
VikiIE,
VikiChannelIE,
)
from .viously import ViouslyIE from .viously import ViouslyIE
from .viqeo import ViqeoIE from .viqeo import ViqeoIE
from .viu import ( from .viu import (
ViuIE, ViuIE,
ViuPlaylistIE,
ViuOTTIE, ViuOTTIE,
ViuOTTIndonesiaIE, ViuOTTIndonesiaIE,
ViuPlaylistIE,
) )
from .vk import ( from .vk import (
VKIE, VKIE,
VKUserVideosIE,
VKWallPostIE,
VKPlayIE, VKPlayIE,
VKPlayLiveIE, VKPlayLiveIE,
VKUserVideosIE,
VKWallPostIE,
) )
from .vocaroo import VocarooIE from .vocaroo import VocarooIE
from .vodpl import VODPlIE from .vodpl import VODPlIE
from .vodplatform import VODPlatformIE from .vodplatform import VODPlatformIE
from .voicy import ( from .voicy import (
VoicyIE,
VoicyChannelIE, VoicyChannelIE,
VoicyIE,
) )
from .volejtv import VolejTVIE from .volejtv import VolejTVIE
from .voxmedia import ( from .voxmedia import (
VoxMediaVolumeIE,
VoxMediaIE, VoxMediaIE,
VoxMediaVolumeIE,
) )
from .vrt import ( from .vrt import (
VRTIE, VRTIE,
VrtNUIE,
KetnetIE,
DagelijkseKostIE, DagelijkseKostIE,
KetnetIE,
Radio1BeIE, Radio1BeIE,
VrtNUIE,
) )
from .vtm import VTMIE from .vtm import VTMIE
from .medialaan import MedialaanIE
from .vuclip import VuClipIE from .vuclip import VuClipIE
from .vvvvid import ( from .vvvvid import (
VVVVIDIE, VVVVIDIE,
@@ -2310,20 +2376,20 @@ from .vvvvid import (
) )
from .walla import WallaIE from .walla import WallaIE
from .washingtonpost import ( from .washingtonpost import (
WashingtonPostIE,
WashingtonPostArticleIE, WashingtonPostArticleIE,
WashingtonPostIE,
) )
from .wat import WatIE from .wat import WatIE
from .wdr import ( from .wdr import (
WDRIE, WDRIE,
WDRPageIE,
WDRElefantIE, WDRElefantIE,
WDRMobileIE, WDRMobileIE,
WDRPageIE,
) )
from .webcamerapl import WebcameraplIE from .webcamerapl import WebcameraplIE
from .webcaster import ( from .webcaster import (
WebcasterIE,
WebcasterFeedIE, WebcasterFeedIE,
WebcasterIE,
) )
from .webofstories import ( from .webofstories import (
WebOfStoriesIE, WebOfStoriesIE,
@@ -2331,42 +2397,42 @@ from .webofstories import (
) )
from .weibo import ( from .weibo import (
WeiboIE, WeiboIE,
WeiboVideoIE,
WeiboUserIE, WeiboUserIE,
WeiboVideoIE,
) )
from .weiqitv import WeiqiTVIE from .weiqitv import WeiqiTVIE
from .weverse import ( from .weverse import (
WeverseIE, WeverseIE,
WeverseMediaIE,
WeverseMomentIE,
WeverseLiveTabIE,
WeverseMediaTabIE,
WeverseLiveIE, WeverseLiveIE,
WeverseLiveTabIE,
WeverseMediaIE,
WeverseMediaTabIE,
WeverseMomentIE,
) )
from .wevidi import WeVidiIE from .wevidi import WeVidiIE
from .weyyak import WeyyakIE from .weyyak import WeyyakIE
from .whowatch import WhoWatchIE
from .whyp import WhypIE from .whyp import WhypIE
from .wikimedia import WikimediaIE from .wikimedia import WikimediaIE
from .wimbledon import WimbledonIE from .wimbledon import WimbledonIE
from .wimtv import WimTVIE from .wimtv import WimTVIE
from .whowatch import WhoWatchIE
from .wistia import ( from .wistia import (
WistiaChannelIE,
WistiaIE, WistiaIE,
WistiaPlaylistIE, WistiaPlaylistIE,
WistiaChannelIE,
) )
from .wordpress import ( from .wordpress import (
WordpressPlaylistEmbedIE,
WordpressMiniAudioPlayerEmbedIE, WordpressMiniAudioPlayerEmbedIE,
WordpressPlaylistEmbedIE,
) )
from .worldstarhiphop import WorldStarHipHopIE from .worldstarhiphop import WorldStarHipHopIE
from .wppilot import ( from .wppilot import (
WPPilotIE,
WPPilotChannelsIE, WPPilotChannelsIE,
WPPilotIE,
) )
from .wrestleuniverse import ( from .wrestleuniverse import (
WrestleUniverseVODIE,
WrestleUniversePPVIE, WrestleUniversePPVIE,
WrestleUniverseVODIE,
) )
from .wsj import ( from .wsj import (
WSJIE, WSJIE,
@@ -2374,22 +2440,22 @@ from .wsj import (
) )
from .wwe import WWEIE from .wwe import WWEIE
from .wykop import ( from .wykop import (
WykopDigIE,
WykopDigCommentIE, WykopDigCommentIE,
WykopPostIE, WykopDigIE,
WykopPostCommentIE, WykopPostCommentIE,
WykopPostIE,
) )
from .xanimu import XanimuIE from .xanimu import XanimuIE
from .xboxclips import XboxClipsIE from .xboxclips import XboxClipsIE
from .xhamster import ( from .xhamster import (
XHamsterIE,
XHamsterEmbedIE, XHamsterEmbedIE,
XHamsterIE,
XHamsterUserIE, XHamsterUserIE,
) )
from .xiaohongshu import XiaoHongShuIE from .xiaohongshu import XiaoHongShuIE
from .ximalaya import ( from .ximalaya import (
XimalayaAlbumIE,
XimalayaIE, XimalayaIE,
XimalayaAlbumIE
) )
from .xinpianchang import XinpianchangIE from .xinpianchang import XinpianchangIE
from .xminus import XMinusIE from .xminus import XMinusIE
@@ -2397,27 +2463,27 @@ from .xnxx import XNXXIE
from .xstream import XstreamIE from .xstream import XstreamIE
from .xvideos import ( from .xvideos import (
XVideosIE, XVideosIE,
XVideosQuickiesIE XVideosQuickiesIE,
) )
from .xxxymovies import XXXYMoviesIE from .xxxymovies import XXXYMoviesIE
from .yahoo import ( from .yahoo import (
YahooIE, YahooIE,
YahooSearchIE,
YahooJapanNewsIE, YahooJapanNewsIE,
YahooSearchIE,
) )
from .yandexdisk import YandexDiskIE from .yandexdisk import YandexDiskIE
from .yandexmusic import ( from .yandexmusic import (
YandexMusicTrackIE,
YandexMusicAlbumIE, YandexMusicAlbumIE,
YandexMusicPlaylistIE,
YandexMusicArtistTracksIE,
YandexMusicArtistAlbumsIE, YandexMusicArtistAlbumsIE,
YandexMusicArtistTracksIE,
YandexMusicPlaylistIE,
YandexMusicTrackIE,
) )
from .yandexvideo import ( from .yandexvideo import (
YandexVideoIE, YandexVideoIE,
YandexVideoPreviewIE, YandexVideoPreviewIE,
ZenYandexIE,
ZenYandexChannelIE, ZenYandexChannelIE,
ZenYandexIE,
) )
from .yapfiles import YapFilesIE from .yapfiles import YapFilesIE
from .yappy import ( from .yappy import (
@@ -2431,24 +2497,26 @@ from .youku import (
YoukuShowIE, YoukuShowIE,
) )
from .younow import ( from .younow import (
YouNowLiveIE,
YouNowChannelIE, YouNowChannelIE,
YouNowLiveIE,
YouNowMomentIE, YouNowMomentIE,
) )
from .youporn import YouPornIE from .youporn import YouPornIE
from .zaiko import ( from .zaiko import (
ZaikoIE,
ZaikoETicketIE, ZaikoETicketIE,
ZaikoIE,
) )
from .zapiks import ZapiksIE from .zapiks import ZapiksIE
from .zattoo import ( from .zattoo import (
BBVTVIE, BBVTVIE,
EWETVIE,
SAKTVIE,
VTXTVIE,
BBVTVLiveIE, BBVTVLiveIE,
BBVTVRecordingsIE, BBVTVRecordingsIE,
EinsUndEinsTVIE, EinsUndEinsTVIE,
EinsUndEinsTVLiveIE, EinsUndEinsTVLiveIE,
EinsUndEinsTVRecordingsIE, EinsUndEinsTVRecordingsIE,
EWETVIE,
EWETVLiveIE, EWETVLiveIE,
EWETVRecordingsIE, EWETVRecordingsIE,
GlattvisionTVIE, GlattvisionTVIE,
@@ -2466,13 +2534,11 @@ from .zattoo import (
QuantumTVIE, QuantumTVIE,
QuantumTVLiveIE, QuantumTVLiveIE,
QuantumTVRecordingsIE, QuantumTVRecordingsIE,
SAKTVLiveIE,
SAKTVRecordingsIE,
SaltTVIE, SaltTVIE,
SaltTVLiveIE, SaltTVLiveIE,
SaltTVRecordingsIE, SaltTVRecordingsIE,
SAKTVIE,
SAKTVLiveIE,
SAKTVRecordingsIE,
VTXTVIE,
VTXTVLiveIE, VTXTVLiveIE,
VTXTVRecordingsIE, VTXTVRecordingsIE,
WalyTVIE, WalyTVIE,
@@ -2483,7 +2549,10 @@ from .zattoo import (
ZattooMoviesIE, ZattooMoviesIE,
ZattooRecordingsIE, ZattooRecordingsIE,
) )
from .zdf import ZDFIE, ZDFChannelIE from .zdf import (
ZDFIE,
ZDFChannelIE,
)
from .zee5 import ( from .zee5 import (
Zee5IE, Zee5IE,
Zee5SeriesIE, Zee5SeriesIE,
@@ -2493,16 +2562,16 @@ from .zenporn import ZenPornIE
from .zetland import ZetlandDKArticleIE from .zetland import ZetlandDKArticleIE
from .zhihu import ZhihuIE from .zhihu import ZhihuIE
from .zingmp3 import ( from .zingmp3 import (
ZingMp3IE,
ZingMp3AlbumIE, ZingMp3AlbumIE,
ZingMp3ChartHomeIE, ZingMp3ChartHomeIE,
ZingMp3WeekChartIE,
ZingMp3ChartMusicVideoIE, ZingMp3ChartMusicVideoIE,
ZingMp3UserIE,
ZingMp3HubIE, ZingMp3HubIE,
ZingMp3IE,
ZingMp3LiveRadioIE, ZingMp3LiveRadioIE,
ZingMp3PodcastEpisodeIE, ZingMp3PodcastEpisodeIE,
ZingMp3PodcastIE, ZingMp3PodcastIE,
ZingMp3UserIE,
ZingMp3WeekChartIE,
) )
from .zoom import ZoomIE from .zoom import ZoomIE
from .zype import ZypeIE from .zype import ZypeIE
+2 -2
View File
@@ -6,10 +6,10 @@ import time
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
dict_get,
ExtractorError, ExtractorError,
js_to_json, dict_get,
int_or_none, int_or_none,
js_to_json,
parse_iso8601, parse_iso8601,
str_or_none, str_or_none,
traverse_obj, traverse_obj,
+3 -2
View File
@@ -12,20 +12,21 @@ import urllib.parse
import urllib.request import urllib.request
import urllib.response import urllib.response
import uuid import uuid
from ..utils.networking import clean_proxies
from .common import InfoExtractor from .common import InfoExtractor
from ..aes import aes_ecb_decrypt from ..aes import aes_ecb_decrypt
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
OnDemandPagedList,
bytes_to_intlist, bytes_to_intlist,
decode_base_n, decode_base_n,
int_or_none, int_or_none,
intlist_to_bytes, intlist_to_bytes,
OnDemandPagedList,
time_seconds, time_seconds,
traverse_obj, traverse_obj,
update_url_query, update_url_query,
) )
from ..utils.networking import clean_proxies
def add_opener(ydl, handler): # FIXME: Create proper API in .networking def add_opener(ydl, handler): # FIXME: Create proper API in .networking
+2 -2
View File
@@ -3,10 +3,10 @@ from ..utils import (
float_or_none, float_or_none,
format_field, format_field,
int_or_none, int_or_none,
str_or_none,
traverse_obj,
parse_codecs, parse_codecs,
parse_qs, parse_qs,
str_or_none,
traverse_obj,
) )
+2 -2
View File
@@ -10,18 +10,18 @@ from ..aes import aes_cbc_decrypt_bytes, unpad_pkcs7
from ..compat import compat_b64decode from ..compat import compat_b64decode
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError,
ass_subtitles_timecode, ass_subtitles_timecode,
bytes_to_intlist, bytes_to_intlist,
bytes_to_long, bytes_to_long,
ExtractorError,
float_or_none, float_or_none,
int_or_none, int_or_none,
intlist_to_bytes, intlist_to_bytes,
long_to_bytes, long_to_bytes,
parse_iso8601, parse_iso8601,
pkcs1pad, pkcs1pad,
strip_or_none,
str_or_none, str_or_none,
strip_or_none,
try_get, try_get,
unified_strdate, unified_strdate,
urlencode_postdata, urlencode_postdata,
+2 -2
View File
@@ -4,11 +4,11 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
ISO639Utils,
OnDemandPagedList,
float_or_none, float_or_none,
int_or_none, int_or_none,
ISO639Utils,
join_nonempty, join_nonempty,
OnDemandPagedList,
parse_duration, parse_duration,
str_or_none, str_or_none,
str_to_int, str_to_int,
+1 -1
View File
@@ -5,7 +5,7 @@ from ..utils import (
int_or_none, int_or_none,
mimetype2ext, mimetype2ext,
parse_iso8601, parse_iso8601,
traverse_obj traverse_obj,
) )
-1
View File
@@ -12,7 +12,6 @@ from ..utils import (
) )
from ..utils.traversal import traverse_obj from ..utils.traversal import traverse_obj
_FIELDS = ''' _FIELDS = '''
_id _id
clipImageSource clipImageSource
+2 -2
View File
@@ -1,9 +1,9 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
parse_iso8601, int_or_none,
parse_duration, parse_duration,
parse_filesize, parse_filesize,
int_or_none, parse_iso8601,
) )
+4 -8
View File
@@ -1,17 +1,13 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_urlparse
from ..compat import (
compat_urlparse,
)
from ..utils import ( from ..utils import (
ExtractorError,
clean_html,
int_or_none,
urlencode_postdata, urlencode_postdata,
urljoin, urljoin,
int_or_none,
clean_html,
ExtractorError
) )
+1 -1
View File
@@ -1,6 +1,6 @@
from .common import InfoExtractor from .common import InfoExtractor
from .youtube import YoutubeIE
from .vimeo import VimeoIE from .vimeo import VimeoIE
from .youtube import YoutubeIE
from ..utils import ( from ..utils import (
int_or_none, int_or_none,
parse_iso8601, parse_iso8601,
+1 -1
View File
@@ -1,7 +1,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
determine_ext,
ExtractorError, ExtractorError,
determine_ext,
int_or_none, int_or_none,
mimetype2ext, mimetype2ext,
parse_iso8601, parse_iso8601,
+1 -1
View File
@@ -5,7 +5,7 @@ from ..utils import (
int_or_none, int_or_none,
str_or_none, str_or_none,
traverse_obj, traverse_obj,
unified_timestamp unified_timestamp,
) )
+1 -1
View File
@@ -1,7 +1,7 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import url_or_none, merge_dicts from ..utils import merge_dicts, url_or_none
class AngelIE(InfoExtractor): class AngelIE(InfoExtractor):
+1 -4
View File
@@ -1,8 +1,5 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import ExtractorError, str_to_int
str_to_int,
ExtractorError
)
class AppleConnectIE(InfoExtractor): class AppleConnectIE(InfoExtractor):
+1 -1
View File
@@ -1,5 +1,5 @@
import re
import json import json
import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_urlparse from ..compat import compat_urlparse
+1 -1
View File
@@ -4,8 +4,8 @@ from ..compat import (
compat_urllib_parse_urlparse, compat_urllib_parse_urlparse,
) )
from ..utils import ( from ..utils import (
format_field,
float_or_none, float_or_none,
format_field,
int_or_none, int_or_none,
parse_iso8601, parse_iso8601,
remove_start, remove_start,
+1 -1
View File
@@ -2,10 +2,10 @@ import datetime as dt
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError,
float_or_none, float_or_none,
jwt_encode_hs256, jwt_encode_hs256,
try_get, try_get,
ExtractorError,
) )
+1 -1
View File
@@ -2,8 +2,8 @@ import base64
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
compat_urllib_parse_urlencode,
compat_str, compat_str,
compat_urllib_parse_urlencode,
) )
from ..utils import ( from ..utils import (
format_field, format_field,
+2 -2
View File
@@ -2,12 +2,12 @@ import math
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
compat_urllib_parse_urlparse,
compat_parse_qs, compat_parse_qs,
compat_urllib_parse_urlparse,
) )
from ..utils import ( from ..utils import (
format_field,
InAdvancePagedList, InAdvancePagedList,
format_field,
traverse_obj, traverse_obj,
unified_timestamp, unified_timestamp,
) )
+3 -3
View File
@@ -2,11 +2,11 @@ import json
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
try_get,
int_or_none,
url_or_none,
float_or_none, float_or_none,
int_or_none,
try_get,
unified_timestamp, unified_timestamp,
url_or_none,
) )
-1
View File
@@ -1,5 +1,4 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none, int_or_none,
str_or_none, str_or_none,
+1 -1
View File
@@ -1,5 +1,5 @@
from .common import InfoExtractor
from .amp import AMPIE from .amp import AMPIE
from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
int_or_none, int_or_none,
+1 -1
View File
@@ -1,3 +1,4 @@
from .common import InfoExtractor
from ..utils import ( from ..utils import (
mimetype2ext, mimetype2ext,
parse_duration, parse_duration,
@@ -5,7 +6,6 @@ from ..utils import (
str_or_none, str_or_none,
traverse_obj, traverse_obj,
) )
from .common import InfoExtractor
class BloggerIE(InfoExtractor): class BloggerIE(InfoExtractor):
-1
View File
@@ -1,7 +1,6 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
extract_attributes, extract_attributes,
) )
+1 -5
View File
@@ -1,9 +1,5 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import js_to_json, traverse_obj, unified_timestamp
js_to_json,
traverse_obj,
unified_timestamp
)
class BoxCastVideoIE(InfoExtractor): class BoxCastVideoIE(InfoExtractor):
+1 -1
View File
@@ -6,7 +6,7 @@ from ..utils import (
classproperty, classproperty,
int_or_none, int_or_none,
traverse_obj, traverse_obj,
urljoin urljoin,
) )
+2 -2
View File
@@ -12,10 +12,11 @@ from ..compat import (
) )
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError,
UnsupportedError,
clean_html, clean_html,
dict_get, dict_get,
extract_attributes, extract_attributes,
ExtractorError,
find_xpath_attr, find_xpath_attr,
fix_xml_ampersands, fix_xml_ampersands,
float_or_none, float_or_none,
@@ -29,7 +30,6 @@ from ..utils import (
try_get, try_get,
unescapeHTML, unescapeHTML,
unsmuggle_url, unsmuggle_url,
UnsupportedError,
update_url_query, update_url_query,
url_or_none, url_or_none,
) )
+3 -3
View File
@@ -5,14 +5,14 @@ from .youtube import YoutubeIE
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
extract_attributes, extract_attributes,
find_xpath_attr,
get_element_html_by_id, get_element_html_by_id,
int_or_none, int_or_none,
find_xpath_attr,
smuggle_url, smuggle_url,
xpath_element,
xpath_text,
update_url_query, update_url_query,
url_or_none, url_or_none,
xpath_element,
xpath_text,
) )
+1
View File
@@ -1,4 +1,5 @@
import json import json
from .common import InfoExtractor from .common import InfoExtractor
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
+2 -2
View File
@@ -1,11 +1,11 @@
import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
parse_iso8601, parse_iso8601,
qualities, qualities,
) )
import re
class ClippitIE(InfoExtractor): class ClippitIE(InfoExtractor):
+1 -1
View File
@@ -1,5 +1,6 @@
import base64 import base64
import collections import collections
import functools
import getpass import getpass
import hashlib import hashlib
import http.client import http.client
@@ -21,7 +22,6 @@ import urllib.parse
import urllib.request import urllib.request
import xml.etree.ElementTree import xml.etree.ElementTree
from ..compat import functools # isort: split
from ..compat import ( from ..compat import (
compat_etree_fromstring, compat_etree_fromstring,
compat_expanduser, compat_expanduser,
+1 -1
View File
@@ -1,7 +1,7 @@
from .theplatform import ThePlatformFeedIE from .theplatform import ThePlatformFeedIE
from ..utils import ( from ..utils import (
dict_get,
ExtractorError, ExtractorError,
dict_get,
float_or_none, float_or_none,
int_or_none, int_or_none,
) )
+1 -1
View File
@@ -6,6 +6,7 @@ import time
from .common import InfoExtractor from .common import InfoExtractor
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError,
determine_ext, determine_ext,
float_or_none, float_or_none,
int_or_none, int_or_none,
@@ -13,7 +14,6 @@ from ..utils import (
parse_age_limit, parse_age_limit,
parse_duration, parse_duration,
url_or_none, url_or_none,
ExtractorError
) )
+3 -3
View File
@@ -1,10 +1,12 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from .senategov import SenateISVPIE
from .ustream import UstreamIE
from ..compat import compat_HTMLParseError from ..compat import compat_HTMLParseError
from ..utils import ( from ..utils import (
determine_ext,
ExtractorError, ExtractorError,
determine_ext,
extract_attributes, extract_attributes,
find_xpath_attr, find_xpath_attr,
get_element_by_attribute, get_element_by_attribute,
@@ -19,8 +21,6 @@ from ..utils import (
str_to_int, str_to_int,
unescapeHTML, unescapeHTML,
) )
from .senategov import SenateISVPIE
from .ustream import UstreamIE
class CSpanIE(InfoExtractor): class CSpanIE(InfoExtractor):
+1 -1
View File
@@ -1,6 +1,6 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import unified_timestamp
from .youtube import YoutubeIE from .youtube import YoutubeIE
from ..utils import unified_timestamp
class CtsNewsIE(InfoExtractor): class CtsNewsIE(InfoExtractor):
+1 -1
View File
@@ -1,8 +1,8 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
int_or_none,
determine_protocol, determine_protocol,
int_or_none,
try_get, try_get,
unescapeHTML, unescapeHTML,
) )
+1 -1
View File
@@ -1,8 +1,8 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ExtractorError, clean_html, int_or_none, try_get, unified_strdate
from ..compat import compat_str from ..compat import compat_str
from ..utils import ExtractorError, clean_html, int_or_none, try_get, unified_strdate
class DamtomoBaseIE(InfoExtractor): class DamtomoBaseIE(InfoExtractor):
+2 -2
View File
@@ -1,11 +1,11 @@
import re
import os.path import os.path
import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_urlparse from ..compat import compat_urlparse
from ..utils import ( from ..utils import (
url_basename,
remove_start, remove_start,
url_basename,
) )
-1
View File
@@ -1,5 +1,4 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
parse_resolution, parse_resolution,
+1 -1
View File
@@ -2,9 +2,9 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError,
determine_ext, determine_ext,
extract_attributes, extract_attributes,
ExtractorError,
int_or_none, int_or_none,
parse_age_limit, parse_age_limit,
remove_end, remove_end,
+2 -2
View File
@@ -2,10 +2,10 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none,
unified_strdate,
determine_ext, determine_ext,
int_or_none,
join_nonempty, join_nonempty,
unified_strdate,
update_url_query, update_url_query,
) )
+1 -1
View File
@@ -1,5 +1,5 @@
import time
import hashlib import hashlib
import time
import urllib import urllib
import uuid import uuid
+1 -1
View File
@@ -4,8 +4,8 @@ import uuid
from .common import InfoExtractor from .common import InfoExtractor
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
determine_ext,
ExtractorError, ExtractorError,
determine_ext,
float_or_none, float_or_none,
int_or_none, int_or_none,
remove_start, remove_start,
+1 -1
View File
@@ -2,8 +2,8 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none,
NO_DEFAULT, NO_DEFAULT,
int_or_none,
parse_duration, parse_duration,
str_to_int, str_to_int,
) )
+1 -1
View File
@@ -5,9 +5,9 @@ import urllib.parse
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_urlparse from ..compat import compat_urlparse
from ..utils import ( from ..utils import (
ExtractorError,
clean_html, clean_html,
extract_attributes, extract_attributes,
ExtractorError,
get_elements_by_class, get_elements_by_class,
int_or_none, int_or_none,
js_to_json, js_to_json,
+2 -2
View File
@@ -2,15 +2,15 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
determine_ext,
ExtractorError, ExtractorError,
determine_ext,
int_or_none, int_or_none,
join_nonempty, join_nonempty,
js_to_json, js_to_json,
mimetype2ext, mimetype2ext,
parse_iso8601,
try_get, try_get,
unescapeHTML, unescapeHTML,
parse_iso8601,
) )
+1 -1
View File
@@ -1,10 +1,10 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_urlparse
from ..utils import ( from ..utils import (
int_or_none, int_or_none,
unified_strdate, unified_strdate,
url_or_none, url_or_none,
) )
from ..compat import compat_urlparse
class DWIE(InfoExtractor): class DWIE(InfoExtractor):
+2 -2
View File
@@ -4,15 +4,15 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
ExtractorError,
clean_html, clean_html,
determine_ext, determine_ext,
ExtractorError,
dict_get, dict_get,
int_or_none, int_or_none,
merge_dicts, merge_dicts,
parse_qs,
parse_age_limit, parse_age_limit,
parse_iso8601, parse_iso8601,
parse_qs,
str_or_none, str_or_none,
try_get, try_get,
url_or_none, url_or_none,
+1 -1
View File
@@ -8,7 +8,7 @@ from ..utils import (
qualities, qualities,
traverse_obj, traverse_obj,
unified_strdate, unified_strdate,
xpath_text xpath_text,
) )
+1 -2
View File
@@ -1,8 +1,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
parse_duration,
js_to_json, js_to_json,
parse_duration,
) )
+2 -2
View File
@@ -1,8 +1,8 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
xpath_text,
parse_duration,
ExtractorError, ExtractorError,
parse_duration,
xpath_text,
) )
+1 -7
View File
@@ -1,12 +1,6 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import ExtractorError, mimetype2ext, parse_iso8601, try_get
parse_iso8601,
ExtractorError,
try_get,
mimetype2ext
)
class FancodeVodIE(InfoExtractor): class FancodeVodIE(InfoExtractor):
+1 -1
View File
@@ -3,9 +3,9 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_etree_fromstring from ..compat import compat_etree_fromstring
from ..utils import ( from ..utils import (
int_or_none,
xpath_element, xpath_element,
xpath_text, xpath_text,
int_or_none,
) )
+1 -1
View File
@@ -1,7 +1,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none,
float_or_none, float_or_none,
int_or_none,
) )
-1
View File
@@ -1,5 +1,4 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none, int_or_none,
traverse_obj, traverse_obj,
+2 -2
View File
@@ -2,10 +2,10 @@ from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError,
int_or_none,
qualities, qualities,
strip_or_none, strip_or_none,
int_or_none,
ExtractorError,
) )
+1 -1
View File
@@ -7,7 +7,7 @@ from ..utils import (
parse_codecs, parse_codecs,
parse_duration, parse_duration,
str_to_int, str_to_int,
unified_timestamp unified_timestamp,
) )
+1 -1
View File
@@ -10,7 +10,7 @@ from ..utils import (
int_or_none, int_or_none,
str_or_none, str_or_none,
traverse_obj, traverse_obj,
try_get try_get,
) )
+1
View File
@@ -1,4 +1,5 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
float_or_none, float_or_none,
+1 -1
View File
@@ -4,7 +4,7 @@ import types
import urllib.parse import urllib.parse
import xml.etree.ElementTree import xml.etree.ElementTree
from .common import InfoExtractor # isort: split from .common import InfoExtractor
from .commonprotocols import RtmpIE from .commonprotocols import RtmpIE
from .youtube import YoutubeIE from .youtube import YoutubeIE
from ..compat import compat_etree_fromstring from ..compat import compat_etree_fromstring
+1 -1
View File
@@ -1,7 +1,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
bool_or_none,
ExtractorError, ExtractorError,
bool_or_none,
dict_get, dict_get,
float_or_none, float_or_none,
int_or_none, int_or_none,
-1
View File
@@ -1,5 +1,4 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
urlencode_postdata, urlencode_postdata,
+1 -1
View File
@@ -3,9 +3,9 @@ import urllib.parse
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError,
determine_ext, determine_ext,
extract_attributes, extract_attributes,
ExtractorError,
int_or_none, int_or_none,
parse_qs, parse_qs,
smuggle_url, smuggle_url,
+8 -8
View File
@@ -3,16 +3,16 @@ import re
from .adobepass import AdobePassIE from .adobepass import AdobePassIE
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
int_or_none,
determine_ext,
parse_age_limit,
remove_start,
remove_end,
try_get,
urlencode_postdata,
ExtractorError, ExtractorError,
unified_timestamp, determine_ext,
int_or_none,
parse_age_limit,
remove_end,
remove_start,
traverse_obj, traverse_obj,
try_get,
unified_timestamp,
urlencode_postdata,
) )
+1 -1
View File
@@ -4,7 +4,7 @@ from ..utils import (
determine_ext, determine_ext,
str_or_none, str_or_none,
unified_timestamp, unified_timestamp,
url_or_none url_or_none,
) )
from ..utils.traversal import traverse_obj from ..utils.traversal import traverse_obj
+1 -4
View File
@@ -1,10 +1,7 @@
import hashlib import hashlib
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import ExtractorError, try_get
ExtractorError,
try_get
)
class GofileIE(InfoExtractor): class GofileIE(InfoExtractor):
+3 -6
View File
@@ -1,11 +1,8 @@
import json
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import try_get, url_or_none
try_get,
url_or_none
)
import json
class GoToStageIE(InfoExtractor): class GoToStageIE(InfoExtractor):
+2 -2
View File
@@ -2,11 +2,11 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
xpath_text,
xpath_element,
int_or_none, int_or_none,
parse_duration, parse_duration,
urljoin, urljoin,
xpath_element,
xpath_text,
) )
+1 -1
View File
@@ -1,7 +1,7 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
determine_ext,
KNOWN_EXTENSIONS, KNOWN_EXTENSIONS,
determine_ext,
str_to_int, str_to_int,
) )
+1 -1
View File
@@ -1,8 +1,8 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
clean_html,
ExtractorError, ExtractorError,
clean_html,
int_or_none, int_or_none,
merge_dicts, merge_dicts,
parse_count, parse_count,
+1 -1
View File
@@ -4,8 +4,8 @@ from .common import InfoExtractor
from ..networking import Request from ..networking import Request
from ..networking.exceptions import HTTPError from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
clean_html,
ExtractorError, ExtractorError,
clean_html,
int_or_none, int_or_none,
parse_age_limit, parse_age_limit,
try_get, try_get,
+2 -4
View File
@@ -2,8 +2,8 @@ import hashlib
import random import random
import re import re
from ..compat import compat_urlparse, compat_b64decode from .common import InfoExtractor
from ..compat import compat_b64decode, compat_urlparse
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
int_or_none, int_or_none,
@@ -13,8 +13,6 @@ from ..utils import (
update_url_query, update_url_query,
) )
from .common import InfoExtractor
class HuyaLiveIE(InfoExtractor): class HuyaLiveIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.|m\.)?huya\.com/(?P<id>[^/#?&]+)(?:\D|$)' _VALID_URL = r'https?://(?:www\.|m\.)?huya\.com/(?P<id>[^/#?&]+)(?:\D|$)'
+1 -1
View File
@@ -1,6 +1,6 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ExtractorError, str_or_none, traverse_obj, unified_strdate
from ..compat import compat_str from ..compat import compat_str
from ..utils import ExtractorError, str_or_none, traverse_obj, unified_strdate
class IchinanaLiveIE(InfoExtractor): class IchinanaLiveIE(InfoExtractor):
+2 -2
View File
@@ -1,3 +1,4 @@
from .bokecc import BokeCCBaseIE
from ..compat import ( from ..compat import (
compat_b64decode, compat_b64decode,
compat_urllib_parse_unquote, compat_urllib_parse_unquote,
@@ -6,10 +7,9 @@ from ..compat import (
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
determine_ext, determine_ext,
update_url_query,
traverse_obj, traverse_obj,
update_url_query,
) )
from .bokecc import BokeCCBaseIE
class InfoQIE(BokeCCBaseIE): class InfoQIE(BokeCCBaseIE):
+3 -3
View File
@@ -3,12 +3,12 @@ import time
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError,
determine_ext, determine_ext,
js_to_json, js_to_json,
urlencode_postdata,
ExtractorError,
parse_qs, parse_qs,
traverse_obj traverse_obj,
urlencode_postdata,
) )
+3 -7
View File
@@ -4,20 +4,16 @@ import re
import time import time
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import (
compat_str,
compat_urllib_parse_urlencode,
compat_urllib_parse_unquote
)
from .openload import PhantomJSwrapper from .openload import PhantomJSwrapper
from ..compat import compat_str, compat_urllib_parse_unquote, compat_urllib_parse_urlencode
from ..utils import ( from ..utils import (
ExtractorError,
clean_html, clean_html,
decode_packed_codes, decode_packed_codes,
ExtractorError,
float_or_none, float_or_none,
format_field, format_field,
get_element_by_id,
get_element_by_attribute, get_element_by_attribute,
get_element_by_id,
int_or_none, int_or_none,
js_to_json, js_to_json,
ohdave_rsa_encrypt, ohdave_rsa_encrypt,
+1 -2
View File
@@ -1,12 +1,11 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
int_or_none, int_or_none,
str_or_none, str_or_none,
traverse_obj, traverse_obj,
urljoin urljoin,
) )
+4 -5
View File
@@ -1,23 +1,22 @@
import json import json
from .common import InfoExtractor
from .brightcove import BrightcoveNewIE from .brightcove import BrightcoveNewIE
from .common import InfoExtractor
from ..compat import compat_str from ..compat import compat_str
from ..utils import ( from ..utils import (
JSON_LD_RE,
ExtractorError,
base_url, base_url,
clean_html, clean_html,
determine_ext, determine_ext,
extract_attributes, extract_attributes,
ExtractorError,
get_element_by_class, get_element_by_class,
JSON_LD_RE,
merge_dicts, merge_dicts,
parse_duration, parse_duration,
smuggle_url, smuggle_url,
try_get, try_get,
url_or_none,
url_basename, url_basename,
url_or_none,
urljoin, urljoin,
) )
+2 -2
View File
@@ -1,9 +1,9 @@
import functools import functools
import urllib.parse
import urllib.error
import hashlib import hashlib
import json import json
import time import time
import urllib.error
import urllib.parse
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
+1 -1
View File
@@ -1,8 +1,8 @@
import hashlib import hashlib
import random import random
from ..compat import compat_str
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import compat_str
from ..utils import ( from ..utils import (
clean_html, clean_html,
int_or_none, int_or_none,
+2 -2
View File
@@ -1,5 +1,6 @@
import re import re
from .common import InfoExtractor
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
clean_html, clean_html,
@@ -9,9 +10,8 @@ from ..utils import (
smuggle_url, smuggle_url,
traverse_obj, traverse_obj,
try_call, try_call,
unsmuggle_url unsmuggle_url,
) )
from .common import InfoExtractor
def _parse_japanese_date(text): def _parse_japanese_date(text):
+1 -4
View File
@@ -1,8 +1,5 @@
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import ExtractorError, unified_strdate
ExtractorError,
unified_strdate
)
class JoveIE(InfoExtractor): class JoveIE(InfoExtractor):
+1 -1
View File
@@ -1,6 +1,6 @@
import base64 import base64
import re
import json import json
import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ( from ..utils import (
+1 -1
View File
@@ -3,8 +3,8 @@ from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
int_or_none, int_or_none,
strip_or_none,
str_or_none, str_or_none,
strip_or_none,
traverse_obj, traverse_obj,
unified_timestamp, unified_timestamp,
) )
+4 -4
View File
@@ -4,18 +4,18 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import (
compat_urlparse,
compat_parse_qs, compat_parse_qs,
compat_urlparse,
) )
from ..utils import ( from ..utils import (
clean_html,
ExtractorError, ExtractorError,
clean_html,
format_field, format_field,
int_or_none, int_or_none,
unsmuggle_url, remove_start,
smuggle_url, smuggle_url,
traverse_obj, traverse_obj,
remove_start unsmuggle_url,
) )
+2 -2
View File
@@ -1,7 +1,7 @@
import time import hashlib
import random import random
import string import string
import hashlib import time
import urllib.parse import urllib.parse
from .common import InfoExtractor from .common import InfoExtractor

Some files were not shown because too many files have changed in this diff Show More