]> jfr.im git - yt-dlp.git/commitdiff
[misc] Add `hatch`, `ruff`, `pre-commit` and improve dev docs (#7409)
authorSimon Sawicki <redacted>
Sun, 26 May 2024 19:27:21 +0000 (21:27 +0200)
committerGitHub <redacted>
Sun, 26 May 2024 19:27:21 +0000 (21:27 +0200)
Authored by: bashonly, seproDev, Grub4K

Co-authored-by: bashonly <redacted>
Co-authored-by: sepro <redacted>
264 files changed:
.github/PULL_REQUEST_TEMPLATE.md
.github/workflows/core.yml
.github/workflows/quick-test.yml
.gitignore
.pre-commit-config.yaml [new file with mode: 0644]
.pre-commit-hatch.yaml [new file with mode: 0644]
CONTRIBUTING.md
Makefile
devscripts/install_deps.py
devscripts/run_tests.py
pyproject.toml
setup.cfg
test/test_http_proxy.py
yt_dlp/extractor/_extractors.py
yt_dlp/extractor/abc.py
yt_dlp/extractor/abematv.py
yt_dlp/extractor/acfun.py
yt_dlp/extractor/adn.py
yt_dlp/extractor/adobetv.py
yt_dlp/extractor/airtv.py
yt_dlp/extractor/allstar.py
yt_dlp/extractor/alphaporno.py
yt_dlp/extractor/alura.py
yt_dlp/extractor/amara.py
yt_dlp/extractor/amp.py
yt_dlp/extractor/anchorfm.py
yt_dlp/extractor/angel.py
yt_dlp/extractor/appleconnect.py
yt_dlp/extractor/appletrailers.py
yt_dlp/extractor/arnes.py
yt_dlp/extractor/atvat.py
yt_dlp/extractor/awaan.py
yt_dlp/extractor/banbye.py
yt_dlp/extractor/bannedvideo.py
yt_dlp/extractor/beeg.py
yt_dlp/extractor/bleacherreport.py
yt_dlp/extractor/blogger.py
yt_dlp/extractor/bostonglobe.py
yt_dlp/extractor/boxcast.py
yt_dlp/extractor/brainpop.py
yt_dlp/extractor/brightcove.py
yt_dlp/extractor/cbs.py
yt_dlp/extractor/cinetecamilano.py
yt_dlp/extractor/clippit.py
yt_dlp/extractor/common.py
yt_dlp/extractor/corus.py
yt_dlp/extractor/crackle.py
yt_dlp/extractor/cspan.py
yt_dlp/extractor/ctsnews.py
yt_dlp/extractor/dailymail.py
yt_dlp/extractor/damtomo.py
yt_dlp/extractor/democracynow.py
yt_dlp/extractor/digitalconcerthall.py
yt_dlp/extractor/discoverygo.py
yt_dlp/extractor/disney.py
yt_dlp/extractor/douyutv.py
yt_dlp/extractor/dplay.py
yt_dlp/extractor/drtuber.py
yt_dlp/extractor/duboku.py
yt_dlp/extractor/dvtv.py
yt_dlp/extractor/dw.py
yt_dlp/extractor/ertgr.py
yt_dlp/extractor/europa.py
yt_dlp/extractor/euscreen.py
yt_dlp/extractor/eyedotv.py
yt_dlp/extractor/fancode.py
yt_dlp/extractor/faz.py
yt_dlp/extractor/fczenit.py
yt_dlp/extractor/fifa.py
yt_dlp/extractor/filmon.py
yt_dlp/extractor/gab.py
yt_dlp/extractor/gamejolt.py
yt_dlp/extractor/gaskrank.py
yt_dlp/extractor/generic.py
yt_dlp/extractor/gettr.py
yt_dlp/extractor/gigya.py
yt_dlp/extractor/glomex.py
yt_dlp/extractor/go.py
yt_dlp/extractor/godresource.py
yt_dlp/extractor/gofile.py
yt_dlp/extractor/gotostage.py
yt_dlp/extractor/hbo.py
yt_dlp/extractor/hearthisat.py
yt_dlp/extractor/hketv.py
yt_dlp/extractor/hrti.py
yt_dlp/extractor/huya.py
yt_dlp/extractor/ichinanalive.py
yt_dlp/extractor/infoq.py
yt_dlp/extractor/iprima.py
yt_dlp/extractor/iqiyi.py
yt_dlp/extractor/itprotv.py
yt_dlp/extractor/itv.py
yt_dlp/extractor/iwara.py
yt_dlp/extractor/jamendo.py
yt_dlp/extractor/japandiet.py
yt_dlp/extractor/jove.py
yt_dlp/extractor/jstream.py
yt_dlp/extractor/kakao.py
yt_dlp/extractor/kaltura.py
yt_dlp/extractor/kankanews.py
yt_dlp/extractor/kuwo.py
yt_dlp/extractor/lcp.py
yt_dlp/extractor/lecture2go.py
yt_dlp/extractor/lecturio.py
yt_dlp/extractor/leeco.py
yt_dlp/extractor/libraryofcongress.py
yt_dlp/extractor/lifenews.py
yt_dlp/extractor/limelight.py
yt_dlp/extractor/linkedin.py
yt_dlp/extractor/mainstreaming.py
yt_dlp/extractor/manoto.py
yt_dlp/extractor/medaltv.py
yt_dlp/extractor/mediaklikk.py
yt_dlp/extractor/mediaset.py
yt_dlp/extractor/mediasite.py
yt_dlp/extractor/microsoftstream.py
yt_dlp/extractor/mildom.py
yt_dlp/extractor/mit.py
yt_dlp/extractor/monstercat.py
yt_dlp/extractor/moviepilot.py
yt_dlp/extractor/movingimage.py
yt_dlp/extractor/msn.py
yt_dlp/extractor/n1.py
yt_dlp/extractor/naver.py
yt_dlp/extractor/nba.py
yt_dlp/extractor/nbc.py
yt_dlp/extractor/ndr.py
yt_dlp/extractor/nfhsnetwork.py
yt_dlp/extractor/nhl.py
yt_dlp/extractor/ninenews.py
yt_dlp/extractor/ninenow.py
yt_dlp/extractor/nitter.py
yt_dlp/extractor/nobelprize.py
yt_dlp/extractor/noz.py
yt_dlp/extractor/nuevo.py
yt_dlp/extractor/nuvid.py
yt_dlp/extractor/nzherald.py
yt_dlp/extractor/odkmedia.py
yt_dlp/extractor/olympics.py
yt_dlp/extractor/onenewsnz.py
yt_dlp/extractor/onet.py
yt_dlp/extractor/opencast.py
yt_dlp/extractor/openrec.py
yt_dlp/extractor/ora.py
yt_dlp/extractor/packtpub.py
yt_dlp/extractor/panopto.py
yt_dlp/extractor/paramountplus.py
yt_dlp/extractor/pbs.py
yt_dlp/extractor/pearvideo.py
yt_dlp/extractor/peertube.py
yt_dlp/extractor/piksel.py
yt_dlp/extractor/pladform.py
yt_dlp/extractor/platzi.py
yt_dlp/extractor/playtvak.py
yt_dlp/extractor/pluralsight.py
yt_dlp/extractor/polsatgo.py
yt_dlp/extractor/pornflip.py
yt_dlp/extractor/pornovoisines.py
yt_dlp/extractor/prx.py
yt_dlp/extractor/puhutv.py
yt_dlp/extractor/qingting.py
yt_dlp/extractor/qqmusic.py
yt_dlp/extractor/radiocanada.py
yt_dlp/extractor/radiocomercial.py
yt_dlp/extractor/radiozet.py
yt_dlp/extractor/radlive.py
yt_dlp/extractor/rai.py
yt_dlp/extractor/rbgtum.py
yt_dlp/extractor/rcti.py
yt_dlp/extractor/rds.py
yt_dlp/extractor/redbulltv.py
yt_dlp/extractor/reddit.py
yt_dlp/extractor/redgifs.py
yt_dlp/extractor/redtube.py
yt_dlp/extractor/reuters.py
yt_dlp/extractor/rmcdecouverte.py
yt_dlp/extractor/rte.py
yt_dlp/extractor/rtp.py
yt_dlp/extractor/rtvcplay.py
yt_dlp/extractor/rtvs.py
yt_dlp/extractor/rutube.py
yt_dlp/extractor/rutv.py
yt_dlp/extractor/ruutu.py
yt_dlp/extractor/safari.py
yt_dlp/extractor/scrippsnetworks.py
yt_dlp/extractor/scte.py
yt_dlp/extractor/sendtonews.py
yt_dlp/extractor/seznamzpravy.py
yt_dlp/extractor/shahid.py
yt_dlp/extractor/shemaroome.py
yt_dlp/extractor/sixplay.py
yt_dlp/extractor/skynewsarabia.py
yt_dlp/extractor/sohu.py
yt_dlp/extractor/sovietscloset.py
yt_dlp/extractor/spankbang.py
yt_dlp/extractor/springboardplatform.py
yt_dlp/extractor/startv.py
yt_dlp/extractor/stitcher.py
yt_dlp/extractor/storyfire.py
yt_dlp/extractor/streamable.py
yt_dlp/extractor/stripchat.py
yt_dlp/extractor/sunporno.py
yt_dlp/extractor/syfy.py
yt_dlp/extractor/tbs.py
yt_dlp/extractor/teachable.py
yt_dlp/extractor/teachertube.py
yt_dlp/extractor/teamcoco.py
yt_dlp/extractor/teamtreehouse.py
yt_dlp/extractor/ted.py
yt_dlp/extractor/tele13.py
yt_dlp/extractor/telewebion.py
yt_dlp/extractor/tempo.py
yt_dlp/extractor/tencent.py
yt_dlp/extractor/theguardian.py
yt_dlp/extractor/theintercept.py
yt_dlp/extractor/theplatform.py
yt_dlp/extractor/threeqsdn.py
yt_dlp/extractor/toypics.py
yt_dlp/extractor/triller.py
yt_dlp/extractor/trueid.py
yt_dlp/extractor/tumblr.py
yt_dlp/extractor/turner.py
yt_dlp/extractor/tv2.py
yt_dlp/extractor/tv2hu.py
yt_dlp/extractor/tvanouvelles.py
yt_dlp/extractor/tvn24.py
yt_dlp/extractor/tvp.py
yt_dlp/extractor/tvplay.py
yt_dlp/extractor/tvplayer.py
yt_dlp/extractor/tweakers.py
yt_dlp/extractor/twitter.py
yt_dlp/extractor/udn.py
yt_dlp/extractor/ukcolumn.py
yt_dlp/extractor/urplay.py
yt_dlp/extractor/usatoday.py
yt_dlp/extractor/ustream.py
yt_dlp/extractor/ustudio.py
yt_dlp/extractor/veo.py
yt_dlp/extractor/vesti.py
yt_dlp/extractor/vevo.py
yt_dlp/extractor/vice.py
yt_dlp/extractor/vidio.py
yt_dlp/extractor/vidlii.py
yt_dlp/extractor/vimeo.py
yt_dlp/extractor/viu.py
yt_dlp/extractor/vk.py
yt_dlp/extractor/walla.py
yt_dlp/extractor/washingtonpost.py
yt_dlp/extractor/wdr.py
yt_dlp/extractor/weibo.py
yt_dlp/extractor/whowatch.py
yt_dlp/extractor/wimtv.py
yt_dlp/extractor/wppilot.py
yt_dlp/extractor/wsj.py
yt_dlp/extractor/xhamster.py
yt_dlp/extractor/xnxx.py
yt_dlp/extractor/xstream.py
yt_dlp/extractor/xvideos.py
yt_dlp/extractor/xxxymovies.py
yt_dlp/extractor/yandexmusic.py
yt_dlp/extractor/zapiks.py
yt_dlp/extractor/zhihu.py
yt_dlp/extractor/zingmp3.py
yt_dlp/extractor/zype.py

index c4d3e812e2e4fab6a42d0bdeaeecdbf85e58ffdc..4deee572f416250aba593e7c9bb624963a9ffc44 100644 (file)
@@ -28,7 +28,6 @@ # PLEASE FOLLOW THE GUIDE BELOW
 ### 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)
 - [ ] [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:
 - [ ] I am the original author of this code and I am willing to release it under [Unlicense](http://unlicense.org/)
index 70769f967fe7b2b256c98914f056241920f74848..fdfdebc65d3dd9e19399a9e84e7eee2691735796 100644 (file)
@@ -53,7 +53,7 @@ jobs:
       with:
         python-version: ${{ matrix.python-version }}
     - 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
       continue-on-error: False
       run: |
index 24b34911f391b745d960eb58fbf1be6d5eb85ec0..3afb51a308bc4e48d53a0161821cbf4a3c65293c 100644 (file)
@@ -15,13 +15,13 @@ jobs:
       with:
         python-version: '3.8'
     - name: Install test requirements
-      run: python3 ./devscripts/install_deps.py --include dev
+      run: python3 ./devscripts/install_deps.py --include test
     - name: Run tests
       run: |
         python3 -m yt_dlp -v || true
         python3 ./devscripts/run_tests.py core
-  flake8:
-    name: Linter
+  check:
+    name: Code check
     if: "!contains(github.event.head_commit.message, 'ci skip all')"
     runs-on: ubuntu-latest
     steps:
@@ -29,9 +29,11 @@ jobs:
     - uses: actions/setup-python@v5
       with:
         python-version: '3.8'
-    - name: Install flake8
-      run: python3 ./devscripts/install_deps.py -o --include dev
+    - name: Install dev dependencies
+      run: python3 ./devscripts/install_deps.py -o --include static-analysis
     - name: Make lazy extractors
       run: python3 ./devscripts/make_lazy_extractors.py
-    - name: Run flake8
-      run: flake8 .
+    - name: Run ruff
+      run: ruff check --output-format github .
+    - name: Run autopep8
+      run: autopep8 --diff .
index 630c2e01f5b56361e5020b1a6d00787da4482020..db322c4f08f1067937264b53774cd8f28f200f62 100644 (file)
@@ -67,7 +67,7 @@ cookies
 # Python
 *.pyc
 *.pyo
-.pytest_cache
+.*_cache
 wine-py2exe/
 py2exe.log
 build/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644 (file)
index 0000000..a821eee
--- /dev/null
@@ -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]
diff --git a/.pre-commit-hatch.yaml b/.pre-commit-hatch.yaml
new file mode 100644 (file)
index 0000000..fb7d25e
--- /dev/null
@@ -0,0 +1,9 @@
+repos:
+- repo: local
+  hooks:
+  - id: fix
+    name: Apply code fixes
+    entry: hatch fmt
+    language: system
+    types: [python]
+    require_serial: true
index c94ec55a69bc522101c85d4c64b549a21e535769..837b600e3178659c9cce1dc966be5f4aa8912872 100644 (file)
@@ -134,18 +134,53 @@ ### Is the website primarily used for piracy?
 
 # 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
+```
+
+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.
 
-    python3 devscripts/run_tests.py
+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.
 
+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).
 
 
@@ -165,12 +200,16 @@ ## Adding support for a new site
 1. [Fork this repository](https://github.com/yt-dlp/yt-dlp/fork)
 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
 
-        cd yt-dlp
-        git checkout -b yourextractor
+    ```shell
+    $ cd yt-dlp
+    $ git checkout -b yourextractor
+    ```
 
 1. Start with this simple template and save it to `yt_dlp/extractor/yourextractor.py`:
 
@@ -217,21 +256,27 @@ ## Adding support for a new site
                 # 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. 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. 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 `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. 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:
+
+    ```shell
+    $ hatch fmt --check
+    ```
 
-        $ flake8 yt_dlp/extractor/yourextractor.py
+    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. 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
-        $ git add yt_dlp/extractor/yourextractor.py
-        $ git commit -m '[yourextractor] Add extractor'
-        $ git push origin yourextractor
+    ```shell
+    $ git add yt_dlp/extractor/_extractors.py
+    $ git add yt_dlp/extractor/yourextractor.py
+    $ 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.
 
index cef4bc6cb1acbfe9506fbfa15ca4a15b7b5e3834..b8f010086151c472936994d378ad246389b226c9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
 clean-cache:
        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 {} \;
 
 completion-bash: completions/bash/yt-dlp
@@ -70,7 +70,8 @@ uninstall:
        rm -f $(DESTDIR)$(SHAREDIR)/fish/vendor_completions.d/yt-dlp.fish
 
 codetest:
-       flake8 .
+       ruff check .
+       autopep8 --diff .
 
 test:
        $(PYTHON) -m pytest
@@ -151,7 +152,7 @@ yt-dlp.tar.gz: all
                --exclude '*.pyo' \
                --exclude '*~' \
                --exclude '__pycache__' \
-               --exclude '.pytest_cache' \
+               --exclude '.*_cache' \
                --exclude '.git' \
                -- \
                README.md supportedsites.md Changelog.md LICENSE \
index d33fc637c6fa5365fb9569703f3ebcb0ad1f3136..d292505458b7b95e80c846ac0714073a6f3b5179 100755 (executable)
@@ -42,17 +42,25 @@ def parse_args():
 def main():
     args = parse_args()
     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']
     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 = []
     if not args.only_optional:  # `-o` should exclude 'dependencies' and the 'default' group
         targets.extend(project_table['dependencies'])
         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 [])):
-        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]
 
index 6d638a9748636fe4bc958a310df2fe90b762e8e3..c605aa62cfc8f567178695ce7796f9f2e16d413e 100755 (executable)
@@ -4,6 +4,7 @@
 import functools
 import os
 import re
+import shlex
 import subprocess
 import sys
 from pathlib import Path
@@ -18,6 +19,8 @@ def parse_args():
         'test', help='a extractor tests, or one of "core" or "download"', nargs='*')
     parser.add_argument(
         '-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()
 
 
@@ -26,15 +29,16 @@ def run_tests(*tests, pattern=None, ci=False):
     run_download = 'download' in 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:
         arguments.append('--color=yes')
+    if pattern:
+        arguments.extend(['-k', pattern])
     if run_core:
         arguments.extend(['-m', 'not download'])
     elif run_download:
         arguments.extend(['-m', 'download'])
-    elif pattern:
-        arguments.extend(['-k', pattern])
     else:
         arguments.extend(
             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
 
     arguments = [sys.executable, '-Werror', '-m', 'unittest']
+    if pattern:
+        arguments.extend(['-k', pattern])
     if run_core:
         print('"pytest" needs to be installed to run core tests', file=sys.stderr, flush=True)
         return 1
     elif run_download:
         arguments.append('test.test_download')
-    elif pattern:
-        arguments.extend(['-k', pattern])
     else:
         arguments.extend(
             f'test.test_download.TestDownload.test_{test}' for test in tests)
index 8e3bce4bfc48f416ce80a3d0e5f35f7520a35abd..96cb368b6d9103205c08e287d2c91ad21fba4805 100644 (file)
@@ -66,9 +66,16 @@ build = [
     "wheel",
 ]
 dev = [
-    "flake8",
-    "isort",
-    "pytest",
+    "pre-commit",
+    "yt-dlp[static-analysis]",
+    "yt-dlp[test]",
+]
+static-analysis = [
+    "autopep8~=2.0",
+    "ruff~=0.4.4",
+]
+test = [
+    "pytest~=8.1",
 ]
 pyinstaller = [
     "pyinstaller>=6.3; sys_platform!='darwin'",
@@ -126,3 +133,146 @@ artifacts = ["/yt_dlp/extractor/lazy_extractors.py"]
 [tool.hatch.version]
 path = "yt_dlp/version.py"
 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",
+]
index aeb4cee58697a861215a439689731812defbb827..340cc3b4d9996cf540f23a1ce39dc6d574917b23 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -14,12 +14,6 @@ remove-duplicate-keys = true
 remove-unused-variables = true
 
 
-[tool:pytest]
-addopts = -ra -v --strict-markers
-markers =
-    download
-
-
 [tox:tox]
 skipsdist = true
 envlist = py{38,39,310,311,312},pypy{38,39,310}
index c1d7c53f5192c6aad0a30a6bac2c4770fc468abd..1b21fe78e8717daf8a55bf34d0c19e9813e58916 100644 (file)
@@ -93,6 +93,7 @@ class SSLTransport(urllib3.util.ssltransport.SSLTransport):
 
         This allows us to chain multiple TLS connections.
         """
+
         def __init__(self, socket, ssl_context, server_hostname=None, suppress_ragged_eofs=True, server_side=False):
             self.incoming = ssl.MemoryBIO()
             self.outgoing = ssl.MemoryBIO()
index fc18ead3a94b0ee3e65506868ace5c0c502527a9..e287e04bc1964ca1670a06a3fa7d56b1fb9b4367 100644 (file)
@@ -1,4 +1,5 @@
 # flake8: noqa: F401
+# isort: off
 
 from .youtube import (  # Youtube is moved to the top to improve performance
     YoutubeIE,
@@ -24,6 +25,8 @@
     YoutubeConsentRedirectIE,
 )
 
+# isort: on
+
 from .abc import (
     ABCIE,
     ABCIViewIE,
 )
 from .academicearth import AcademicEarthCourseIE
 from .acast import (
-    ACastIE,
     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 .adobetv import (
+    AdobeTVChannelIE,
     AdobeTVEmbedIE,
     AdobeTVIE,
     AdobeTVShowIE,
-    AdobeTVChannelIE,
     AdobeTVVideoIE,
 )
 from .adultswim import AdultSwimIE
 from .aenetworks import (
-    AENetworksIE,
     AENetworksCollectionIE,
+    AENetworksIE,
     AENetworksShowIE,
-    HistoryTopicIE,
-    HistoryPlayerIE,
     BiographyIE,
+    HistoryPlayerIE,
+    HistoryTopicIE,
 )
 from .aeonco import AeonCoIE
 from .afreecatv import (
 )
 from .airtv import AirTVIE
 from .aitube import AitubeKZVideoIE
+from .aliexpress import AliExpressLiveIE
 from .aljazeera import AlJazeeraIE
+from .allocine import AllocineIE
 from .allstar import (
     AllstarIE,
     AllstarProfileIE,
 )
 from .alphaporno import AlphaPornoIE
+from .alsace20tv import (
+    Alsace20TVEmbedIE,
+    Alsace20TVIE,
+)
 from .altcensored import (
-    AltCensoredIE,
     AltCensoredChannelIE,
+    AltCensoredIE,
 )
 from .alura import (
+    AluraCourseIE,
     AluraIE,
-    AluraCourseIE
 )
 from .amadeustv import AmadeusTVIE
 from .amara import AmaraIE
-from .amcnetworks import AMCNetworksIE
 from .amazon import (
-    AmazonStoreIE,
     AmazonReviewsIE,
+    AmazonStoreIE,
 )
 from .amazonminitv import (
     AmazonMiniTVIE,
     AmazonMiniTVSeasonIE,
     AmazonMiniTVSeriesIE,
 )
+from .amcnetworks import AMCNetworksIE
 from .americastestkitchen import (
     AmericasTestKitchenIE,
     AmericasTestKitchenSeasonIE,
 )
 from .anchorfm import AnchorFMEpisodeIE
 from .angel import AngelIE
+from .antenna import (
+    Ant1NewsGrArticleIE,
+    Ant1NewsGrEmbedIE,
+    AntennaGrWatchIE,
+)
 from .anvato import AnvatoIE
 from .aol import AolIE
-from .allocine import AllocineIE
-from .aliexpress import AliExpressLiveIE
-from .alsace20tv import (
-    Alsace20TVIE,
-    Alsace20TVEmbedIE,
-)
 from .apa import APAIE
 from .aparat import AparatIE
 from .appleconnect import AppleConnectIE
+from .applepodcasts import ApplePodcastsIE
 from .appletrailers import (
     AppleTrailersIE,
     AppleTrailersSectionIE,
 )
-from .applepodcasts import ApplePodcastsIE
 from .archiveorg import (
     ArchiveOrgIE,
     YoutubeWebArchiveIE,
 )
 from .arcpublishing import ArcPublishingIE
-from .arkena import ArkenaIE
 from .ard import (
+    ARDIE,
     ARDBetaMediathekIE,
     ARDMediathekCollectionIE,
-    ARDIE,
 )
+from .arkena import ArkenaIE
+from .arnes import ArnesIE
 from .art19 import (
     Art19IE,
     Art19ShowIE,
 )
 from .arte import (
-    ArteTVIE,
+    ArteTVCategoryIE,
     ArteTVEmbedIE,
+    ArteTVIE,
     ArteTVPlaylistIE,
-    ArteTVCategoryIE,
 )
-from .arnes import ArnesIE
-from .asobichannel import AsobiChannelIE, AsobiChannelTagURLIE
+from .asobichannel import (
+    AsobiChannelIE,
+    AsobiChannelTagURLIE,
+)
 from .asobistage import AsobiStageIE
 from .atresplayer import AtresPlayerIE
 from .atscaleconf import AtScaleConfEventIE
     AudiodraftCustomIE,
     AudiodraftGenericIE,
 )
-from .audiomack import AudiomackIE, AudiomackAlbumIE
+from .audiomack import (
+    AudiomackAlbumIE,
+    AudiomackIE,
+)
 from .audius import (
     AudiusIE,
-    AudiusTrackIE,
     AudiusPlaylistIE,
     AudiusProfileIE,
+    AudiusTrackIE,
 )
 from .awaan import (
     AWAANIE,
-    AWAANVideoIE,
     AWAANLiveIE,
     AWAANSeasonIE,
+    AWAANVideoIE,
 )
 from .axs import AxsIE
 from .azmedien import AZMedienIE
 from .baidu import BaiduVideoIE
 from .banbye import (
-    BanByeIE,
     BanByeChannelIE,
+    BanByeIE,
 )
 from .bandaichannel import BandaiChannelIE
 from .bandcamp import (
-    BandcampIE,
     BandcampAlbumIE,
-    BandcampWeeklyIE,
+    BandcampIE,
     BandcampUserIE,
+    BandcampWeeklyIE,
 )
 from .bannedvideo import BannedVideoIE
 from .bbc import (
-    BBCCoUkIE,
+    BBCIE,
     BBCCoUkArticleIE,
+    BBCCoUkIE,
     BBCCoUkIPlayerEpisodesIE,
     BBCCoUkIPlayerGroupIE,
     BBCCoUkPlaylistIE,
-    BBCIE,
 )
-from .beeg import BeegIE
-from .behindkink import BehindKinkIE
-from .bellmedia import BellMediaIE
 from .beatbump import (
-    BeatBumpVideoIE,
     BeatBumpPlaylistIE,
+    BeatBumpVideoIE,
 )
 from .beatport import BeatportIE
+from .beeg import BeegIE
+from .behindkink import BehindKinkIE
+from .bellmedia import BellMediaIE
 from .berufetv import BerufeTVIE
 from .bet import BetIE
 from .bfi import BFIPlayerIE
 from .bfmtv import (
     BFMTVIE,
-    BFMTVLiveIE,
     BFMTVArticleIE,
+    BFMTVLiveIE,
 )
 from .bibeltv import (
     BibelTVLiveIE,
 from .bigo import BigoIE
 from .bild import BildIE
 from .bilibili import (
-    BiliBiliIE,
+    BilibiliAudioAlbumIE,
+    BilibiliAudioIE,
     BiliBiliBangumiIE,
-    BiliBiliBangumiSeasonIE,
     BiliBiliBangumiMediaIE,
+    BiliBiliBangumiSeasonIE,
+    BilibiliCategoryIE,
     BilibiliCheeseIE,
     BilibiliCheeseSeasonIE,
-    BiliBiliSearchIE,
-    BilibiliCategoryIE,
-    BilibiliAudioIE,
-    BilibiliAudioAlbumIE,
-    BiliBiliPlayerIE,
-    BilibiliSpaceVideoIE,
-    BilibiliSpaceAudioIE,
     BilibiliCollectionListIE,
-    BilibiliSeriesListIE,
     BilibiliFavoritesListIE,
-    BilibiliWatchlaterIE,
+    BiliBiliIE,
+    BiliBiliPlayerIE,
     BilibiliPlaylistIE,
+    BiliBiliSearchIE,
+    BilibiliSeriesListIE,
+    BilibiliSpaceAudioIE,
+    BilibiliSpaceVideoIE,
+    BilibiliWatchlaterIE,
     BiliIntlIE,
     BiliIntlSeriesIE,
     BiliLiveIE,
 )
 from .biobiochiletv import BioBioChileTVIE
 from .bitchute import (
-    BitChuteIE,
     BitChuteChannelIE,
+    BitChuteIE,
 )
 from .blackboardcollaborate import BlackboardCollaborateIE
 from .bleacherreport import (
-    BleacherReportIE,
     BleacherReportCMSIE,
+    BleacherReportIE,
 )
 from .blerp import BlerpIE
 from .blogger import BloggerIE
 from .boxcast import BoxCastVideoIE
 from .bpb import BpbIE
 from .br import BRIE
-from .bravotv import BravoTVIE
 from .brainpop import (
-    BrainPOPIE,
-    BrainPOPJrIE,
     BrainPOPELLIE,
     BrainPOPEspIE,
     BrainPOPFrIE,
+    BrainPOPIE,
     BrainPOPIlIE,
+    BrainPOPJrIE,
 )
+from .bravotv import BravoTVIE
 from .breitbart import BreitBartIE
 from .brightcove import (
     BrightcoveLegacyIE,
     BrightcoveNewIE,
 )
 from .brilliantpala import (
-    BrilliantpalaElearnIE,
     BrilliantpalaClassesIE,
+    BrilliantpalaElearnIE,
 )
-from .businessinsider import BusinessInsiderIE
 from .bundesliga import BundesligaIE
 from .bundestag import BundestagIE
+from .businessinsider import BusinessInsiderIE
 from .buzzfeed import BuzzFeedIE
 from .byutv import BYUtvIE
 from .c56 import C56IE
 from .caltrans import CaltransIE
 from .cam4 import CAM4IE
 from .camdemy import (
+    CamdemyFolderIE,
     CamdemyIE,
-    CamdemyFolderIE
 )
 from .camfm import (
     CamFMEpisodeIE,
-    CamFMShowIE
+    CamFMShowIE,
 )
 from .cammodels import CamModelsIE
 from .camsoda import CamsodaIE
 from .camtasia import CamtasiaEmbedIE
 from .canal1 import Canal1IE
 from .canalalpha import CanalAlphaIE
-from .canalplus import CanalplusIE
 from .canalc2 import Canalc2IE
+from .canalplus import CanalplusIE
 from .caracoltv import CaracolTvPlayIE
 from .cartoonnetwork import CartoonNetworkIE
 from .cbc import (
     CBCIE,
-    CBCPlayerIE,
-    CBCPlayerPlaylistIE,
     CBCGemIE,
-    CBCGemPlaylistIE,
     CBCGemLiveIE,
+    CBCGemPlaylistIE,
+    CBCPlayerIE,
+    CBCPlayerPlaylistIE,
 )
 from .cbs import (
     CBSIE,
     ParamountPressExpressIE,
 )
 from .cbsnews import (
-    CBSNewsEmbedIE,
-    CBSNewsIE,
-    CBSLocalIE,
     CBSLocalArticleIE,
+    CBSLocalIE,
     CBSLocalLiveIE,
+    CBSNewsEmbedIE,
+    CBSNewsIE,
     CBSNewsLiveIE,
     CBSNewsLiveVideoIE,
 )
 from .cinemax import CinemaxIE
 from .cinetecamilano import CinetecaMilanoIE
 from .cineverse import (
-    CineverseIE,
     CineverseDetailsIE,
+    CineverseIE,
 )
 from .ciscolive import (
-    CiscoLiveSessionIE,
     CiscoLiveSearchIE,
+    CiscoLiveSessionIE,
 )
 from .ciscowebex import CiscoWebexIE
 from .cjsw import CJSWIE
 from .clubic import ClubicIE
 from .clyp import ClypIE
 from .cmt import CMTIE
-from .cnbc import (
-    CNBCVideoIE,
-)
+from .cnbc import CNBCVideoIE
 from .cnn import (
     CNNIE,
-    CNNBlogsIE,
     CNNArticleIE,
+    CNNBlogsIE,
     CNNIndonesiaIE,
 )
-from .coub import CoubIE
 from .comedycentral import (
     ComedyCentralIE,
     ComedyCentralTVIE,
 from .condenast import CondeNastIE
 from .contv import CONtvIE
 from .corus import CorusIE
+from .coub import CoubIE
+from .cozytv import CozyTVIE
 from .cpac import (
     CPACIE,
     CPACPlaylistIE,
 )
-from .cozytv import CozyTVIE
 from .cracked import CrackedIE
 from .crackle import CrackleIE
 from .craftsy import CraftsyIE
 from .crooksandliars import CrooksAndLiarsIE
 from .crowdbunker import (
-    CrowdBunkerIE,
     CrowdBunkerChannelIE,
+    CrowdBunkerIE,
 )
 from .crtvg import CrtvgIE
 from .crunchyroll import (
+    CrunchyrollArtistIE,
     CrunchyrollBetaIE,
     CrunchyrollBetaShowIE,
     CrunchyrollMusicIE,
-    CrunchyrollArtistIE,
 )
-from .cspan import CSpanIE, CSpanCongressIE
+from .cspan import (
+    CSpanCongressIE,
+    CSpanIE,
+)
 from .ctsnews import CtsNewsIE
 from .ctv import CTVIE
 from .ctvnews import CTVNewsIE
 from .cultureunplugged import CultureUnpluggedIE
 from .curiositystream import (
-    CuriosityStreamIE,
     CuriosityStreamCollectionsIE,
+    CuriosityStreamIE,
     CuriosityStreamSeriesIE,
 )
 from .cwtv import CWTVIE
 from .cybrary import (
+    CybraryCourseIE,
     CybraryIE,
-    CybraryCourseIE
 )
 from .dacast import (
-    DacastVODIE,
     DacastPlaylistIE,
+    DacastVODIE,
 )
 from .dailymail import DailyMailIE
 from .dailymotion import (
     DangalPlaySeasonIE,
 )
 from .daum import (
-    DaumIE,
     DaumClipIE,
+    DaumIE,
     DaumPlaylistIE,
     DaumUserIE,
 )
 from .dbtv import DBTVIE
 from .dctp import DctpTvIE
 from .deezer import (
-    DeezerPlaylistIE,
     DeezerAlbumIE,
+    DeezerPlaylistIE,
 )
 from .democracynow import DemocracynowIE
 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 (
     DLFIE,
     DLFCorpusIE,
 )
-from .dfb import DFBIE
-from .dhm import DHMIE
+from .dlive import (
+    DLiveStreamIE,
+    DLiveVODIE,
+)
 from .douyutv import (
     DouyuShowIE,
     DouyuTVIE,
 )
 from .dplay import (
-    DPlayIE,
-    DiscoveryPlusIE,
-    HGTVDeIE,
-    GoDiscoveryIE,
-    TravelChannelIE,
+    TLCIE,
+    AmHistoryChannelIE,
+    AnimalPlanetIE,
     CookingChannelIE,
-    HGTVUsaIE,
-    FoodNetworkIE,
-    InvestigationDiscoveryIE,
     DestinationAmericaIE,
-    AmHistoryChannelIE,
-    ScienceChannelIE,
-    DIYNetworkIE,
     DiscoveryLifeIE,
-    AnimalPlanetIE,
-    TLCIE,
-    MotorTrendIE,
-    MotorTrendOnDemandIE,
-    DiscoveryPlusIndiaIE,
     DiscoveryNetworksDeIE,
+    DiscoveryPlusIE,
+    DiscoveryPlusIndiaIE,
+    DiscoveryPlusIndiaShowIE,
     DiscoveryPlusItalyIE,
     DiscoveryPlusItalyShowIE,
-    DiscoveryPlusIndiaShowIE,
+    DIYNetworkIE,
+    DPlayIE,
+    FoodNetworkIE,
     GlobalCyclingNetworkPlusIE,
+    GoDiscoveryIE,
+    HGTVDeIE,
+    HGTVUsaIE,
+    InvestigationDiscoveryIE,
+    MotorTrendIE,
+    MotorTrendOnDemandIE,
+    ScienceChannelIE,
+    TravelChannelIE,
 )
-from .dreisat import DreiSatIE
 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 .drtv import (
     DRTVIE,
     DRTVSeriesIE,
 )
 from .dtube import DTubeIE
-from .dvtv import DVTVIE
 from .duboku import (
     DubokuIE,
-    DubokuPlaylistIE
+    DubokuPlaylistIE,
 )
 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 .dvtv import DVTVIE
 from .dw import (
     DWIE,
     DWArticleIE,
 )
-from .eagleplatform import EaglePlatformIE, ClipYouEmbedIE
+from .eagleplatform import (
+    ClipYouEmbedIE,
+    EaglePlatformIE,
+)
 from .ebaumsworld import EbaumsWorldIE
 from .ebay import EbayIE
 from .egghead import (
 from .eporner import EpornerIE
 from .erocast import ErocastIE
 from .eroprofile import (
-    EroProfileIE,
     EroProfileAlbumIE,
+    EroProfileIE,
 )
 from .err import ERRJupiterIE
 from .ertgr import (
 )
 from .espn import (
     ESPNIE,
-    WatchESPNIE,
     ESPNArticleIE,
-    FiveThirtyEightIE,
     ESPNCricInfoIE,
+    FiveThirtyEightIE,
+    WatchESPNIE,
 )
 from .ettutv import EttuTvIE
-from .europa import EuropaIE, EuroParlWebstreamIE
+from .europa import (
+    EuropaIE,
+    EuroParlWebstreamIE,
+)
 from .europeantour import EuropeanTourIE
 from .eurosport import EurosportIE
 from .euscreen import EUScreenIE
 from .expressen import ExpressenIE
 from .eyedotv import EyedoTVIE
 from .facebook import (
+    FacebookAdsIE,
     FacebookIE,
     FacebookPluginsVideoIE,
     FacebookRedirectURLIE,
     FacebookReelIE,
-    FacebookAdsIE,
 )
-from .fathom import FathomIE
 from .fancode import (
+    FancodeLiveIE,
     FancodeVodIE,
-    FancodeLiveIE
 )
-
+from .fathom import FathomIE
 from .faz import FazIE
 from .fc2 import (
     FC2IE,
 from .fczenit import FczenitIE
 from .fifa import FifaIE
 from .filmon import (
-    FilmOnIE,
     FilmOnChannelIE,
+    FilmOnIE,
 )
 from .filmweb import FilmwebIE
 from .firsttv import FirstTVIE
 from .flextv import FlexTVIE
 from .flickr import FlickrIE
 from .floatplane import (
-    FloatplaneIE,
     FloatplaneChannelIE,
+    FloatplaneIE,
 )
 from .folketinget import FolketingetIE
 from .footyroom import FootyRoomIE
 from .formula1 import Formula1IE
 from .fourtube import (
     FourTubeIE,
-    PornTubeIE,
-    PornerBrosIE,
     FuxIE,
+    PornerBrosIE,
+    PornTubeIE,
 )
 from .fox import FOXIE
 from .fox9 import (
     FOX9NewsIE,
 )
 from .foxnews import (
-    FoxNewsIE,
     FoxNewsArticleIE,
+    FoxNewsIE,
     FoxNewsVideoIE,
 )
 from .foxsports import FoxSportsIE
 from .franceinter import FranceInterIE
 from .francetv import (
     FranceTVIE,
-    FranceTVSiteIE,
     FranceTVInfoIE,
+    FranceTVSiteIE,
 )
 from .freesound import FreesoundIE
 from .freespeech import FreespeechIE
-from .frontendmasters import (
-    FrontendMastersIE,
-    FrontendMastersLessonIE,
-    FrontendMastersCourseIE
-)
 from .freetv import (
     FreeTvIE,
     FreeTvMoviesIE,
 )
+from .frontendmasters import (
+    FrontendMastersCourseIE,
+    FrontendMastersIE,
+    FrontendMastersLessonIE,
+)
 from .fujitv import FujiTVFODPlus7IE
 from .funimation import (
     FunimationIE,
 from .funker530 import Funker530IE
 from .fuyintv import FuyinTVIE
 from .gab import (
-    GabTVIE,
     GabIE,
+    GabTVIE,
 )
 from .gaia import GaiaIE
 from .gamejolt import (
-    GameJoltIE,
-    GameJoltUserIE,
+    GameJoltCommunityIE,
     GameJoltGameIE,
     GameJoltGameSoundtrackIE,
-    GameJoltCommunityIE,
+    GameJoltIE,
     GameJoltSearchIE,
+    GameJoltUserIE,
 )
 from .gamespot import GameSpotIE
 from .gamestar import GameStarIE
 from .gdcvault import GDCVaultIE
 from .gedidigital import GediDigitalIE
 from .generic import GenericIE
+from .genericembeds import (
+    HTML5MediaEmbedIE,
+    QuotedHTMLIE,
+)
 from .genius import (
     GeniusIE,
     GeniusLyricsIE,
 )
 from .getcourseru import (
+    GetCourseRuIE,
     GetCourseRuPlayerIE,
-    GetCourseRuIE
 )
 from .gettr import (
     GettrIE,
 from .giantbomb import GiantBombIE
 from .glide import GlideIE
 from .globalplayer import (
+    GlobalPlayerAudioEpisodeIE,
+    GlobalPlayerAudioIE,
     GlobalPlayerLiveIE,
     GlobalPlayerLivePlaylistIE,
-    GlobalPlayerAudioIE,
-    GlobalPlayerAudioEpisodeIE,
-    GlobalPlayerVideoIE
+    GlobalPlayerVideoIE,
 )
 from .globo import (
-    GloboIE,
     GloboArticleIE,
+    GloboIE,
+)
+from .glomex import (
+    GlomexEmbedIE,
+    GlomexIE,
 )
 from .gmanetwork import GMANetworkVideoIE
 from .go import GoIE
-from .godtube import GodTubeIE
 from .godresource import GodResourceIE
+from .godtube import GodTubeIE
 from .gofile import GofileIE
 from .golem import GolemIE
 from .goodgame import GoodGameIE
 from .googledrive import (
-    GoogleDriveIE,
     GoogleDriveFolderIE,
+    GoogleDriveIE,
 )
 from .googlepodcasts import (
-    GooglePodcastsIE,
     GooglePodcastsFeedIE,
+    GooglePodcastsIE,
 )
 from .googlesearch import GoogleSearchIE
-from .gopro import GoProIE
 from .goplay import GoPlayIE
+from .gopro import GoProIE
 from .goshgay import GoshgayIE
 from .gotostage import GoToStageIE
 from .gputechconf import GPUTechConfIE
 from .gronkh import (
-    GronkhIE,
     GronkhFeedIE,
-    GronkhVodsIE
+    GronkhIE,
+    GronkhVodsIE,
 )
 from .groupon import GrouponIE
 from .harpodeon import HarpodeonIE
 from .heise import HeiseIE
 from .hellporno import HellPornoIE
 from .hgtv import HGTVComShowIE
-from .hketv import HKETVIE
 from .hidive import HiDiveIE
 from .historicfilms import HistoricFilmsIE
 from .hitrecord import HitRecordIE
+from .hketv import HKETVIE
 from .hollywoodreporter import (
     HollywoodReporterIE,
     HollywoodReporterPlaylistIE,
 from .hotnewhiphop import HotNewHipHopIE
 from .hotstar import (
     HotStarIE,
-    HotStarPrefixIE,
     HotStarPlaylistIE,
+    HotStarPrefixIE,
     HotStarSeasonIE,
     HotStarSeriesIE,
 )
     HRTiPlaylistIE,
 )
 from .hse import (
-    HSEShowIE,
     HSEProductIE,
-)
-from .genericembeds import (
-    HTML5MediaEmbedIE,
-    QuotedHTMLIE,
+    HSEShowIE,
 )
 from .huajiao import HuajiaoIE
-from .huya import HuyaLiveIE
 from .huffpost import HuffPostIE
 from .hungama import (
+    HungamaAlbumPlaylistIE,
     HungamaIE,
     HungamaSongIE,
-    HungamaAlbumPlaylistIE,
 )
+from .huya import HuyaLiveIE
 from .hypem import HypemIE
 from .hypergryph import MonsterSirenHypergryphMusicIE
 from .hytale import HytaleIE
 from .icareus import IcareusIE
 from .ichinanalive import (
-    IchinanaLiveIE,
     IchinanaLiveClipIE,
+    IchinanaLiveIE,
 )
 from .idolplus import IdolPlusIE
 from .ign import (
     IGNIE,
-    IGNVideoIE,
     IGNArticleIE,
+    IGNVideoIE,
 )
 from .iheart import (
     IHeartRadioIE,
 from .iltalehti import IltalehtiIE
 from .imdb import (
     ImdbIE,
-    ImdbListIE
+    ImdbListIE,
 )
 from .imgur import (
-    ImgurIE,
     ImgurAlbumIE,
     ImgurGalleryIE,
+    ImgurIE,
 )
 from .ina import InaIE
 from .inc import IncIE
 from .instagram import (
     InstagramIE,
     InstagramIOSIE,
-    InstagramUserIE,
-    InstagramTagIE,
     InstagramStoryIE,
+    InstagramTagIE,
+    InstagramUserIE,
 )
 from .internazionale import InternazionaleIE
 from .internetvideoarchive import InternetVideoArchiveIE
 from .iprima import (
+    IPrimaCNNIE,
     IPrimaIE,
-    IPrimaCNNIE
 )
 from .iqiyi import (
-    IqiyiIE,
+    IqAlbumIE,
     IqIE,
-    IqAlbumIE
+    IqiyiIE,
 )
 from .islamchannel import (
     IslamChannelIE,
 )
 from .israelnationalnews import IsraelNationalNewsIE
 from .itprotv import (
+    ITProTVCourseIE,
     ITProTVIE,
-    ITProTVCourseIE
 )
 from .itv import (
-    ITVIE,
     ITVBTCCIE,
+    ITVIE,
 )
 from .ivi import (
+    IviCompilationIE,
     IviIE,
-    IviCompilationIE
 )
 from .ivideon import IvideonIE
 from .iwara import (
 from .ixigua import IxiguaIE
 from .izlesene import IzleseneIE
 from .jamendo import (
-    JamendoIE,
     JamendoAlbumIE,
+    JamendoIE,
 )
 from .japandiet import (
+    SangiinIE,
+    SangiinInstructionIE,
     ShugiinItvLiveIE,
     ShugiinItvLiveRoomIE,
     ShugiinItvVodIE,
-    SangiinInstructionIE,
-    SangiinIE,
 )
 from .jeuxvideo import JeuxVideoIE
 from .jiocinema import (
     JioCinemaSeriesIE,
 )
 from .jiosaavn import (
-    JioSaavnSongIE,
     JioSaavnAlbumIE,
     JioSaavnPlaylistIE,
+    JioSaavnSongIE,
 )
-from .jove import JoveIE
 from .joj import JojIE
 from .joqrag import JoqrAgIE
+from .jove import JoveIE
 from .jstream import JStreamIE
 from .jtbc import (
     JTBCIE,
 from .kommunetv import KommunetvIE
 from .kompas import KompasVideoIE
 from .koo import KooIE
-from .kth import KTHIE
 from .krasview import KrasViewIE
+from .kth import KTHIE
 from .ku6 import Ku6IE
 from .kukululive import KukuluLiveIE
 from .kuwo import (
-    KuwoIE,
     KuwoAlbumIE,
-    KuwoChartIE,
-    KuwoSingerIE,
     KuwoCategoryIE,
+    KuwoChartIE,
+    KuwoIE,
     KuwoMvIE,
+    KuwoSingerIE,
 )
 from .la7 import (
     LA7IE,
 )
 from .lci import LCIIE
 from .lcp import (
-    LcpPlayIE,
     LcpIE,
+    LcpPlayIE,
 )
 from .lecture2go import Lecture2GoIE
 from .lecturio import (
-    LecturioIE,
     LecturioCourseIE,
     LecturioDeCourseIE,
+    LecturioIE,
 )
 from .leeco import (
     LeIE,
 from .libraryofcongress import LibraryOfCongressIE
 from .libsyn import LibsynIE
 from .lifenews import (
-    LifeNewsIE,
     LifeEmbedIE,
+    LifeNewsIE,
 )
 from .likee import (
     LikeeIE,
-    LikeeUserIE
+    LikeeUserIE,
 )
 from .limelight import (
-    LimelightMediaIE,
     LimelightChannelIE,
     LimelightChannelListIE,
+    LimelightMediaIE,
 )
 from .linkedin import (
     LinkedInIE,
-    LinkedInLearningIE,
     LinkedInLearningCourseIE,
+    LinkedInLearningIE,
 )
 from .liputan6 import Liputan6IE
 from .listennotes import ListenNotesIE
     LnkIE,
 )
 from .loom import (
-    LoomIE,
     LoomFolderIE,
+    LoomIE,
 )
 from .lovehomeporn import LoveHomePornIE
 from .lrt import (
     LRTVODIE,
-    LRTStreamIE
+    LRTStreamIE,
 )
 from .lsm import (
     LSMLREmbedIE,
     LSMLTVEmbedIE,
-    LSMReplayIE
-)
-from .lumni import (
-    LumniIE
+    LSMReplayIE,
 )
+from .lumni import LumniIE
 from .lynda import (
+    LyndaCourseIE,
     LyndaIE,
-    LyndaCourseIE
 )
 from .maariv import MaarivIE
 from .magellantv import MagellanTVIE
 )
 from .mainstreaming import MainStreamingIE
 from .mangomolo import (
-    MangomoloVideoIE,
     MangomoloLiveIE,
+    MangomoloVideoIE,
 )
 from .manoto import (
     ManotoTVIE,
-    ManotoTVShowIE,
     ManotoTVLiveIE,
+    ManotoTVShowIE,
 )
 from .manyvids import ManyVidsIE
 from .maoritv import MaoriTVIE
 from .medaltv import MedalTVIE
 from .mediaite import MediaiteIE
 from .mediaklikk import MediaKlikkIE
+from .medialaan import MedialaanIE
 from .mediaset import (
     MediasetIE,
     MediasetShowIE,
 )
 from .mediasite import (
-    MediasiteIE,
     MediasiteCatalogIE,
+    MediasiteIE,
     MediasiteNamedCatalogIE,
 )
 from .mediastream import (
 from .mediaworksnz import MediaWorksNZVODIE
 from .medici import MediciIE
 from .megaphone import MegaphoneIE
+from .megatvcom import (
+    MegaTVComEmbedIE,
+    MegaTVComIE,
+)
 from .meipai import MeipaiIE
 from .melonvod import MelonVODIE
 from .metacritic import MetacriticIE
 from .mgtv import MGTVIE
+from .microsoftembed import MicrosoftEmbedIE
 from .microsoftstream import MicrosoftStreamIE
 from .microsoftvirtualacademy import (
-    MicrosoftVirtualAcademyIE,
     MicrosoftVirtualAcademyCourseIE,
+    MicrosoftVirtualAcademyIE,
 )
-from .microsoftembed import MicrosoftEmbedIE
 from .mildom import (
-    MildomIE,
-    MildomVodIE,
     MildomClipIE,
+    MildomIE,
     MildomUserVodIE,
+    MildomVodIE,
 )
 from .minds import (
-    MindsIE,
     MindsChannelIE,
     MindsGroupIE,
+    MindsIE,
 )
 from .minoto import MinotoIE
 from .mirrativ import (
     MirrativUserIE,
 )
 from .mirrorcouk import MirrorCoUKIE
-from .mit import TechTVMITIE, OCWMITIE
+from .mit import (
+    OCWMITIE,
+    TechTVMITIE,
+)
 from .mitele import MiTeleIE
 from .mixch import (
-    MixchIE,
     MixchArchiveIE,
+    MixchIE,
 )
 from .mixcloud import (
     MixcloudIE,
-    MixcloudUserIE,
     MixcloudPlaylistIE,
+    MixcloudUserIE,
 )
 from .mlb import (
     MLBIE,
-    MLBVideoIE,
     MLBTVIE,
     MLBArticleIE,
+    MLBVideoIE,
 )
 from .mlssoccer import MLSSoccerIE
 from .mocha import MochaVideoIE
 from .mojvideo import MojvideoIE
 from .monstercat import MonstercatIE
 from .motherless import (
-    MotherlessIE,
-    MotherlessGroupIE,
     MotherlessGalleryIE,
+    MotherlessGroupIE,
+    MotherlessIE,
     MotherlessUploaderIE,
 )
 from .motorsport import MotorsportIE
 from .movingimage import MovingImageIE
 from .msn import MSNIE
 from .mtv import (
-    MTVIE,
-    MTVVideoIE,
-    MTVServicesEmbeddedIE,
     MTVDEIE,
-    MTVJapanIE,
+    MTVIE,
     MTVItaliaIE,
     MTVItaliaProgrammaIE,
+    MTVJapanIE,
+    MTVServicesEmbeddedIE,
+    MTVVideoIE,
 )
 from .muenchentv import MuenchenTVIE
-from .murrtube import MurrtubeIE, MurrtubeUserIE
+from .murrtube import (
+    MurrtubeIE,
+    MurrtubeUserIE,
+)
 from .museai import MuseAIIE
 from .musescore import MuseScoreIE
 from .musicdex import (
-    MusicdexSongIE,
     MusicdexAlbumIE,
     MusicdexArtistIE,
     MusicdexPlaylistIE,
+    MusicdexSongIE,
 )
 from .mx3 import (
     Mx3IE,
     MxplayerIE,
     MxplayerShowIE,
 )
-from .myspace import MySpaceIE, MySpaceAlbumIE
+from .myspace import (
+    MySpaceAlbumIE,
+    MySpaceIE,
+)
 from .myspass import MySpassIE
 from .myvideoge import MyVideoGeIE
 from .myvidster import MyVidsterIE
     NateProgramIE,
 )
 from .nationalgeographic import (
-    NationalGeographicVideoIE,
     NationalGeographicTVIE,
+    NationalGeographicVideoIE,
 )
 from .naver import (
     NaverIE,
     NaverNowIE,
 )
 from .nba import (
-    NBAWatchEmbedIE,
-    NBAWatchIE,
-    NBAWatchCollectionIE,
-    NBAEmbedIE,
     NBAIE,
     NBAChannelIE,
+    NBAEmbedIE,
+    NBAWatchCollectionIE,
+    NBAWatchEmbedIE,
+    NBAWatchIE,
 )
 from .nbc import (
     NBCIE,
 )
 from .ndr import (
     NDRIE,
-    NJoyIE,
     NDREmbedBaseIE,
     NDREmbedIE,
     NJoyEmbedIE,
+    NJoyIE,
 )
 from .ndtv import NDTVIE
 from .nebula import (
-    NebulaIE,
+    NebulaChannelIE,
     NebulaClassIE,
+    NebulaIE,
     NebulaSubscriptionsIE,
-    NebulaChannelIE,
 )
 from .nekohacker import NekoHackerIE
 from .nerdcubed import NerdCubedFeedIE
-from .netzkino import NetzkinoIE
 from .neteasemusic import (
-    NetEaseMusicIE,
     NetEaseMusicAlbumIE,
-    NetEaseMusicSingerIE,
+    NetEaseMusicDjRadioIE,
+    NetEaseMusicIE,
     NetEaseMusicListIE,
     NetEaseMusicMvIE,
     NetEaseMusicProgramIE,
-    NetEaseMusicDjRadioIE,
+    NetEaseMusicSingerIE,
 )
 from .netverse import (
     NetverseIE,
     NetversePlaylistIE,
     NetverseSearchIE,
 )
+from .netzkino import NetzkinoIE
 from .newgrounds import (
     NewgroundsIE,
     NewgroundsPlaylistIE,
 from .newspicks import NewsPicksIE
 from .newsy import NewsyIE
 from .nextmedia import (
-    NextMediaIE,
-    NextMediaActionNewsIE,
     AppleDailyIE,
+    NextMediaActionNewsIE,
+    NextMediaIE,
     NextTVIE,
 )
 from .nexx import (
-    NexxIE,
     NexxEmbedIE,
+    NexxIE,
 )
 from .nfb import (
     NFBIE,
     NFLPlusReplayIE,
 )
 from .nhk import (
-    NhkVodIE,
-    NhkVodProgramIE,
     NhkForSchoolBangumiIE,
-    NhkForSchoolSubjectIE,
     NhkForSchoolProgramListIE,
+    NhkForSchoolSubjectIE,
     NhkRadioNewsPageIE,
     NhkRadiruIE,
     NhkRadiruLiveIE,
+    NhkVodIE,
+    NhkVodProgramIE,
 )
 from .nhl import NHLIE
 from .nick import (
-    NickIE,
     NickBrIE,
     NickDeIE,
+    NickIE,
     NickRuIE,
 )
 from .niconico import (
+    NiconicoHistoryIE,
     NiconicoIE,
+    NiconicoLiveIE,
     NiconicoPlaylistIE,
-    NiconicoUserIE,
     NiconicoSeriesIE,
-    NiconicoHistoryIE,
+    NiconicoUserIE,
     NicovideoSearchDateIE,
     NicovideoSearchIE,
     NicovideoSearchURLIE,
     NicovideoTagURLIE,
-    NiconicoLiveIE,
+)
+from .niconicochannelplus import (
+    NiconicoChannelPlusChannelLivesIE,
+    NiconicoChannelPlusChannelVideosIE,
+    NiconicoChannelPlusIE,
 )
 from .ninaprotocol import NinaProtocolIE
 from .ninecninemedia import (
-    NineCNineMediaIE,
     CPTwentyFourIE,
-)
-from .niconicochannelplus import (
-    NiconicoChannelPlusIE,
-    NiconicoChannelPlusChannelVideosIE,
-    NiconicoChannelPlusChannelLivesIE,
+    NineCNineMediaIE,
 )
 from .ninegag import NineGagIE
 from .ninenews import NineNewsIE
 )
 from .noz import NozIE
 from .npo import (
-    AndereTijdenIE,
     NPOIE,
+    VPROIE,
+    WNLIE,
+    AndereTijdenIE,
+    HetKlokhuisIE,
     NPOLiveIE,
-    NPORadioIE,
     NPORadioFragmentIE,
+    NPORadioIE,
     SchoolTVIE,
-    HetKlokhuisIE,
-    VPROIE,
-    WNLIE,
 )
 from .npr import NprIE
 from .nrk import (
     NRKIE,
+    NRKTVIE,
     NRKPlaylistIE,
+    NRKRadioPodkastIE,
     NRKSkoleIE,
-    NRKTVIE,
     NRKTVDirekteIE,
-    NRKRadioPodkastIE,
     NRKTVEpisodeIE,
     NRKTVEpisodesIE,
     NRKTVSeasonIE,
 from .ntvde import NTVDeIE
 from .ntvru import NTVRuIE
 from .nubilesporn import NubilesPornIE
-from .nytimes import (
-    NYTimesIE,
-    NYTimesArticleIE,
-    NYTimesCookingIE,
-    NYTimesCookingRecipeIE,
-)
 from .nuum import (
     NuumLiveIE,
-    NuumTabIE,
     NuumMediaIE,
+    NuumTabIE,
 )
 from .nuvid import NuvidIE
+from .nytimes import (
+    NYTimesArticleIE,
+    NYTimesCookingIE,
+    NYTimesCookingRecipeIE,
+    NYTimesIE,
+)
 from .nzherald import NZHeraldIE
 from .nzonscreen import NZOnScreenIE
 from .nzz import NZZIE
 from .odnoklassniki import OdnoklassnikiIE
 from .oftv import (
     OfTVIE,
-    OfTVPlaylistIE
+    OfTVPlaylistIE,
 )
 from .oktoberfesttv import OktoberfestTVIE
 from .olympics import OlympicsReplayIE
 from .onenewsnz import OneNewsNZIE
 from .oneplace import OnePlacePodcastIE
 from .onet import (
-    OnetIE,
     OnetChannelIE,
+    OnetIE,
     OnetMVPIE,
     OnetPlIE,
 )
     OpencastPlaylistIE,
 )
 from .openrec import (
-    OpenRecIE,
     OpenRecCaptureIE,
+    OpenRecIE,
     OpenRecMovieIE,
 )
 from .ora import OraTVIE
 from .orf import (
-    ORFFM4StoryIE,
+    ORFIPTVIE,
     ORFONIE,
-    ORFRadioIE,
+    ORFFM4StoryIE,
     ORFPodcastIE,
-    ORFIPTVIE,
+    ORFRadioIE,
 )
 from .outsidetv import OutsideTVIE
 from .owncloud import OwnCloudIE
 from .packtpub import (
-    PacktPubIE,
     PacktPubCourseIE,
+    PacktPubIE,
 )
 from .palcomp3 import (
-    PalcoMP3IE,
     PalcoMP3ArtistIE,
+    PalcoMP3IE,
     PalcoMP3VideoIE,
 )
 from .panopto import (
     PanoptoIE,
     PanoptoListIE,
-    PanoptoPlaylistIE
+    PanoptoPlaylistIE,
 )
 from .paramountplus import (
     ParamountPlusIE,
 from .parler import ParlerIE
 from .parlview import ParlviewIE
 from .patreon import (
+    PatreonCampaignIE,
     PatreonIE,
-    PatreonCampaignIE
 )
-from .pbs import PBSIE, PBSKidsIE
+from .pbs import (
+    PBSIE,
+    PBSKidsIE,
+)
 from .pearvideo import PearVideoIE
-from .peekvids import PeekVidsIE, PlayVidsIE
+from .peekvids import (
+    PeekVidsIE,
+    PlayVidsIE,
+)
 from .peertube import (
     PeerTubeIE,
     PeerTubePlaylistIE,
 from .peertv import PeerTVIE
 from .peloton import (
     PelotonIE,
-    PelotonLiveIE
+    PelotonLiveIE,
 )
 from .performgroup import PerformGroupIE
 from .periscope import (
 from .piksel import PikselIE
 from .pinkbike import PinkbikeIE
 from .pinterest import (
-    PinterestIE,
     PinterestCollectionIE,
+    PinterestIE,
 )
 from .pixivsketch import (
     PixivSketchIE,
 from .pladform import PladformIE
 from .planetmarathi import PlanetMarathiIE
 from .platzi import (
-    PlatziIE,
     PlatziCourseIE,
+    PlatziIE,
 )
 from .playplustv import PlayPlusTVIE
 from .playsuisse import PlaySuisseIE
 from .playtvak import PlaytvakIE
 from .playwire import PlaywireIE
-from .plutotv import PlutoTVIE
 from .pluralsight import (
-    PluralsightIE,
     PluralsightCourseIE,
+    PluralsightIE,
+)
+from .plutotv import PlutoTVIE
+from .podbayfm import (
+    PodbayFMChannelIE,
+    PodbayFMIE,
 )
-from .podbayfm import PodbayFMIE, PodbayFMChannelIE
 from .podchaser import PodchaserIE
 from .podomatic import PodomaticIE
 from .pokemon import (
     PokemonWatchIE,
 )
 from .pokergo import (
-    PokerGoIE,
     PokerGoCollectionIE,
+    PokerGoIE,
 )
 from .polsatgo import PolsatGoIE
 from .polskieradio import (
-    PolskieRadioIE,
-    PolskieRadioLegacyIE,
     PolskieRadioAuditionIE,
     PolskieRadioCategoryIE,
+    PolskieRadioIE,
+    PolskieRadioLegacyIE,
     PolskieRadioPlayerIE,
     PolskieRadioPodcastIE,
     PolskieRadioPodcastListIE,
 from .pornflip import PornFlipIE
 from .pornhub import (
     PornHubIE,
-    PornHubUserIE,
-    PornHubPlaylistIE,
     PornHubPagedVideoListIE,
+    PornHubPlaylistIE,
+    PornHubUserIE,
     PornHubUserVideosUploadIE,
 )
 from .pornotube import PornotubeIE
 from .pornovoisines import PornoVoisinesIE
 from .pornoxo import PornoXOIE
-from .puhutv import (
-    PuhuTVIE,
-    PuhuTVSerieIE,
-)
 from .pr0gramm import Pr0grammIE
-from .prankcast import PrankCastIE, PrankCastPostIE
+from .prankcast import (
+    PrankCastIE,
+    PrankCastPostIE,
+)
 from .premiershiprugby import PremiershipRugbyIE
 from .presstv import PressTVIE
 from .projectveritas import ProjectVeritasIE
 from .prosiebensat1 import ProSiebenSat1IE
 from .prx import (
-    PRXStoryIE,
-    PRXSeriesIE,
     PRXAccountIE,
+    PRXSeriesIE,
+    PRXSeriesSearchIE,
     PRXStoriesSearchIE,
-    PRXSeriesSearchIE
+    PRXStoryIE,
+)
+from .puhutv import (
+    PuhuTVIE,
+    PuhuTVSerieIE,
 )
 from .puls4 import Puls4IE
 from .pyvideo import PyvideoIE
 from .qdance import QDanceIE
 from .qingting import QingTingIE
 from .qqmusic import (
+    QQMusicAlbumIE,
     QQMusicIE,
+    QQMusicPlaylistIE,
     QQMusicSingerIE,
-    QQMusicAlbumIE,
     QQMusicToplistIE,
-    QQMusicPlaylistIE,
 )
 from .r7 import (
     R7IE,
     R7ArticleIE,
 )
-from .radiko import RadikoIE, RadikoRadioIE
+from .radiko import (
+    RadikoIE,
+    RadikoRadioIE,
+)
 from .radiocanada import (
-    RadioCanadaIE,
     RadioCanadaAudioVideoIE,
+    RadioCanadaIE,
 )
 from .radiocomercial import (
     RadioComercialIE,
     RadioComercialPlaylistIE,
 )
 from .radiode import RadioDeIE
-from .radiojavan import RadioJavanIE
 from .radiofrance import (
     FranceCultureIE,
     RadioFranceIE,
     RadioFranceProfileIE,
     RadioFranceProgramScheduleIE,
 )
-from .radiozet import RadioZetPodcastIE
+from .radiojavan import RadioJavanIE
 from .radiokapital import (
     RadioKapitalIE,
     RadioKapitalShowIE,
 )
+from .radiozet import RadioZetPodcastIE
 from .radlive import (
-    RadLiveIE,
     RadLiveChannelIE,
+    RadLiveIE,
     RadLiveSeasonIE,
 )
 from .rai import (
-    RaiIE,
     RaiCulturaIE,
+    RaiIE,
+    RaiNewsIE,
     RaiPlayIE,
     RaiPlayLiveIE,
     RaiPlayPlaylistIE,
     RaiPlaySoundIE,
     RaiPlaySoundLiveIE,
     RaiPlaySoundPlaylistIE,
-    RaiNewsIE,
     RaiSudtirolIE,
 )
 from .raywenderlich import (
-    RayWenderlichIE,
     RayWenderlichCourseIE,
+    RayWenderlichIE,
 )
 from .rbgtum import (
-    RbgTumIE,
     RbgTumCourseIE,
+    RbgTumIE,
     RbgTumNewCourseIE,
 )
 from .rcs import (
     RCTIPlusTVIE,
 )
 from .rds import RDSIE
-from .redbee import ParliamentLiveUKIE, RTBFIE
+from .redbee import (
+    RTBFIE,
+    ParliamentLiveUKIE,
+)
 from .redbulltv import (
-    RedBullTVIE,
     RedBullEmbedIE,
-    RedBullTVRrnContentIE,
     RedBullIE,
+    RedBullTVIE,
+    RedBullTVRrnContentIE,
 )
 from .reddit import RedditIE
 from .redge import RedCDNLivxIE
 from .rheinmaintv import RheinMainTVIE
 from .ridehome import RideHomeIE
 from .rinsefm import (
-    RinseFMIE,
     RinseFMArtistPlaylistIE,
+    RinseFMIE,
 )
 from .rmcdecouverte import RMCDecouverteIE
 from .rockstargames import RockstarGamesIE
 from .rokfin import (
-    RokfinIE,
-    RokfinStackIE,
     RokfinChannelIE,
+    RokfinIE,
     RokfinSearchIE,
+    RokfinStackIE,
+)
+from .roosterteeth import (
+    RoosterTeethIE,
+    RoosterTeethSeriesIE,
 )
-from .roosterteeth import RoosterTeethIE, RoosterTeethSeriesIE
 from .rottentomatoes import RottenTomatoesIE
 from .rozhlas import (
+    MujRozhlasIE,
     RozhlasIE,
     RozhlasVltavaIE,
-    MujRozhlasIE,
 )
-from .rte import RteIE, RteRadioIE
+from .rte import (
+    RteIE,
+    RteRadioIE,
+)
+from .rtl2 import RTL2IE
 from .rtlnl import (
-    RtlNlIE,
-    RTLLuTeleVODIE,
     RTLLuArticleIE,
     RTLLuLiveIE,
     RTLLuRadioIE,
+    RTLLuTeleVODIE,
+    RtlNlIE,
 )
-from .rtl2 import RTL2IE
 from .rtnews import (
-    RTNewsIE,
     RTDocumentryIE,
     RTDocumentryPlaylistIE,
+    RTNewsIE,
     RuptlyIE,
 )
 from .rtp import RTPIE
 from .rtrfm import RTRFMIE
 from .rts import RTSIE
 from .rtvcplay import (
-    RTVCPlayIE,
-    RTVCPlayEmbedIE,
     RTVCKalturaIE,
+    RTVCPlayEmbedIE,
+    RTVCPlayIE,
 )
 from .rtve import (
     RTVEALaCartaIE,
     RTVEAudioIE,
-    RTVELiveIE,
     RTVEInfantilIE,
+    RTVELiveIE,
     RTVETelevisionIE,
 )
 from .rtvs import RTVSIE
 from .rtvslo import RTVSLOIE
+from .rudovideo import RudoVideoIE
 from .rule34video import Rule34VideoIE
 from .rumble import (
-    RumbleEmbedIE,
-    RumbleIE,
     RumbleChannelIE,
-)
-from .rudovideo import RudoVideoIE
-from .rutube import (
-    RutubeIE,
-    RutubeChannelIE,
-    RutubeEmbedIE,
-    RutubeMovieIE,
-    RutubePersonIE,
-    RutubePlaylistIE,
-    RutubeTagsIE,
-)
-from .glomex import (
-    GlomexIE,
-    GlomexEmbedIE,
-)
-from .megatvcom import (
-    MegaTVComIE,
-    MegaTVComEmbedIE,
-)
-from .antenna import (
-    AntennaGrWatchIE,
-    Ant1NewsGrArticleIE,
-    Ant1NewsGrEmbedIE,
+    RumbleEmbedIE,
+    RumbleIE,
+)
+from .rutube import (
+    RutubeChannelIE,
+    RutubeEmbedIE,
+    RutubeIE,
+    RutubeMovieIE,
+    RutubePersonIE,
+    RutubePlaylistIE,
+    RutubeTagsIE,
 )
 from .rutv import RUTVIE
 from .ruutu import RuutuIE
 from .ruv import (
     RuvIE,
-    RuvSpilaIE
+    RuvSpilaIE,
 )
 from .s4c import (
     S4CIE,
-    S4CSeriesIE
+    S4CSeriesIE,
 )
 from .safari import (
-    SafariIE,
     SafariApiIE,
     SafariCourseIE,
+    SafariIE,
 )
 from .saitosan import SaitosanIE
 from .samplefocus import SampleFocusIE
 from .sapo import SapoIE
 from .sbs import SBSIE
 from .sbscokr import (
-    SBSCoKrIE,
     SBSCoKrAllvodProgramIE,
+    SBSCoKrIE,
     SBSCoKrProgramsVodIE,
 )
 from .screen9 import Screen9IE
 from .screencastify import ScreencastifyIE
 from .screencastomatic import ScreencastOMaticIE
 from .scrippsnetworks import (
-    ScrippsNetworksWatchIE,
     ScrippsNetworksIE,
+    ScrippsNetworksWatchIE,
 )
+from .scrolller import ScrolllerIE
 from .scte import (
     SCTEIE,
     SCTECourseIE,
 )
-from .scrolller import ScrolllerIE
 from .sejmpl import SejmIE
 from .senalcolombia import SenalColombiaLiveIE
-from .senategov import SenateISVPIE, SenateGovIE
+from .senategov import (
+    SenateGovIE,
+    SenateISVPIE,
+)
 from .sendtonews import SendtoNewsIE
 from .servus import ServusIE
 from .sevenplus import SevenPlusIE
 from .sexu import SexuIE
 from .seznamzpravy import (
-    SeznamZpravyIE,
     SeznamZpravyArticleIE,
+    SeznamZpravyIE,
 )
 from .shahid import (
     ShahidIE,
 )
 from .sharepoint import SharePointIE
 from .sharevideos import ShareVideosEmbedIE
-from .sibnet import SibnetEmbedIE
 from .shemaroome import ShemarooMeIE
 from .showroomlive import ShowRoomLiveIE
+from .sibnet import SibnetEmbedIE
 from .simplecast import (
-    SimplecastIE,
     SimplecastEpisodeIE,
+    SimplecastIE,
     SimplecastPodcastIE,
 )
 from .sina import SinaIE
 from .sixplay import SixPlayIE
 from .skeb import SkebIE
+from .sky import (
+    SkyNewsIE,
+    SkyNewsStoryIE,
+    SkySportsIE,
+    SkySportsNewsIE,
+)
 from .skyit import (
+    CieloTVItIE,
+    SkyItArteIE,
+    SkyItIE,
     SkyItPlayerIE,
     SkyItVideoIE,
     SkyItVideoLiveIE,
-    SkyItIE,
-    SkyItArteIE,
-    CieloTVItIE,
     TV8ItIE,
 )
 from .skylinewebcams import SkylineWebcamsIE
 from .skynewsarabia import (
-    SkyNewsArabiaIE,
     SkyNewsArabiaArticleIE,
+    SkyNewsArabiaIE,
 )
 from .skynewsau import SkyNewsAUIE
-from .sky import (
-    SkyNewsIE,
-    SkyNewsStoryIE,
-    SkySportsIE,
-    SkySportsNewsIE,
-)
 from .slideshare import SlideshareIE
 from .slideslive import SlidesLiveIE
 from .slutload import SlutloadIE
 from .soundcloud import (
     SoundcloudEmbedIE,
     SoundcloudIE,
-    SoundcloudSetIE,
+    SoundcloudPlaylistIE,
     SoundcloudRelatedIE,
+    SoundcloudSearchIE,
+    SoundcloudSetIE,
+    SoundcloudTrackStationIE,
     SoundcloudUserIE,
     SoundcloudUserPermalinkIE,
-    SoundcloudTrackStationIE,
-    SoundcloudPlaylistIE,
-    SoundcloudSearchIE,
 )
 from .soundgasm import (
     SoundgasmIE,
-    SoundgasmProfileIE
+    SoundgasmProfileIE,
 )
 from .southpark import (
-    SouthParkIE,
     SouthParkDeIE,
     SouthParkDkIE,
     SouthParkEsIE,
+    SouthParkIE,
     SouthParkLatIE,
-    SouthParkNlIE
+    SouthParkNlIE,
 )
 from .sovietscloset import (
     SovietsClosetIE,
-    SovietsClosetPlaylistIE
+    SovietsClosetPlaylistIE,
 )
 from .spankbang import (
     SpankBangIE,
     BellatorIE,
     ParamountNetworkIE,
 )
-from .stageplus import StagePlusVODConcertIE
-from .startrek import StarTrekIE
-from .stitcher import (
-    StitcherIE,
-    StitcherShowIE,
-)
 from .sport5 import Sport5IE
 from .sportbox import SportBoxIE
 from .sportdeutschland import SportDeutschlandIE
 from .stacommu import (
     StacommuLiveIE,
     StacommuVODIE,
-    TheaterComplexTownVODIE,
     TheaterComplexTownPPVIE,
+    TheaterComplexTownVODIE,
 )
+from .stageplus import StagePlusVODConcertIE
 from .stanfordoc import StanfordOpenClassroomIE
+from .startrek import StarTrekIE
 from .startv import StarTVIE
 from .steam import (
-    SteamIE,
     SteamCommunityBroadcastIE,
+    SteamIE,
+)
+from .stitcher import (
+    StitcherIE,
+    StitcherShowIE,
 )
 from .storyfire import (
     StoryFireIE,
-    StoryFireUserIE,
     StoryFireSeriesIE,
+    StoryFireUserIE,
 )
 from .streamable import StreamableIE
 from .streamcz import StreamCZIE
     SVTSeriesIE,
 )
 from .swearnet import SwearnetEpisodeIE
-from .syvdk import SYVDKIE
 from .syfy import SyfyIE
+from .syvdk import SYVDKIE
 from .sztvhu import SztvHuIE
 from .tagesschau import TagesschauIE
 from .taptap import (
-    TapTapMomentIE,
     TapTapAppIE,
     TapTapAppIntlIE,
+    TapTapMomentIE,
     TapTapPostIntlIE,
 )
 from .tass import TassIE
 from .tbs import TBSIE
 from .tbsjp import (
     TBSJPEpisodeIE,
-    TBSJPProgramIE,
     TBSJPPlaylistIE,
+    TBSJPProgramIE,
 )
 from .teachable import (
-    TeachableIE,
     TeachableCourseIE,
+    TeachableIE,
 )
 from .teachertube import (
     TeacherTubeIE,
 )
 from .teachingchannel import TeachingChannelIE
 from .teamcoco import (
-    TeamcocoIE,
     ConanClassicIE,
+    TeamcocoIE,
 )
 from .teamtreehouse import TeamTreeHouseIE
 from .ted import (
 from .telemb import TeleMBIE
 from .telemundo import TelemundoIE
 from .telequebec import (
-    TeleQuebecIE,
-    TeleQuebecSquatIE,
     TeleQuebecEmissionIE,
+    TeleQuebecIE,
     TeleQuebecLiveIE,
+    TeleQuebecSquatIE,
     TeleQuebecVideoIE,
 )
 from .teletask import TeleTaskIE
 from .telewebion import TelewebionIE
-from .tempo import TempoIE, IVXPlayerIE
+from .tempo import (
+    IVXPlayerIE,
+    TempoIE,
+)
 from .tencent import (
     IflixEpisodeIE,
     IflixSeriesIE,
 from .theholetv import TheHoleTvIE
 from .theintercept import TheInterceptIE
 from .theplatform import (
-    ThePlatformIE,
     ThePlatformFeedIE,
+    ThePlatformIE,
 )
 from .thestar import TheStarIE
 from .thesun import TheSunIE
     ThisVidMemberIE,
     ThisVidPlaylistIE,
 )
+from .threeqsdn import ThreeQSDNIE
 from .threespeak import (
     ThreeSpeakIE,
     ThreeSpeakUserIE,
 )
-from .threeqsdn import ThreeQSDNIE
 from .tiktok import (
+    DouyinIE,
+    TikTokEffectIE,
     TikTokIE,
-    TikTokUserIE,
+    TikTokLiveIE,
     TikTokSoundIE,
-    TikTokEffectIE,
     TikTokTagIE,
+    TikTokUserIE,
     TikTokVMIE,
-    TikTokLiveIE,
-    DouyinIE,
 )
 from .tmz import TMZIE
 from .tnaflix import (
-    TNAFlixNetworkEmbedIE,
-    TNAFlixIE,
     EMPFlixIE,
     MovieFapIE,
+    TNAFlixIE,
+    TNAFlixNetworkEmbedIE,
 )
 from .toggle import (
-    ToggleIE,
     MeWatchIE,
+    ToggleIE,
 )
-from .toggo import (
-    ToggoIE,
-)
+from .toggo import ToggoIE
 from .tonline import TOnlineIE
 from .toongoggles import ToonGogglesIE
 from .toutv import TouTvIE
-from .toypics import ToypicsUserIE, ToypicsIE
+from .toypics import (
+    ToypicsIE,
+    ToypicsUserIE,
+)
 from .traileraddict import TrailerAddictIE
 from .triller import (
     TrillerIE,
-    TrillerUserIE,
     TrillerShortIE,
+    TrillerUserIE,
 )
 from .trovo import (
+    TrovoChannelClipIE,
+    TrovoChannelVodIE,
     TrovoIE,
     TrovoVodIE,
-    TrovoChannelVodIE,
-    TrovoChannelClipIE,
 )
 from .trtcocuk import TrtCocukVideoIE
 from .trtworld import TrtWorldIE
 from .truth import TruthIE
 from .trutv import TruTVIE
 from .tube8 import Tube8IE
-from .tubetugraz import TubeTuGrazIE, TubeTuGrazSeriesIE
+from .tubetugraz import (
+    TubeTuGrazIE,
+    TubeTuGrazSeriesIE,
+)
 from .tubitv import (
     TubiTvIE,
     TubiTvShowIE,
 )
 from .tumblr import TumblrIE
 from .tunein import (
-    TuneInStationIE,
-    TuneInPodcastIE,
     TuneInPodcastEpisodeIE,
+    TuneInPodcastIE,
     TuneInShortenerIE,
+    TuneInStationIE,
 )
 from .tv2 import (
     TV2IE,
-    TV2ArticleIE,
     KatsomoIE,
     MTVUutisetArticleIE,
-)
-from .tv24ua import (
-    TV24UAVideoIE,
+    TV2ArticleIE,
 )
 from .tv2dk import (
     TV2DKIE,
 from .tv4 import TV4IE
 from .tv5mondeplus import TV5MondePlusIE
 from .tv5unis import (
-    TV5UnisVideoIE,
     TV5UnisIE,
+    TV5UnisVideoIE,
 )
+from .tv24ua import TV24UAVideoIE
 from .tva import (
     TVAIE,
     QubIE,
 )
 from .tvanouvelles import (
-    TVANouvellesIE,
     TVANouvellesArticleIE,
+    TVANouvellesIE,
 )
 from .tvc import (
     TVCIE,
 from .tvn24 import TVN24IE
 from .tvnoe import TVNoeIE
 from .tvopengr import (
-    TVOpenGrWatchIE,
     TVOpenGrEmbedIE,
+    TVOpenGrWatchIE,
 )
 from .tvp import (
-    TVPEmbedIE,
     TVPIE,
+    TVPEmbedIE,
     TVPStreamIE,
     TVPVODSeriesIE,
     TVPVODVideoIE,
 )
 from .tvplay import (
-    TVPlayIE,
     TVPlayHomeIE,
+    TVPlayIE,
 )
 from .tvplayer import TVPlayerIE
 from .tweakers import TweakersIE
     TwitCastingUserIE,
 )
 from .twitch import (
-    TwitchVodIE,
+    TwitchClipsIE,
     TwitchCollectionIE,
-    TwitchVideosIE,
+    TwitchStreamIE,
     TwitchVideosClipsIE,
     TwitchVideosCollectionsIE,
-    TwitchStreamIE,
-    TwitchClipsIE,
+    TwitchVideosIE,
+    TwitchVodIE,
 )
 from .twitter import (
-    TwitterCardIE,
-    TwitterIE,
     TwitterAmplifyIE,
     TwitterBroadcastIE,
-    TwitterSpacesIE,
+    TwitterCardIE,
+    TwitterIE,
     TwitterShortenerIE,
+    TwitterSpacesIE,
 )
 from .txxx import (
-    TxxxIE,
     PornTopIE,
+    TxxxIE,
 )
 from .udemy import (
+    UdemyCourseIE,
     UdemyIE,
-    UdemyCourseIE
 )
 from .udn import UDNEmbedIE
 from .ufctv import (
 )
 from .ukcolumn import UkColumnIE
 from .uktvplay import UKTVPlayIE
-from .digiteka import DigitekaIE
-from .dlive import (
-    DLiveVODIE,
-    DLiveStreamIE,
-)
-from .drooble import DroobleIE
 from .umg import UMGDeIE
 from .unistra import UnistraIE
 from .unity import UnityIE
-from .unsupported import KnownDRMIE, KnownPiracyIE
+from .unsupported import (
+    KnownDRMIE,
+    KnownPiracyIE,
+)
 from .uol import UOLIE
 from .uplynk import (
     UplynkIE,
 from .urplay import URPlayIE
 from .usanetwork import USANetworkIE
 from .usatoday import USATodayIE
-from .ustream import UstreamIE, UstreamChannelIE
+from .ustream import (
+    UstreamChannelIE,
+    UstreamIE,
+)
 from .ustudio import (
-    UstudioIE,
     UstudioEmbedIE,
+    UstudioIE,
 )
 from .utreon import UtreonIE
 from .varzesh3 import Varzesh3IE
 from .veo import VeoIE
 from .veoh import (
     VeohIE,
-    VeohUserIE
+    VeohUserIE,
 )
 from .vesti import VestiIE
 from .vevo import (
     VevoPlaylistIE,
 )
 from .vgtv import (
+    VGTVIE,
     BTArticleIE,
     BTVestlendingenIE,
-    VGTVIE,
 )
 from .vh1 import VH1IE
 from .vice import (
-    ViceIE,
     ViceArticleIE,
+    ViceIE,
     ViceShowIE,
 )
 from .viddler import ViddlerIE
 from .videodetective import VideoDetectiveIE
 from .videofyme import VideofyMeIE
 from .videoken import (
+    VideoKenCategoryIE,
     VideoKenIE,
     VideoKenPlayerIE,
     VideoKenPlaylistIE,
-    VideoKenCategoryIE,
     VideoKenTopicIE,
 )
 from .videomore import (
     VideomoreIE,
-    VideomoreVideoIE,
     VideomoreSeasonIE,
+    VideomoreVideoIE,
 )
 from .videopress import VideoPressIE
 from .vidio import (
     VidioIE,
+    VidioLiveIE,
     VidioPremierIE,
-    VidioLiveIE
 )
 from .vidlii import VidLiiIE
 from .vidly import VidlyIE
 from .viewlift import (
-    ViewLiftIE,
     ViewLiftEmbedIE,
+    ViewLiftIE,
 )
 from .viidea import ViideaIE
+from .viki import (
+    VikiChannelIE,
+    VikiIE,
+)
 from .vimeo import (
-    VimeoIE,
+    VHXEmbedIE,
     VimeoAlbumIE,
     VimeoChannelIE,
     VimeoGroupsIE,
+    VimeoIE,
     VimeoLikesIE,
     VimeoOndemandIE,
     VimeoProIE,
     VimeoReviewIE,
     VimeoUserIE,
     VimeoWatchLaterIE,
-    VHXEmbedIE,
 )
 from .vimm import (
     VimmIE,
     VineIE,
     VineUserIE,
 )
-from .viki import (
-    VikiIE,
-    VikiChannelIE,
-)
 from .viously import ViouslyIE
 from .viqeo import ViqeoIE
 from .viu import (
     ViuIE,
-    ViuPlaylistIE,
     ViuOTTIE,
     ViuOTTIndonesiaIE,
+    ViuPlaylistIE,
 )
 from .vk import (
     VKIE,
-    VKUserVideosIE,
-    VKWallPostIE,
     VKPlayIE,
     VKPlayLiveIE,
+    VKUserVideosIE,
+    VKWallPostIE,
 )
 from .vocaroo import VocarooIE
 from .vodpl import VODPlIE
 from .vodplatform import VODPlatformIE
 from .voicy import (
-    VoicyIE,
     VoicyChannelIE,
+    VoicyIE,
 )
 from .volejtv import VolejTVIE
 from .voxmedia import (
-    VoxMediaVolumeIE,
     VoxMediaIE,
+    VoxMediaVolumeIE,
 )
 from .vrt import (
     VRTIE,
-    VrtNUIE,
-    KetnetIE,
     DagelijkseKostIE,
+    KetnetIE,
     Radio1BeIE,
+    VrtNUIE,
 )
 from .vtm import VTMIE
-from .medialaan import MedialaanIE
 from .vuclip import VuClipIE
 from .vvvvid import (
     VVVVIDIE,
 )
 from .walla import WallaIE
 from .washingtonpost import (
-    WashingtonPostIE,
     WashingtonPostArticleIE,
+    WashingtonPostIE,
 )
 from .wat import WatIE
 from .wdr import (
     WDRIE,
-    WDRPageIE,
     WDRElefantIE,
     WDRMobileIE,
+    WDRPageIE,
 )
 from .webcamerapl import WebcameraplIE
 from .webcaster import (
-    WebcasterIE,
     WebcasterFeedIE,
+    WebcasterIE,
 )
 from .webofstories import (
     WebOfStoriesIE,
 )
 from .weibo import (
     WeiboIE,
-    WeiboVideoIE,
     WeiboUserIE,
+    WeiboVideoIE,
 )
 from .weiqitv import WeiqiTVIE
 from .weverse import (
     WeverseIE,
-    WeverseMediaIE,
-    WeverseMomentIE,
+    WeverseLiveIE,
     WeverseLiveTabIE,
+    WeverseMediaIE,
     WeverseMediaTabIE,
-    WeverseLiveIE,
+    WeverseMomentIE,
 )
 from .wevidi import WeVidiIE
 from .weyyak import WeyyakIE
+from .whowatch import WhoWatchIE
 from .whyp import WhypIE
 from .wikimedia import WikimediaIE
 from .wimbledon import WimbledonIE
 from .wimtv import WimTVIE
-from .whowatch import WhoWatchIE
 from .wistia import (
+    WistiaChannelIE,
     WistiaIE,
     WistiaPlaylistIE,
-    WistiaChannelIE,
 )
 from .wordpress import (
-    WordpressPlaylistEmbedIE,
     WordpressMiniAudioPlayerEmbedIE,
+    WordpressPlaylistEmbedIE,
 )
 from .worldstarhiphop import WorldStarHipHopIE
 from .wppilot import (
-    WPPilotIE,
     WPPilotChannelsIE,
+    WPPilotIE,
 )
 from .wrestleuniverse import (
-    WrestleUniverseVODIE,
     WrestleUniversePPVIE,
+    WrestleUniverseVODIE,
 )
 from .wsj import (
     WSJIE,
 )
 from .wwe import WWEIE
 from .wykop import (
-    WykopDigIE,
     WykopDigCommentIE,
-    WykopPostIE,
+    WykopDigIE,
     WykopPostCommentIE,
+    WykopPostIE,
 )
 from .xanimu import XanimuIE
 from .xboxclips import XboxClipsIE
 from .xhamster import (
-    XHamsterIE,
     XHamsterEmbedIE,
+    XHamsterIE,
     XHamsterUserIE,
 )
 from .xiaohongshu import XiaoHongShuIE
 from .ximalaya import (
+    XimalayaAlbumIE,
     XimalayaIE,
-    XimalayaAlbumIE
 )
 from .xinpianchang import XinpianchangIE
 from .xminus import XMinusIE
 from .xstream import XstreamIE
 from .xvideos import (
     XVideosIE,
-    XVideosQuickiesIE
+    XVideosQuickiesIE,
 )
 from .xxxymovies import XXXYMoviesIE
 from .yahoo import (
     YahooIE,
-    YahooSearchIE,
     YahooJapanNewsIE,
+    YahooSearchIE,
 )
 from .yandexdisk import YandexDiskIE
 from .yandexmusic import (
-    YandexMusicTrackIE,
     YandexMusicAlbumIE,
-    YandexMusicPlaylistIE,
-    YandexMusicArtistTracksIE,
     YandexMusicArtistAlbumsIE,
+    YandexMusicArtistTracksIE,
+    YandexMusicPlaylistIE,
+    YandexMusicTrackIE,
 )
 from .yandexvideo import (
     YandexVideoIE,
     YandexVideoPreviewIE,
-    ZenYandexIE,
     ZenYandexChannelIE,
+    ZenYandexIE,
 )
 from .yapfiles import YapFilesIE
 from .yappy import (
     YoukuShowIE,
 )
 from .younow import (
-    YouNowLiveIE,
     YouNowChannelIE,
+    YouNowLiveIE,
     YouNowMomentIE,
 )
 from .youporn import YouPornIE
 from .zaiko import (
-    ZaikoIE,
     ZaikoETicketIE,
+    ZaikoIE,
 )
 from .zapiks import ZapiksIE
 from .zattoo import (
     BBVTVIE,
+    EWETVIE,
+    SAKTVIE,
+    VTXTVIE,
     BBVTVLiveIE,
     BBVTVRecordingsIE,
     EinsUndEinsTVIE,
     EinsUndEinsTVLiveIE,
     EinsUndEinsTVRecordingsIE,
-    EWETVIE,
     EWETVLiveIE,
     EWETVRecordingsIE,
     GlattvisionTVIE,
     QuantumTVIE,
     QuantumTVLiveIE,
     QuantumTVRecordingsIE,
+    SAKTVLiveIE,
+    SAKTVRecordingsIE,
     SaltTVIE,
     SaltTVLiveIE,
     SaltTVRecordingsIE,
-    SAKTVIE,
-    SAKTVLiveIE,
-    SAKTVRecordingsIE,
-    VTXTVIE,
     VTXTVLiveIE,
     VTXTVRecordingsIE,
     WalyTVIE,
     ZattooMoviesIE,
     ZattooRecordingsIE,
 )
-from .zdf import ZDFIE, ZDFChannelIE
+from .zdf import (
+    ZDFIE,
+    ZDFChannelIE,
+)
 from .zee5 import (
     Zee5IE,
     Zee5SeriesIE,
 from .zetland import ZetlandDKArticleIE
 from .zhihu import ZhihuIE
 from .zingmp3 import (
-    ZingMp3IE,
     ZingMp3AlbumIE,
     ZingMp3ChartHomeIE,
-    ZingMp3WeekChartIE,
     ZingMp3ChartMusicVideoIE,
-    ZingMp3UserIE,
     ZingMp3HubIE,
+    ZingMp3IE,
     ZingMp3LiveRadioIE,
     ZingMp3PodcastEpisodeIE,
     ZingMp3PodcastIE,
+    ZingMp3UserIE,
+    ZingMp3WeekChartIE,
 )
 from .zoom import ZoomIE
 from .zype import ZypeIE
index b217422818084b44f19c454a9a9b570069691b8d..2c0d296fd2d7311021e340b44f6169a80cd925ef 100644 (file)
@@ -6,10 +6,10 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    dict_get,
     ExtractorError,
-    js_to_json,
+    dict_get,
     int_or_none,
+    js_to_json,
     parse_iso8601,
     str_or_none,
     traverse_obj,
index fee7375eac68f9a9a152dc1879e5f6537d4d682f..b8c79b912a936fe3038ef6a85de27cebba084308 100644 (file)
 import urllib.request
 import urllib.response
 import uuid
-from ..utils.networking import clean_proxies
+
 from .common import InfoExtractor
 from ..aes import aes_ecb_decrypt
 from ..utils import (
     ExtractorError,
+    OnDemandPagedList,
     bytes_to_intlist,
     decode_base_n,
     int_or_none,
     intlist_to_bytes,
-    OnDemandPagedList,
     time_seconds,
     traverse_obj,
     update_url_query,
 )
+from ..utils.networking import clean_proxies
 
 
 def add_opener(ydl, handler):  # FIXME: Create proper API in .networking
index c3b4f432ee6b2664a4c528093edf4b2d101aca73..07933192f3bdef0e76b413ca36316c51499c7f5f 100644 (file)
@@ -3,10 +3,10 @@
     float_or_none,
     format_field,
     int_or_none,
-    str_or_none,
-    traverse_obj,
     parse_codecs,
     parse_qs,
+    str_or_none,
+    traverse_obj,
 )
 
 
index 898d372980901ab048d8f0705df45fd2482fe4db..2f3b67dad4cb2216839fae2e3a723fec9d3a4576 100644 (file)
 from ..compat import compat_b64decode
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
     ass_subtitles_timecode,
     bytes_to_intlist,
     bytes_to_long,
-    ExtractorError,
     float_or_none,
     int_or_none,
     intlist_to_bytes,
     long_to_bytes,
     parse_iso8601,
     pkcs1pad,
-    strip_or_none,
     str_or_none,
+    strip_or_none,
     try_get,
     unified_strdate,
     urlencode_postdata,
index d1525a1af2d5e82d44bace8ab9ed29e57610951b..08e9e51823c67b00bc3165eb27f939363f04314e 100644 (file)
@@ -4,11 +4,11 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    ISO639Utils,
+    OnDemandPagedList,
     float_or_none,
     int_or_none,
-    ISO639Utils,
     join_nonempty,
-    OnDemandPagedList,
     parse_duration,
     str_or_none,
     str_to_int,
index 0b73a966edcc951ee15abee59f7d06fcd7487130..6cc63cd7f989ff55c4c154e1d9757d2cff645b4b 100644 (file)
@@ -5,7 +5,7 @@
     int_or_none,
     mimetype2ext,
     parse_iso8601,
-    traverse_obj
+    traverse_obj,
 )
 
 
index 87219f2f8d393be4af5b5f7e2b25f753013376c9..49df4bf3aa14695320b2006a991219438da5ec46 100644 (file)
@@ -12,7 +12,6 @@
 )
 from ..utils.traversal import traverse_obj
 
-
 _FIELDS = '''
     _id
     clipImageSource
index 8d5b472d3239a7c317a1fa5c9e79a62e8d662c69..f927965de9eebdf75f13bc2b0dc84a5dc2ce0417 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from ..utils import (
-    parse_iso8601,
+    int_or_none,
     parse_duration,
     parse_filesize,
-    int_or_none,
+    parse_iso8601,
 )
 
 
index b785c62c32107dfa83ee6ffe2cd9c68a7d519000..cb2b9891e9b76b28f2899daba1839f7dfae22b2b 100644 (file)
@@ -1,17 +1,13 @@
 import re
 
 from .common import InfoExtractor
-
-from ..compat import (
-    compat_urlparse,
-)
-
+from ..compat import compat_urlparse
 from ..utils import (
+    ExtractorError,
+    clean_html,
+    int_or_none,
     urlencode_postdata,
     urljoin,
-    int_or_none,
-    clean_html,
-    ExtractorError
 )
 
 
index 5018710e034628d0982537fd4ebece15d0474a01..509b21a5316cfc332af86004b5b6abefa6a2dc11 100644 (file)
@@ -1,6 +1,6 @@
 from .common import InfoExtractor
-from .youtube import YoutubeIE
 from .vimeo import VimeoIE
+from .youtube import YoutubeIE
 from ..utils import (
     int_or_none,
     parse_iso8601,
index 0d259c549fa315f7420d7015eb497dbb1d3f0bd8..6b2bf2db2c568c8877241132ac58eef3d907516d 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     mimetype2ext,
     parse_iso8601,
index 52f2ad057f74d8859c62b660496e79ca541d7d43..5e78f372e46c520f7f0b9b498550218ac00c9465 100644 (file)
@@ -5,7 +5,7 @@
     int_or_none,
     str_or_none,
     traverse_obj,
-    unified_timestamp
+    unified_timestamp,
 )
 
 
index 306b3651e334cedb6f2f9aa65cd2bf769ed16812..9f5b9b523e3626004f0f10769a3bcc4a3bd0b5f4 100644 (file)
@@ -1,7 +1,7 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import url_or_none, merge_dicts
+from ..utils import merge_dicts, url_or_none
 
 
 class AngelIE(InfoExtractor):
index d00b0f9060ec57ae9bf93fc18009397c75dc83dd..433eb4ed8e894ffe74ad435dbf3488d7c8d0ff31 100644 (file)
@@ -1,8 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    str_to_int,
-    ExtractorError
-)
+from ..utils import ExtractorError, str_to_int
 
 
 class AppleConnectIE(InfoExtractor):
index 2e0b0a8c932b5690ea12e13249febd9251e729fd..21103aee57195d9a3d87ed3ba4c98563219114f8 100644 (file)
@@ -1,5 +1,5 @@
-import re
 import json
+import re
 
 from .common import InfoExtractor
 from ..compat import compat_urlparse
index a493714d1fb2f3108255a7629d49ce5d4c6e36a5..9a5524aabed857938781b725fd4ef18a97e478fb 100644 (file)
@@ -4,8 +4,8 @@
     compat_urllib_parse_urlparse,
 )
 from ..utils import (
-    format_field,
     float_or_none,
+    format_field,
     int_or_none,
     parse_iso8601,
     remove_start,
index d60feba3159af8c73df4e6d3c241d14e7480c25f..20ee34cca76ab30940ed2a01bd32dab669108179 100644 (file)
@@ -2,10 +2,10 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     float_or_none,
     jwt_encode_hs256,
     try_get,
-    ExtractorError,
 )
 
 
index 6fc938de9c44c5d84efd0bf0072e14ce538addb9..a8dfb3efcc388cab279014396af22bc99c378b36 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..compat import (
-    compat_urllib_parse_urlencode,
     compat_str,
+    compat_urllib_parse_urlencode,
 )
 from ..utils import (
     format_field,
index 67af29a962e4b50cbeaec4f396f1e9e1c9ab545d..c4e07a79a84482185a2aa08d0e1fcfc057233b27 100644 (file)
@@ -2,12 +2,12 @@
 
 from .common import InfoExtractor
 from ..compat import (
-    compat_urllib_parse_urlparse,
     compat_parse_qs,
+    compat_urllib_parse_urlparse,
 )
 from ..utils import (
-    format_field,
     InAdvancePagedList,
+    format_field,
     traverse_obj,
     unified_timestamp,
 )
index 51e7220578bc6a8cf2d2050d24d7124321a82995..82dc9ab025e7b1e167716a13447e714c0ad6afca 100644 (file)
@@ -2,11 +2,11 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    try_get,
-    int_or_none,
-    url_or_none,
     float_or_none,
+    int_or_none,
+    try_get,
     unified_timestamp,
+    url_or_none,
 )
 
 
index 042b3220b7495e3b97ac39e1125443a6d4dfdbae..da98ac314047f8780aa254ac815a9ef738ba1e4a 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
     str_or_none,
index e875957cf5b7879b56e5eaba3b2774dd61bb4976..aa3d63ee7b34d9377323b31cb02f97841ddde92e 100644 (file)
@@ -1,5 +1,5 @@
-from .common import InfoExtractor
 from .amp import AMPIE
+from .common import InfoExtractor
 from ..utils import (
     ExtractorError,
     int_or_none,
index 3d6e0330429d925342434402d0d61a94a9d3d9a9..ef0151de672f136e9e7351216bda4daf62d79e77 100644 (file)
@@ -1,3 +1,4 @@
+from .common import InfoExtractor
 from ..utils import (
     mimetype2ext,
     parse_duration,
@@ -5,7 +6,6 @@
     str_or_none,
     traverse_obj,
 )
-from .common import InfoExtractor
 
 
 class BloggerIE(InfoExtractor):
index 92f8ea2cb47c47defbfafe369b6a5b6785dfa4fa..267586687258ca3e7c55e1e3eff37c6141fe612d 100644 (file)
@@ -1,7 +1,6 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     extract_attributes,
 )
index 51f9eb787348518513b5401b0b3358d390f511bc..da06cc3f860f6ea2bc47a29d52e2c98ad9a4b592 100644 (file)
@@ -1,9 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    js_to_json,
-    traverse_obj,
-    unified_timestamp
-)
+from ..utils import js_to_json, traverse_obj, unified_timestamp
 
 
 class BoxCastVideoIE(InfoExtractor):
index 1200437e639c9d70957e0ece99e7f43596ebd0f8..04b1dd80c838887dfca5f7ce0469d0312c13d159 100644 (file)
@@ -6,7 +6,7 @@
     classproperty,
     int_or_none,
     traverse_obj,
-    urljoin
+    urljoin,
 )
 
 
index 61b18412d442376cb328f5fb4dfe37d674371479..4190e1a0992cb9d1d4cc1062b01e088c00014595 100644 (file)
 )
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
+    UnsupportedError,
     clean_html,
     dict_get,
     extract_attributes,
-    ExtractorError,
     find_xpath_attr,
     fix_xml_ampersands,
     float_or_none,
@@ -29,7 +30,6 @@
     try_get,
     unescapeHTML,
     unsmuggle_url,
-    UnsupportedError,
     update_url_query,
     url_or_none,
 )
index cf830210f86c24aeb337a4d7702d662305576774..aca9782c76d4e1b8700f6f9a98a18740ddf20612 100644 (file)
@@ -5,14 +5,14 @@
 from ..utils import (
     ExtractorError,
     extract_attributes,
+    find_xpath_attr,
     get_element_html_by_id,
     int_or_none,
-    find_xpath_attr,
     smuggle_url,
-    xpath_element,
-    xpath_text,
     update_url_query,
     url_or_none,
+    xpath_element,
+    xpath_text,
 )
 
 
index 9cffa11e81f0fed9110942e4cfce26f331c23f2d..745b71f243996e3b68a7c0c21df1865cf8449801 100644 (file)
@@ -1,4 +1,5 @@
 import json
+
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
index 006a713b2a575ba5d51d87411e4132ad0684dd08..67b56e00d9abe3ee059be16cccd92bb184ff664d 100644 (file)
@@ -1,11 +1,11 @@
+import re
+
 from .common import InfoExtractor
 from ..utils import (
     parse_iso8601,
     qualities,
 )
 
-import re
-
 
 class ClippitIE(InfoExtractor):
 
index a952828fba1d4cbf6f13796c2e3fd10881ebd9c0..a33cef354e0826c3d454a991f320597f2333b0d7 100644 (file)
@@ -1,5 +1,6 @@
 import base64
 import collections
+import functools
 import getpass
 import hashlib
 import http.client
@@ -21,7 +22,6 @@
 import urllib.request
 import xml.etree.ElementTree
 
-from ..compat import functools  # isort: split
 from ..compat import (
     compat_etree_fromstring,
     compat_expanduser,
index bcc34ddd8a12f8c942b43ab091309345b91ddd48..0a98c980f13add1f275501f4e51dbac534daa525 100644 (file)
@@ -1,7 +1,7 @@
 from .theplatform import ThePlatformFeedIE
 from ..utils import (
-    dict_get,
     ExtractorError,
+    dict_get,
     float_or_none,
     int_or_none,
 )
index 1ef90b5a07b8cb282e70e4613795275cf774aaa9..0cb7d940cdb9c6f6c2d765ab332e3bf6b0448d95 100644 (file)
@@ -6,6 +6,7 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
     determine_ext,
     float_or_none,
     int_or_none,
@@ -13,7 +14,6 @@
     parse_age_limit,
     parse_duration,
     url_or_none,
-    ExtractorError
 )
 
 
index 0075680e8f505e85478ff6d93a1dad629f1f1d31..e56584e4e70e28dde996aabc54da2f60e08ce7c0 100644 (file)
@@ -1,10 +1,12 @@
 import re
 
 from .common import InfoExtractor
+from .senategov import SenateISVPIE
+from .ustream import UstreamIE
 from ..compat import compat_HTMLParseError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     extract_attributes,
     find_xpath_attr,
     get_element_by_attribute,
@@ -19,8 +21,6 @@
     str_to_int,
     unescapeHTML,
 )
-from .senategov import SenateISVPIE
-from .ustream import UstreamIE
 
 
 class CSpanIE(InfoExtractor):
index cec178f03409e7bfb8d56973baf5ba39429e7731..1817bd2ff92e17aa331be41ff6ac27a4b5e1489c 100644 (file)
@@ -1,6 +1,6 @@
 from .common import InfoExtractor
-from ..utils import unified_timestamp
 from .youtube import YoutubeIE
+from ..utils import unified_timestamp
 
 
 class CtsNewsIE(InfoExtractor):
index 43401e111568b3977c7f5afc492e1b458ed63520..4c25bea11c37e3efe5aef10e583062e9bef5a899 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    int_or_none,
     determine_protocol,
+    int_or_none,
     try_get,
     unescapeHTML,
 )
index 5e14d6aff029bced9e3f32b246034f0dd4c42488..2e0f6f0d34b97a9e3571dd7b4a77dbfad3eb8f42 100644 (file)
@@ -1,8 +1,8 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import ExtractorError, clean_html, int_or_none, try_get, unified_strdate
 from ..compat import compat_str
+from ..utils import ExtractorError, clean_html, int_or_none, try_get, unified_strdate
 
 
 class DamtomoBaseIE(InfoExtractor):
index 1624d085c1feeb914fe2fb0dbf6e898fab89025a..17742493780462dffdc2046d648882f6d49e4e0e 100644 (file)
@@ -1,11 +1,11 @@
-import re
 import os.path
+import re
 
 from .common import InfoExtractor
 from ..compat import compat_urlparse
 from ..utils import (
-    url_basename,
     remove_start,
+    url_basename,
 )
 
 
index c11cd790b0055d3acd6cd6b1294d80f3ddf46a13..4380c414ee042a324e5c62d4e348a248fcb09f29 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import (
     ExtractorError,
     parse_resolution,
index 1f3d8e31c53aa4cf5aee6e951806cfd6f1b13630..b2663a63dd2c678a1aaab1aaa6d38cde82b23041 100644 (file)
@@ -2,9 +2,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     determine_ext,
     extract_attributes,
-    ExtractorError,
     int_or_none,
     parse_age_limit,
     remove_end,
index 430de326f40a96e622b9d238aa209020f8138dbc..d8dde0ca71bf0a478c0490e27ee8615b8c15589b 100644 (file)
@@ -2,10 +2,10 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
-    unified_strdate,
     determine_ext,
+    int_or_none,
     join_nonempty,
+    unified_strdate,
     update_url_query,
 )
 
index ee8893d5af8cee5c0e4ae99f24941a5cd67c3803..244ffdf1cd18f6e16a858819edccf3b3af3188b2 100644 (file)
@@ -1,5 +1,5 @@
-import time
 import hashlib
+import time
 import urllib
 import uuid
 
index 1ecc4baf67993c4ecd3429650184db3d27e8493d..ddf2128b0a434fff9155ca78df3a6f159a445ce5 100644 (file)
@@ -4,8 +4,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     float_or_none,
     int_or_none,
     remove_start,
index e5dab6ac0d5df4a27045daaec4561676fcceccf6..a9247edc0f1c5f60a4e51187770d4afef0a3e2ce 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     NO_DEFAULT,
+    int_or_none,
     parse_duration,
     str_to_int,
 )
index 626e577e7eff92c14c8f8ff096a879460ceb84ea..adc7705bc20959255e3c1269e433f67d3dc2c6df 100644 (file)
@@ -5,9 +5,9 @@
 from .common import InfoExtractor
 from ..compat import compat_urlparse
 from ..utils import (
+    ExtractorError,
     clean_html,
     extract_attributes,
-    ExtractorError,
     get_elements_by_class,
     int_or_none,
     js_to_json,
index e67143370ba451d6f1f19d25d0dab5f2bb215dbd..e6660dcd9924a870eebd35fcc98228d0d36f71cf 100644 (file)
@@ -2,15 +2,15 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     join_nonempty,
     js_to_json,
     mimetype2ext,
+    parse_iso8601,
     try_get,
     unescapeHTML,
-    parse_iso8601,
 )
 
 
index f7b852076608d1ed8cd804678de62b99d30217ed..feab804af91a99c59bb0e88457028d42c4623582 100644 (file)
@@ -1,10 +1,10 @@
 from .common import InfoExtractor
+from ..compat import compat_urlparse
 from ..utils import (
     int_or_none,
     unified_strdate,
     url_or_none,
 )
-from ..compat import compat_urlparse
 
 
 class DWIE(InfoExtractor):
index 9ecdf5d3b7c92e3b1835c3656c0aef6f1447a79f..19c6933e7fdc5aaacd2f77aab373baa58b80e996 100644 (file)
@@ -4,15 +4,15 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
-    ExtractorError,
     dict_get,
     int_or_none,
     merge_dicts,
-    parse_qs,
     parse_age_limit,
     parse_iso8601,
+    parse_qs,
     str_or_none,
     try_get,
     url_or_none,
index 29dfc8ae9585b58ef6b3f71b9c63ccf6bdea99b4..0cf889a1ecdcc013aebe99134df01e5565e24627 100644 (file)
@@ -8,7 +8,7 @@
     qualities,
     traverse_obj,
     unified_strdate,
-    xpath_text
+    xpath_text,
 )
 
 
index 65a1dc7c503e66c967c43e24b1abc1b2ee5aa3c5..66fa42fa1c916a59bc979d4fe91e93ca4f2a3082 100644 (file)
@@ -1,8 +1,7 @@
 from .common import InfoExtractor
-
 from ..utils import (
-    parse_duration,
     js_to_json,
+    parse_duration,
 )
 
 
index d8b068e9c5e895b29711450944643e022da11c45..4a13ab08d54e2a8a8cd2174e3e159fa87bb304a1 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..utils import (
-    xpath_text,
-    parse_duration,
     ExtractorError,
+    parse_duration,
+    xpath_text,
 )
 
 
index cddf254978b102a8eb831c263357dddf480ae085..1e80f9a378a8399b029a2441332905ccd034ae92 100644 (file)
@@ -1,12 +1,6 @@
 from .common import InfoExtractor
-
 from ..compat import compat_str
-from ..utils import (
-    parse_iso8601,
-    ExtractorError,
-    try_get,
-    mimetype2ext
-)
+from ..utils import ExtractorError, mimetype2ext, parse_iso8601, try_get
 
 
 class FancodeVodIE(InfoExtractor):
index bca62add9f730b3e6677551b28ccd133f47b55f6..796bac3c3173b12ccf5e8565e196d36fbfd9b74d 100644 (file)
@@ -3,9 +3,9 @@
 from .common import InfoExtractor
 from ..compat import compat_etree_fromstring
 from ..utils import (
+    int_or_none,
     xpath_element,
     xpath_text,
-    int_or_none,
 )
 
 
index 8175b6b0f770486004b0ef49aedeedb7735724a2..b2dbb92d5e21221aa0a919223a4579e5433fbb9f 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     float_or_none,
+    int_or_none,
 )
 
 
index f604cbd40de705d8af0ed3dbcf2125e4ebb97db3..ae837f6a0203aeabbd53b949ee13615c952a426a 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
     traverse_obj,
index 0cd18f49479aad7738f8237ac59a37e72480c5bb..69ca87c842f165bf91f31a3a6bc18f934ee4f098 100644 (file)
@@ -2,10 +2,10 @@
 from ..compat import compat_str
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
+    int_or_none,
     qualities,
     strip_or_none,
-    int_or_none,
-    ExtractorError,
 )
 
 
index f9d22fd3381c2d4c1a34e8dc24c27f1b76f718b7..c10d290dc34fb7043ba921f24912bcebb1dd14db 100644 (file)
@@ -7,7 +7,7 @@
     parse_codecs,
     parse_duration,
     str_to_int,
-    unified_timestamp
+    unified_timestamp,
 )
 
 
index 1d3c0b110746e57006fb6039261bf41d4494a316..b284e1e284881d612cf432f7dc32c2f2eb3b80dc 100644 (file)
@@ -10,7 +10,7 @@
     int_or_none,
     str_or_none,
     traverse_obj,
-    try_get
+    try_get,
 )
 
 
index bc56b03e36c12970a324782502ff4dd03df95e15..6403be8cf4d33b2e9509ce2de8789910a92d4249 100644 (file)
@@ -1,4 +1,5 @@
 import re
+
 from .common import InfoExtractor
 from ..utils import (
     float_or_none,
index 2cfed0fd0a1dc3178eef45eef1fefeac751f3c38..2818c718d16789c570e45d0e49149553bda9263c 100644 (file)
@@ -4,7 +4,7 @@
 import urllib.parse
 import xml.etree.ElementTree
 
-from .common import InfoExtractor  # isort: split
+from .common import InfoExtractor
 from .commonprotocols import RtmpIE
 from .youtube import YoutubeIE
 from ..compat import compat_etree_fromstring
index 7795dc56f752d42e8c1ef4490a095564336cbc60..b9dc7c63c52c6e6a2c519399a83459b4c706c3fc 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    bool_or_none,
     ExtractorError,
+    bool_or_none,
     dict_get,
     float_or_none,
     int_or_none,
index c5bc86bb4a4a369901afffaf6806ffd993ddb06f..7baf8de8d61c3aa1d1b22236b828d574eae1d6a3 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import (
     ExtractorError,
     urlencode_postdata,
index 22aac0db90aaef11f2d5bdf0c9d9250363df6392..515f3c5671a5fff1eb2ddaf3c40cb3ad5aa4fb50 100644 (file)
@@ -3,9 +3,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     determine_ext,
     extract_attributes,
-    ExtractorError,
     int_or_none,
     parse_qs,
     smuggle_url,
index b075a02e0fe13eeeb45e07f687b98c331e8da74b..fba98d79f501bc5a5dfd67836d58049882c5b032 100644 (file)
@@ -3,16 +3,16 @@
 from .adobepass import AdobePassIE
 from ..compat import compat_str
 from ..utils import (
-    int_or_none,
+    ExtractorError,
     determine_ext,
+    int_or_none,
     parse_age_limit,
-    remove_start,
     remove_end,
+    remove_start,
+    traverse_obj,
     try_get,
-    urlencode_postdata,
-    ExtractorError,
     unified_timestamp,
-    traverse_obj,
+    urlencode_postdata,
 )
 
 
index f010fff36083b6da1dfca2c19a74509442ce7f73..276a6c7fe918a5611ea7209ab37183e2813de379 100644 (file)
@@ -4,7 +4,7 @@
     determine_ext,
     str_or_none,
     unified_timestamp,
-    url_or_none
+    url_or_none,
 )
 from ..utils.traversal import traverse_obj
 
index c6eca0c4dffc8fa82de2df62789fc2814e58e350..fac08846213986d9beb71ab3a80be32d90c56eeb 100644 (file)
@@ -1,10 +1,7 @@
 import hashlib
 
 from .common import InfoExtractor
-from ..utils import (
-    ExtractorError,
-    try_get
-)
+from ..utils import ExtractorError, try_get
 
 
 class GofileIE(InfoExtractor):
index 112293bef56c46a7ec238dacf85905690703b07e..9c1a6cb91f25f4cba1d3dffe5bd10c09ac58d886 100644 (file)
@@ -1,11 +1,8 @@
+import json
+
 from .common import InfoExtractor
 from ..compat import compat_str
-from ..utils import (
-    try_get,
-    url_or_none
-)
-
-import json
+from ..utils import try_get, url_or_none
 
 
 class GoToStageIE(InfoExtractor):
index 530bdb7270f80552882124d5e235452d3ff16e42..2551cfffdbfeff780933302a4f32d19d2e876a9a 100644 (file)
@@ -2,11 +2,11 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    xpath_text,
-    xpath_element,
     int_or_none,
     parse_duration,
     urljoin,
+    xpath_element,
+    xpath_text,
 )
 
 
index c7da8f97dee09efce63951e4444c5df13ba795f9..eb0a77952ea627f2dfdc4f3c4e3f0b968f3cbc08 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     KNOWN_EXTENSIONS,
+    determine_ext,
     str_to_int,
 )
 
index e026996da6fd6821b0446d8525aa4203357dc466..099c2a175c5b0da3ba489e527a819b10d49cabfd 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     int_or_none,
     merge_dicts,
     parse_count,
index 57b76e46b444b5c74d73b8b7ad4b123315baf155..41d50d00043666bca0e4d915895c804d97f353b9 100644 (file)
@@ -4,8 +4,8 @@
 from ..networking import Request
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     int_or_none,
     parse_age_limit,
     try_get,
index c4965f9bce850e92e3983ab5149bea3ac8feb7fd..5379b54100ea3ffdd2e297ef0e2bf339b953f74b 100644 (file)
@@ -2,8 +2,8 @@
 import random
 import re
 
-from ..compat import compat_urlparse, compat_b64decode
-
+from .common import InfoExtractor
+from ..compat import compat_b64decode, compat_urlparse
 from ..utils import (
     ExtractorError,
     int_or_none,
@@ -13,8 +13,6 @@
     update_url_query,
 )
 
-from .common import InfoExtractor
-
 
 class HuyaLiveIE(InfoExtractor):
     _VALID_URL = r'https?://(?:www\.|m\.)?huya\.com/(?P<id>[^/#?&]+)(?:\D|$)'
index 9d55ddc0212870772479b16a45c6a87b877a1db5..c28d09f34a8a66f29fd2d8cfcce27b7821f985e3 100644 (file)
@@ -1,6 +1,6 @@
 from .common import InfoExtractor
-from ..utils import ExtractorError, str_or_none, traverse_obj, unified_strdate
 from ..compat import compat_str
+from ..utils import ExtractorError, str_or_none, traverse_obj, unified_strdate
 
 
 class IchinanaLiveIE(InfoExtractor):
index 192bcfe35d21a6680f45121940733b75129ade2a..2bb48508caba6f43a6301c4033ba1d0134819e82 100644 (file)
@@ -1,3 +1,4 @@
+from .bokecc import BokeCCBaseIE
 from ..compat import (
     compat_b64decode,
     compat_urllib_parse_unquote,
@@ -6,10 +7,9 @@
 from ..utils import (
     ExtractorError,
     determine_ext,
-    update_url_query,
     traverse_obj,
+    update_url_query,
 )
-from .bokecc import BokeCCBaseIE
 
 
 class InfoQIE(BokeCCBaseIE):
index f7aa579b38d867c1d0a26c30209a2e47f42799f8..d5a3d8095f3f02d28cc7a9d324839e1b16c8be44 100644 (file)
@@ -3,12 +3,12 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     determine_ext,
     js_to_json,
-    urlencode_postdata,
-    ExtractorError,
     parse_qs,
-    traverse_obj
+    traverse_obj,
+    urlencode_postdata,
 )
 
 
index 3368ab1d93afdffb3cd0aa5a717a6bdf6e253ee8..85ed549deb2313533dcaf24e093d5d13aa9064a4 100644 (file)
@@ -4,20 +4,16 @@
 import time
 
 from .common import InfoExtractor
-from ..compat import (
-    compat_str,
-    compat_urllib_parse_urlencode,
-    compat_urllib_parse_unquote
-)
 from .openload import PhantomJSwrapper
+from ..compat import compat_str, compat_urllib_parse_unquote, compat_urllib_parse_urlencode
 from ..utils import (
+    ExtractorError,
     clean_html,
     decode_packed_codes,
-    ExtractorError,
     float_or_none,
     format_field,
-    get_element_by_id,
     get_element_by_attribute,
+    get_element_by_id,
     int_or_none,
     js_to_json,
     ohdave_rsa_encrypt,
index 713fd4ec5bd33fbe55e5f2f577197dcaccdcda23..5d6fbaa017463584d596dc0a13ae10fb3b5a9077 100644 (file)
@@ -1,12 +1,11 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
     str_or_none,
     traverse_obj,
-    urljoin
+    urljoin,
 )
 
 
index 9ac7be3074b7a5a8854c59b4620ed4f97b41d52b..55c4165215c1fc6a445f28b2bac2f7b8b535e20d 100644 (file)
@@ -1,23 +1,22 @@
 import json
 
-from .common import InfoExtractor
 from .brightcove import BrightcoveNewIE
-
+from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    JSON_LD_RE,
+    ExtractorError,
     base_url,
     clean_html,
     determine_ext,
     extract_attributes,
-    ExtractorError,
     get_element_by_class,
-    JSON_LD_RE,
     merge_dicts,
     parse_duration,
     smuggle_url,
     try_get,
-    url_or_none,
     url_basename,
+    url_or_none,
     urljoin,
 )
 
index e23fdfd6ade620b878fd098b74ec5af2ad2cf26c..a11f3f11d862315959c0188ac4fb2b284d9548f0 100644 (file)
@@ -1,9 +1,9 @@
 import functools
-import urllib.parse
-import urllib.error
 import hashlib
 import json
 import time
+import urllib.error
+import urllib.parse
 
 from .common import InfoExtractor
 from ..utils import (
index a2bbba3979b6a05e1c8a5327b72dfd13cfc00692..8557a81ad454f89224b420124b4c118be92bd539 100644 (file)
@@ -1,8 +1,8 @@
 import hashlib
 import random
 
-from ..compat import compat_str
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
     clean_html,
     int_or_none,
index 6c650568acda79b96cc1f02fad5a430f2903b1c3..19d2b923b5929ebaa32fe1486cee0eeeff171004 100644 (file)
@@ -1,5 +1,6 @@
 import re
 
+from .common import InfoExtractor
 from ..utils import (
     ExtractorError,
     clean_html,
@@ -9,9 +10,8 @@
     smuggle_url,
     traverse_obj,
     try_call,
-    unsmuggle_url
+    unsmuggle_url,
 )
-from .common import InfoExtractor
 
 
 def _parse_japanese_date(text):
index 245fe73d4abfde00c72d743dc096b38b26304614..8069fea4c936777efae1d6adcb2207018c5b41bd 100644 (file)
@@ -1,8 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    ExtractorError,
-    unified_strdate
-)
+from ..utils import ExtractorError, unified_strdate
 
 
 class JoveIE(InfoExtractor):
index 3e2e6271255e936200ef4d31f4c7134c6e447654..00ac7ccca31c1416beabf136e2379dfdf016f384 100644 (file)
@@ -1,6 +1,6 @@
 import base64
-import re
 import json
+import re
 
 from .common import InfoExtractor
 from ..utils import (
index 43055e89debe5375e6ef77ebccdc6dba51222ca8..563aa2d729ace7485af9646f6484c7a0b65ac7bf 100644 (file)
@@ -3,8 +3,8 @@
 from ..utils import (
     ExtractorError,
     int_or_none,
-    strip_or_none,
     str_or_none,
+    strip_or_none,
     traverse_obj,
     unified_timestamp,
 )
index 95e2deea5bdde41625ec86617512e872c5c49fbf..4752d5a55817c9da75858999511ada55dc49428a 100644 (file)
@@ -4,18 +4,18 @@
 
 from .common import InfoExtractor
 from ..compat import (
-    compat_urlparse,
     compat_parse_qs,
+    compat_urlparse,
 )
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     format_field,
     int_or_none,
-    unsmuggle_url,
+    remove_start,
     smuggle_url,
     traverse_obj,
-    remove_start
+    unsmuggle_url,
 )
 
 
index 8f247b305a8bae5bf2ae3bced1db6a0872b97412..3d74c745c4d52cce75410279048f9e53daa2611d 100644 (file)
@@ -1,7 +1,7 @@
-import time
+import hashlib
 import random
 import string
-import hashlib
+import time
 import urllib.parse
 
 from .common import InfoExtractor
index 3c93dedac2f9ea2a886e840286213bce83f0b02c..b77667160c4aee7b86f649d6310d3727246ba19c 100644 (file)
@@ -3,10 +3,10 @@
 from .common import InfoExtractor
 from ..compat import compat_urlparse
 from ..utils import (
-    get_element_by_id,
-    clean_html,
     ExtractorError,
     InAdvancePagedList,
+    clean_html,
+    get_element_by_id,
     remove_start,
 )
 
index 9846319e0c3da3e7f7e6cf3928fa678ec3c0b9d7..62874195f627445d0219a3cd3976adad3dd4d068 100644 (file)
@@ -1,5 +1,5 @@
-from .common import InfoExtractor
 from .arkena import ArkenaIE
+from .common import InfoExtractor
 
 
 class LcpPlayIE(ArkenaIE):  # XXX: Do not subclass from concrete IE
index 10fb5d47993a3d7bd465e2024ce7f94d34d12bbb..1a3ada1e5d1344c518f9a0492197cc53e76b8a8a 100644 (file)
@@ -4,8 +4,8 @@
 from ..utils import (
     determine_ext,
     determine_protocol,
-    parse_duration,
     int_or_none,
+    parse_duration,
 )
 
 
index 629d208fcce3b30a777d75283f9791f0d22a6144..90f0268d7b34b23e936972a920edc359e9e0e83b 100644 (file)
@@ -2,9 +2,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
-    ExtractorError,
     float_or_none,
     int_or_none,
     str_or_none,
index 5d61a607f7cf30abae973276e3f13b5db5cac9db..a113b3d0db7f5318b306b170d93f9820da6d115f 100644 (file)
@@ -11,9 +11,9 @@
     compat_urllib_parse_urlencode,
 )
 from ..utils import (
+    ExtractorError,
     determine_ext,
     encode_data_uri,
-    ExtractorError,
     int_or_none,
     orderedSet,
     parse_iso8601,
index b76ca090818e3cba8568766d2215401b443af80e..2979939396094fbaa4417dfbaf2f78743b158dbb 100644 (file)
@@ -1,7 +1,6 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     determine_ext,
     float_or_none,
index 919cfcb374b24291d6a874a1117735f9e15a7f53..ea150a58b0dddffe2bc1eddbf6266b196c2f2749 100644 (file)
@@ -6,8 +6,8 @@
     compat_urlparse,
 )
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     parse_iso8601,
     remove_end,
index 4e50f106f97457c9c629ca7d7a76ec8ec43c0519..1ff091ddb7d6ea19e8bdccdaca58b353d4075e3f 100644 (file)
@@ -3,13 +3,13 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
     determine_ext,
     float_or_none,
     int_or_none,
     smuggle_url,
     try_get,
     unsmuggle_url,
-    ExtractorError,
 )
 
 
index e12f467ef51cc7932aa2228d6bbd5c84a5c48f83..2a7c6f0e036699aa7c95bcb33d397e155e6deaff 100644 (file)
@@ -7,8 +7,8 @@
     extract_attributes,
     float_or_none,
     int_or_none,
-    srt_subtitles_timecode,
     mimetype2ext,
+    srt_subtitles_timecode,
     traverse_obj,
     try_get,
     url_or_none,
index fd9bba8bcb98c2ee77e33457f64aa8dc6ce1822a..fa12a6a8dfedd44096f069c6fdc807c5e83a2942 100644 (file)
@@ -1,14 +1,13 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
     js_to_json,
     parse_duration,
     traverse_obj,
     try_get,
-    urljoin
+    urljoin,
 )
 
 
index 2792e6e7078a74e5c728b2f0ad82b7b22e0b7c60..44c321c26251fcfbde0e229ec7a71a2c68f4c39f 100644 (file)
@@ -1,10 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    clean_html,
-    int_or_none,
-    traverse_obj
-)
-
+from ..utils import clean_html, int_or_none, traverse_obj
 
 _API_URL = 'https://dak1vd5vmi7x6.cloudfront.net/api/v1/publicrole/{}/{}?id={}'
 
index 675ad8ccc1115c3ba1151c97f67daae0411794b3..d040fb48f1f655be4a4f6d1c2f0dbcf1dfd2bf7e 100644 (file)
@@ -4,8 +4,8 @@
 from ..compat import compat_str
 from ..utils import (
     ExtractorError,
-    format_field,
     float_or_none,
+    format_field,
     int_or_none,
     str_or_none,
     traverse_obj,
index fcc4827b5c9180d858c27c6bec5810d619248ac7..c015977626f6087bdcc1660943819d8904f720dc 100644 (file)
@@ -1,14 +1,11 @@
+from .common import InfoExtractor
+from ..compat import compat_str, compat_urllib_parse_unquote
 from ..utils import (
     ExtractorError,
     traverse_obj,
     unified_strdate,
     url_or_none,
 )
-from .common import InfoExtractor
-from ..compat import (
-    compat_urllib_parse_unquote,
-    compat_str
-)
 
 
 class MediaKlikkIE(InfoExtractor):
index e04a1ce9017140ee9add71a878b6e80c1c940dd6..b7df5c75ab21acc1092d1cb7dadab2ea6f349fea 100644 (file)
@@ -5,11 +5,11 @@
 from ..utils import (
     ExtractorError,
     GeoRestrictedError,
-    int_or_none,
     OnDemandPagedList,
+    int_or_none,
     try_get,
-    urljoin,
     update_url_query,
+    urljoin,
 )
 
 
index 7ea78ab69184ae2f6246f34f8def4dee7e782953..d3fec4ec2b091802ab9588eed25883be2c5f0d54 100644 (file)
@@ -1,5 +1,5 @@
-import re
 import json
+import re
 
 from .common import InfoExtractor
 from ..compat import (
     ExtractorError,
     float_or_none,
     mimetype2ext,
+    smuggle_url,
     str_or_none,
     try_call,
     try_get,
-    smuggle_url,
     unsmuggle_url,
     url_or_none,
     urljoin,
 )
 
-
 _ID_RE = r'(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14})'
 
 
index 5f5f160876c489da0a7503d38c3cb086d9955467..f6a0b416d6e11c597bd11769c9e61f70218b34c2 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..utils import (
     merge_dicts,
-    parse_iso8601,
     parse_duration,
+    parse_iso8601,
     parse_resolution,
     try_get,
     url_basename,
index f64d575dcc8126f797bdf4e09804c0ca2d5ae28c..caf60c80591092748f714259130e9c21226af753 100644 (file)
@@ -4,11 +4,11 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
+    OnDemandPagedList,
     determine_ext,
     dict_get,
-    ExtractorError,
     float_or_none,
-    OnDemandPagedList,
     traverse_obj,
 )
 
index 38cc0c2741e8ac32af627f0c292516ff05a1a91a..979584ed6a2ee3afda3338e62263048b1d66327d 100644 (file)
@@ -1,11 +1,11 @@
-import re
 import json
+import re
 
 from .common import InfoExtractor
 from .youtube import YoutubeIE
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     get_element_by_id,
 )
 
index a69a12e18cf53de0e79341c18cfd624efaed978d..411d41cb0a26f260887436bef97516323be811df 100644 (file)
@@ -8,10 +8,10 @@
     get_element_html_by_class,
     get_element_text_and_html_by_tag,
     int_or_none,
-    unified_strdate,
     strip_or_none,
     traverse_obj,
     try_call,
+    unified_strdate,
 )
 
 
index 35c57bc703349aa98208dbe62610f032b32d7239..ed5be4fa65de446da0a95068a94e60afd71991db 100644 (file)
@@ -1,5 +1,5 @@
-from .dailymotion import DailymotionIE
 from .common import InfoExtractor
+from .dailymotion import DailymotionIE
 
 
 class MoviepilotIE(InfoExtractor):
index cdd8ba4dced11920a9a8336ac16f8bad10a02190..6e0ea2652a1f9003e6aee205ee430574fabbd2f1 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    unescapeHTML,
     parse_duration,
+    unescapeHTML,
 )
 
 
index 77d1806a3a43ce8f8989012ec9533e1a812b06e9..79728e10631755ab4ee4d2d5fa044670b24c8eda 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     unescapeHTML,
 )
index edc41443ab4fdf021b5423ed9c13e40cafca404e..8a8a5fec7c16acfea84a18af6e5f5b4fa3a64f99 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    unified_timestamp,
     extract_attributes,
+    unified_timestamp,
 )
 
 
index 885557e91c2cc6791e694689a92db2e03391e777..26400e3833758915fca57243eaace05b2f7e86b3 100644 (file)
@@ -4,8 +4,8 @@
 import itertools
 import json
 import re
-import urllib.parse
 import time
+import urllib.parse
 
 from .common import InfoExtractor
 from ..utils import (
index 81d11e3a5061a0cc3e490ad7556801f2d2fe1efc..ec4d6368e442e5fdfcf5553997f65a01086bef96 100644 (file)
@@ -7,9 +7,9 @@
     compat_urllib_parse_unquote,
 )
 from ..utils import (
+    OnDemandPagedList,
     int_or_none,
     merge_dicts,
-    OnDemandPagedList,
     parse_duration,
     parse_iso8601,
     parse_qs,
index 267fa8353231aebbe8c0e8dbceae060a45a0d547..e88f98abf53bb1ba50f5559a4a4308b4411a6382 100644 (file)
@@ -3,9 +3,9 @@
 import re
 import xml.etree.ElementTree
 
+from .adobepass import AdobePassIE
 from .common import InfoExtractor
 from .theplatform import ThePlatformIE, default_ns
-from .adobepass import AdobePassIE
 from ..compat import compat_urllib_parse_unquote
 from ..networking import HEADRequest
 from ..utils import (
index 41ea3629a97b0ede3225356502166b22ee15c3e7..243221d46be416604dd2ce8c7c9986d075edb1ca 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..compat import compat_urllib_parse_urlparse
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     merge_dicts,
     parse_iso8601,
index febad8fdf30a9f8ae05e4ba774eab7a2ef43a154..be732a32ffa986334011a51fa10b811bb4ef911d 100644 (file)
@@ -1,11 +1,5 @@
 from .common import InfoExtractor
-
-
-from ..utils import (
-    try_get,
-    unified_strdate,
-    unified_timestamp
-)
+from ..utils import try_get, unified_strdate, unified_timestamp
 
 
 class NFHSNetworkIE(InfoExtractor):
index 2521c40e0836ab3c6e00282e480fe7d9fb922562..64cddb408728237f3942fb350fe70328501293b1 100644 (file)
@@ -3,8 +3,8 @@
 from ..utils import (
     determine_ext,
     int_or_none,
-    parse_iso8601,
     parse_duration,
+    parse_iso8601,
 )
 
 
index 900d9ba60fb3a943205a300deeaa8247c404a8ec..0b4f47b481202b70987ab689467ba2249f6708dd 100644 (file)
@@ -1,5 +1,5 @@
-from .common import InfoExtractor
 from .brightcove import BrightcoveNewIE
+from .common import InfoExtractor
 from ..utils import ExtractorError
 from ..utils.traversal import traverse_obj
 
index c655b75f469586dfe465fe98ffa07f6745afeadc..b7170b0e708137d17c75df29fdcd5c76d3ceb2fb 100644 (file)
@@ -2,8 +2,8 @@
 from ..compat import compat_str
 from ..utils import (
     ExtractorError,
-    int_or_none,
     float_or_none,
+    int_or_none,
     smuggle_url,
     str_or_none,
     try_get,
index 35d1311dcdcdd7165e2f9a56c575656fd871de37..249e7cd33784d76ce52e54d0f0fff95d4a00b287 100644 (file)
@@ -1,13 +1,14 @@
+import random
+import re
+
 from .common import InfoExtractor
 from ..compat import compat_urlparse
 from ..utils import (
+    determine_ext,
     parse_count,
-    unified_timestamp,
     remove_end,
-    determine_ext,
+    unified_timestamp,
 )
-import re
-import random
 
 
 class NitterIE(InfoExtractor):
index cddc72f716e54181f67a5131c5958ac250056704..513529beaa6fd2ebda80afe368ad292185e12bf5 100644 (file)
@@ -1,11 +1,11 @@
 from .common import InfoExtractor
 from ..utils import (
-    js_to_json,
-    mimetype2ext,
     determine_ext,
-    update_url_query,
     get_element_by_attribute,
     int_or_none,
+    js_to_json,
+    mimetype2ext,
+    update_url_query,
 )
 
 
index c7b80380362ca84bfaf5cc6bb4c5f5edf10b7fd1..19cb972c0a41582a3b1ece9018b5d243bfb71421 100644 (file)
@@ -1,11 +1,11 @@
 from .common import InfoExtractor
+from ..compat import compat_urllib_parse_unquote
 from ..utils import (
-    int_or_none,
     find_xpath_attr,
-    xpath_text,
+    int_or_none,
     update_url_query,
+    xpath_text,
 )
-from ..compat import compat_urllib_parse_unquote
 
 
 class NozIE(InfoExtractor):
index ec54041f123ff9c2e91f27791e50a8e135ffb0bc..5670445aa88a14a0de4dc75a9a4a37830622a2a1 100644 (file)
@@ -1,9 +1,5 @@
 from .common import InfoExtractor
-
-from ..utils import (
-    float_or_none,
-    xpath_text
-)
+from ..utils import float_or_none, xpath_text
 
 
 class NuevoBaseIE(InfoExtractor):
index 6ac351cb03d96adb85111d41804712d2615260c0..0ef0ec70b9bd78ec0842a1143e53a946a55eefe8 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    parse_duration,
     int_or_none,
+    parse_duration,
     strip_or_none,
     traverse_obj,
     url_or_none,
index 062f9a875bdd94a36210fc77187b534515820583..0a12aea714827ad1b6256ae0857ee9674ca275d9 100644 (file)
@@ -3,10 +3,7 @@
 from .brightcove import BrightcoveNewIE
 from .common import InfoExtractor
 from ..compat import compat_str
-from ..utils import (
-    ExtractorError,
-    traverse_obj
-)
+from ..utils import ExtractorError, traverse_obj
 
 
 class NZHeraldIE(InfoExtractor):
index b852160b9f7b8a7ee97b9beeb8d105063abb89b2..8321b0741810d1f852b9a23e800b6e5e1472c9a8 100644 (file)
@@ -7,7 +7,7 @@
     GeoRestrictedError,
     float_or_none,
     traverse_obj,
-    try_call
+    try_call,
 )
 
 
index 61d1f404863fd0c9a15e08d60621353c5277807e..5507d2fda3730d91931a97cdac8bf173e71abe5b 100644 (file)
@@ -1,8 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    int_or_none,
-    try_get
-)
+from ..utils import int_or_none, try_get
 
 
 class OlympicsReplayIE(InfoExtractor):
index a46211e77728b4d5d64a0be5bd30186744cd7ebe..351b397de72c0690ac9c2f99b159bf42205db8f5 100644 (file)
@@ -1,10 +1,6 @@
 from .brightcove import BrightcoveNewIE
 from .common import InfoExtractor
-
-from ..utils import (
-    ExtractorError,
-    traverse_obj
-)
+from ..utils import ExtractorError, traverse_obj
 
 
 class OneNewsNZIE(InfoExtractor):
index 0d59e8cb448a47fbbe3e16d963cde6dc5d800404..da10f3779b1bd2bb7c56df38c46535ed6c15f6f7 100644 (file)
@@ -2,13 +2,13 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
+    NO_DEFAULT,
     ExtractorError,
+    determine_ext,
     float_or_none,
     get_element_by_class,
     int_or_none,
     js_to_json,
-    NO_DEFAULT,
     parse_iso8601,
     remove_start,
     strip_or_none,
index 1fafd9afb40b60c7562008ad2b54042f268208b5..12bf557046bd1d73ff9b2cb926e6ee101866cc24 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     parse_iso8601,
     traverse_obj,
index 82a81c6c261e0f5704e2e1ee7ae14eafa818f3f0..c9a96aeb4dececa89b7cd3207012231a24d58bbc 100644 (file)
@@ -1,4 +1,5 @@
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
     ExtractorError,
     get_first,
@@ -8,7 +9,6 @@
     unified_strdate,
     unified_timestamp,
 )
-from ..compat import compat_str
 
 
 class OpenRecBaseIE(InfoExtractor):
index d49909d528ac467d3cd0f26242d6ba72b97f76f3..0e7a8484ea1c3e0e2ae2ece3cda561ceff7e6bc8 100644 (file)
@@ -1,4 +1,5 @@
 import re
+
 from .common import InfoExtractor
 from ..compat import compat_urlparse
 from ..utils import (
index 56203306fb73f652041f3f379edffa583e86e46f..3e969c84679f78a991da434f26ce2de82109a729 100644 (file)
@@ -3,13 +3,12 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     # remove_end,
     str_or_none,
     strip_or_none,
     unified_timestamp,
-    # urljoin,
 )
 
 
index 63c5fd68f138a9f597eb6187e690983e2611cd0a..6b25962361baf3148e690aa002d77216bd8b0baf 100644 (file)
@@ -5,17 +5,13 @@
 import random
 
 from .common import InfoExtractor
-from ..compat import (
-    compat_urllib_parse_urlparse,
-    compat_urlparse
-)
-
+from ..compat import compat_urllib_parse_urlparse, compat_urlparse
 from ..utils import (
-    bug_reports_message,
     ExtractorError,
+    OnDemandPagedList,
+    bug_reports_message,
     get_first,
     int_or_none,
-    OnDemandPagedList,
     parse_qs,
     srt_subtitles_timecode,
     traverse_obj,
index 7e472a63e005eeb47b058d15c2b8c95e4283bd36..3f19803c012d9dcbdc6ac1572ff29b16fe74710a 100644 (file)
@@ -1,7 +1,7 @@
 import itertools
 
-from .common import InfoExtractor
 from .cbs import CBSBaseIE
+from .common import InfoExtractor
 from ..utils import (
     ExtractorError,
     int_or_none,
index 2bb2ea9f19622fb0c663c8d3bc029e9ddb2b2eba..f6f5a5c3e69a1592a89f5c40dd9fb2e42814a757 100644 (file)
@@ -3,10 +3,11 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    US_RATINGS,
     ExtractorError,
     determine_ext,
-    int_or_none,
     float_or_none,
+    int_or_none,
     js_to_json,
     orderedSet,
     strip_jsonp,
@@ -14,7 +15,6 @@
     traverse_obj,
     unified_strdate,
     url_or_none,
-    US_RATINGS,
 )
 
 
index e27e5a7bac5e42e6321a24385fa470b00fa22294..086eaaf000e10d8de86af2faebc850471655ff6c 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..utils import (
     qualities,
-    unified_timestamp,
     traverse_obj,
+    unified_timestamp,
 )
 
 
index 730b2393e0a93898a4418a27f6de18076b437481..b7919c0734bb9c42b6b3e280623de98baa26816e 100644 (file)
@@ -4,6 +4,7 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    OnDemandPagedList,
     format_field,
     int_or_none,
     parse_resolution,
@@ -12,7 +13,6 @@
     unified_timestamp,
     url_or_none,
     urljoin,
-    OnDemandPagedList,
 )
 
 
index 97a9bf5745b969f28ff265f85f433e0285169ffe..8870d7b9924c2b2d6f49f974cb57eb0e86958f0c 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    dict_get,
     ExtractorError,
+    dict_get,
     int_or_none,
     join_nonempty,
     parse_iso8601,
index d67f6005c1795a08738002eb28c8bf3d99d2005c..c72a3876c6a26ff0071612e87e762874d98a8aa4 100644 (file)
@@ -1,11 +1,11 @@
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     parse_qs,
-    xpath_text,
     qualities,
+    xpath_text,
 )
 
 
index 166b98c4a2b530e91ddae9dc8b9ff80dd112a9a5..d978c080b354e43edb14f2f9dde7310aaca9ceb5 100644 (file)
@@ -4,8 +4,8 @@
     compat_str,
 )
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     int_or_none,
     str_or_none,
     try_get,
index c418f88cb1d00ffd13822df1ce43846cd015d244..a01b422901fa643dae07d4759e06239c38f04dd4 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..compat import (
-    compat_urlparse,
     compat_urllib_parse_urlencode,
+    compat_urlparse,
 )
 from ..utils import (
     ExtractorError,
index 809b65608f2b1bc5c4c6b54a673913d446695fe9..60c9efffea5e17de6437b767d339bc03edfea249 100644 (file)
@@ -10,8 +10,8 @@
     compat_urlparse,
 )
 from ..utils import (
-    dict_get,
     ExtractorError,
+    dict_get,
     float_or_none,
     int_or_none,
     parse_duration,
index 1cebb365e4c936154dd742f795240da14dcb0cc6..ecf2132b4ba3f31b06219e2f087878d79cb278f4 100644 (file)
@@ -3,10 +3,10 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     int_or_none,
     try_get,
     url_or_none,
-    ExtractorError,
 )
 
 
index 51a9cf38f73ffe03ef7217b2976b4fc5b38de1c6..d711d3e67d7faf15101a60a3f0cf832c5e1ba19f 100644 (file)
@@ -1,9 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    int_or_none,
-    parse_duration,
-    parse_iso8601
-)
+from ..utils import int_or_none, parse_duration, parse_iso8601
 
 
 class PornFlipIE(InfoExtractor):
index 2e51b4f6b25dfd513fa38be3cb68f5912e9e9f01..b8e8701a8fbf377f20f532626e63db059393c753 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     float_or_none,
+    int_or_none,
     unified_strdate,
 )
 
index 5bb1832702e0e3871dc154a50d81e9aaf90d5c3f..338794ed5d4f46bbe00de918b3ef62aad77580a1 100644 (file)
@@ -1,14 +1,15 @@
 import itertools
+
 from .common import InfoExtractor, SearchInfoExtractor
 from ..utils import (
-    urljoin,
-    traverse_obj,
+    clean_html,
     int_or_none,
     mimetype2ext,
-    clean_html,
-    url_or_none,
-    unified_timestamp,
     str_or_none,
+    traverse_obj,
+    unified_timestamp,
+    url_or_none,
+    urljoin,
 )
 
 
index 4b8e5e90de14c8d72a741bfeb00a205877083e28..fc4c29e95fea8f732c3f85d2b9938e1186a15f3d 100644 (file)
@@ -3,8 +3,8 @@
 from ..networking.exceptions import HTTPError
 from ..utils import (
     ExtractorError,
-    int_or_none,
     float_or_none,
+    int_or_none,
     parse_resolution,
     str_or_none,
     try_get,
index aa690d492005450c37280345f7934fe0b34ed4e3..cb00de2d527cef1ea040f6b218811ba5632f1b36 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import traverse_obj
 
 
index 92858259a5f5257f9b5c94b8ebbb53018a7d58ed..90141e63b4808913328bf43bb62807c1de0cac09 100644 (file)
@@ -4,8 +4,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     strip_jsonp,
     unescapeHTML,
 )
index 1a5a6355a693ec4ae9a4163762906aed589d462b..4a09dcdfc086fb0494ad8daf973e5148a4646728 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     unified_strdate,
 )
index 38f8cf7865d41dfcb8bf3db575de341e632d9586..0c219778fa3d31fa2b968872477a204f84da9cc7 100644 (file)
@@ -14,7 +14,7 @@
     try_call,
     unified_strdate,
     update_url,
-    urljoin
+    urljoin,
 )
 from ..utils.traversal import traverse_obj
 
index 67520172e8b07c6e1463023eb22635c0857d470d..632c8c281bc54b9f4ca65a6609a4a7afa5288d83 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    traverse_obj,
     strip_or_none,
+    traverse_obj,
 )
 
 
index 3c00183be62dc7ae8745b44fceae142c27d83bfe..325e278fc7b7e47d3074adc608b1a8d6cf74ffc7 100644 (file)
@@ -1,13 +1,13 @@
 import json
 
+from .common import InfoExtractor
 from ..utils import (
     ExtractorError,
     format_field,
     traverse_obj,
     try_get,
-    unified_timestamp
+    unified_timestamp,
 )
-from .common import InfoExtractor
 
 
 class RadLiveIE(InfoExtractor):
index c1fc65c81fd95a35106f533471939b45106ef60d..c2e7a6fb8f8e4f9cde61f918cf137327c45ed2da 100644 (file)
@@ -3,11 +3,11 @@
 from .common import InfoExtractor
 from ..networking import HEADRequest
 from ..utils import (
+    ExtractorError,
+    GeoRestrictedError,
     clean_html,
     determine_ext,
-    ExtractorError,
     filter_dict,
-    GeoRestrictedError,
     int_or_none,
     join_nonempty,
     parse_duration,
index 54f194cbda7825d973cd2bf0e6ed506e8f28afdc..5f2d0c103416d19d8907574f78ee5665c886a20c 100644 (file)
@@ -1,7 +1,7 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import parse_qs, remove_start, traverse_obj, ExtractorError
+from ..utils import ExtractorError, parse_qs, remove_start, traverse_obj
 
 
 class RbgTumIE(InfoExtractor):
index 6a7c7f399160de7ffd6ab962143629913806a66b..9c382e257d23afe2223109de015ac44f11ef99ac 100644 (file)
@@ -5,11 +5,11 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    dict_get,
     ExtractorError,
+    dict_get,
     strip_or_none,
     traverse_obj,
-    try_get
+    try_get,
 )
 
 
index 1a1c6634e325bd298816a3cd4fc36d28d8e82d19..cc76b898add483428b9cc057e8cebe52424d7de4 100644 (file)
@@ -1,10 +1,10 @@
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
+    js_to_json,
     parse_duration,
     parse_iso8601,
-    js_to_json,
 )
-from ..compat import compat_str
 
 
 class RDSIE(InfoExtractor):
index d1de2490fc7742d08a7f718d71a21e1a3a150d3d..fac51b9efeed0b5290507b359f2725c5c3d6d4ce 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    float_or_none,
     ExtractorError,
+    float_or_none,
 )
 
 
index 44c0353da6365a6b95d4f9a03b861b3e7b4f56f2..bc3e5f7eeed630947f80eb0bd3bc88017475178e 100644 (file)
@@ -10,8 +10,8 @@
     try_get,
     unescapeHTML,
     update_url_query,
-    urlencode_postdata,
     url_or_none,
+    urlencode_postdata,
 )
 
 
index f9453202b741659b51fd9ed1281db108927ab750..d0546bbfaff59ec655078dcac05fd767b61eae6a 100644 (file)
@@ -5,10 +5,10 @@
 from ..networking.exceptions import HTTPError
 from ..utils import (
     ExtractorError,
+    OnDemandPagedList,
     int_or_none,
     qualities,
     try_get,
-    OnDemandPagedList,
 )
 
 
index 965abbee8a78f71d3dee28d49280dec3e8f4da3b..14ed0edab2873cd45b79627b96af56208ab42a5e 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     merge_dicts,
     str_to_int,
index 0a8f13b9f63f11fe3af6b7a24f4ec2c9c785c2ee..9c9bac6af9e28bd430ffed2bb07bcb1274d2ab8e 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    js_to_json,
     int_or_none,
+    js_to_json,
     unescapeHTML,
 )
 
index 8d29b302bb1cf1f32c52619d9f742baaf6b8060f..bc59ed07e4ce0cdeb63a602043b43610cdac934f 100644 (file)
@@ -1,5 +1,5 @@
-from .common import InfoExtractor
 from .brightcove import BrightcoveLegacyIE
+from .common import InfoExtractor
 from ..compat import (
     compat_parse_qs,
     compat_urlparse,
index 7ba80d4ba767a6227b57e0768f6df6a0cfd0010f..729804d23ec916a2494e9bf85e88b4f87db589ef 100644 (file)
@@ -3,13 +3,13 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
     float_or_none,
     parse_iso8601,
     str_or_none,
     try_get,
     unescapeHTML,
     url_or_none,
-    ExtractorError,
 )
 
 
index 5928a207aef71b8afdcdc9bae8754d1d05e5bc57..ec78d0a669414a48453bd4943c00c4645272210c 100644 (file)
@@ -1,9 +1,10 @@
-from .common import InfoExtractor
-from ..utils import js_to_json
-import re
+import base64
 import json
+import re
 import urllib.parse
-import base64
+
+from .common import InfoExtractor
+from ..utils import js_to_json
 
 
 class RTPIE(InfoExtractor):
index 741c472621a1c26d38c00acb13f29b6411f87c3f..e7dcd5fd611d22c26ad88990af2a5b697caf0bb8 100644 (file)
@@ -1,16 +1,17 @@
 import re
 
-from .common import InfoExtractor, ExtractorError
+from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
-    int_or_none,
     float_or_none,
+    int_or_none,
     js_to_json,
     mimetype2ext,
     traverse_obj,
-    urljoin,
     url_or_none,
+    urljoin,
 )
 
 
index a84a78da8dceffaa35fa1c479423bd4e6afe55c2..defb8d741fa8f77b8186e62fde926ea76d7730db 100644 (file)
@@ -1,7 +1,6 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     parse_duration,
     traverse_obj,
index 287824d08a79b5dcc6c197be13985f02c3c300a7..eb12f32faf9bc33e9af7b4db30c898a290d7c0db 100644 (file)
@@ -5,8 +5,8 @@
     compat_str,
 )
 from ..utils import (
-    determine_ext,
     bool_or_none,
+    determine_ext,
     int_or_none,
     parse_qs,
     try_get,
index d7f9a73377de50d89f1b879935d984ce0b84adb0..726d49111afb8d98da837a3646932e82d757272d 100644 (file)
@@ -1,11 +1,7 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import (
-    ExtractorError,
-    int_or_none,
-    str_to_int
-)
+from ..utils import ExtractorError, int_or_none, str_to_int
 
 
 class RUTVIE(InfoExtractor):
index 33f6652df5651dfcbd0f31b995157a9729fb3cbf..dc61387be70daa29b928e42cbcba5bd03cbb1fe2 100644 (file)
@@ -4,8 +4,8 @@
 from .common import InfoExtractor
 from ..compat import compat_urllib_parse_urlparse
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     find_xpath_attr,
     int_or_none,
     traverse_obj,
index 8d322d7105b06b4901e8e28b615983c191045666..17dff0afa28a44fd4a585369afbf614d68a4abf7 100644 (file)
@@ -2,7 +2,6 @@
 import re
 
 from .common import InfoExtractor
-
 from ..compat import (
     compat_parse_qs,
     compat_urlparse,
index 3912f778658e1583b8d41974ef97aafe70d83697..85d51cd59a840653faa38255ee3572213f697706 100644 (file)
@@ -1,8 +1,8 @@
-import json
 import hashlib
+import json
 
-from .aws import AWSIE
 from .anvato import AnvatoIE
+from .aws import AWSIE
 from .common import InfoExtractor
 from ..utils import (
     smuggle_url,
index 9c2ca8c5185ca3dfff3ee4b470bc96f40d1bc22c..fc91d60e179e4c38fa3087874eaf6a72d6b51c65 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    decode_packed_codes,
     ExtractorError,
+    decode_packed_codes,
     urlencode_postdata,
 )
 
index 1ecea71fcc2554c798e47e613fae9bb4f635aec2..99fcf51f1624629c1f69830206a483e0677090f2 100644 (file)
@@ -2,12 +2,12 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    determine_protocol,
     float_or_none,
-    parse_iso8601,
-    update_url_query,
     int_or_none,
-    determine_protocol,
+    parse_iso8601,
     unescapeHTML,
+    update_url_query,
 )
 
 
index 79e88858356f470e48095b88e1ca7f1159cbcc05..b31d566dfe444096240fa0a0fcf6be7d72943c25 100644 (file)
@@ -4,11 +4,11 @@
     compat_urllib_parse_urlparse,
 )
 from ..utils import (
-    urljoin,
     int_or_none,
     parse_codecs,
     parse_qs,
     try_get,
+    urljoin,
 )
 
 
index d509e8879c5d18fe8ebb1809973f134528a64632..89aee27280005f56c08db1ae198833ad3f1e246a 100644 (file)
@@ -5,9 +5,9 @@
 from .aws import AWSIE
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    clean_html,
     ExtractorError,
     InAdvancePagedList,
+    clean_html,
     int_or_none,
     parse_iso8601,
     str_or_none,
index ec9938b8cb8b5afa55e5575869a72bec63f419ee..cca86ed6c0e40e3766be20c7e2e87a0d3d084eb8 100644 (file)
@@ -4,8 +4,8 @@
     compat_b64decode,
 )
 from ..utils import (
-    bytes_to_intlist,
     ExtractorError,
+    bytes_to_intlist,
     intlist_to_bytes,
     unified_strdate,
 )
index ef93b92768d85ce4ee5704bf366d07a892ef7838..44619a16c664b18369f38fa3b30ac0c098ebfdac 100644 (file)
@@ -6,8 +6,8 @@
     determine_ext,
     int_or_none,
     parse_qs,
-    try_get,
     qualities,
+    try_get,
 )
 
 
index 867782778bee5a12e0cdfe80272f468ff5dcc1d4..234703cf705bcafcc06f1ff461c7585a570a35b3 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    parse_iso8601,
     parse_duration,
+    parse_iso8601,
 )
 
 
index c0ff4f9aa86e489f540c921ba3dd40f777d15dd2..a41ad303a578057371d45bcf98f6f2af74e5eff5 100644 (file)
@@ -8,13 +8,13 @@
 )
 from ..utils import (
     ExtractorError,
-    int_or_none,
     float_or_none,
-    url_or_none,
-    unified_timestamp,
+    int_or_none,
+    traverse_obj,
     try_get,
+    unified_timestamp,
+    url_or_none,
     urljoin,
-    traverse_obj,
 )
 
 
index 493eea2a69227a54b2c630205bbe41e9c6538a97..773ddd34458ab0837fb4f38b6f803f977a2f563d 100644 (file)
@@ -1,8 +1,5 @@
 from .common import InfoExtractor
-from ..utils import (
-    try_get,
-    unified_timestamp
-)
+from ..utils import try_get, unified_timestamp
 
 
 class SovietsClosetBaseIE(InfoExtractor):
index 43da34a325b01035d190863786458fddccbb4fb2..c73f7971d002a3acdb8620a1e8d0840f5b32894a 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     merge_dicts,
     parse_duration,
     parse_resolution,
index a98584a27d5fea716d4778f0c2ec85577afaf64e..bdb8ef49682c2e7e1967deb9c7271c40798e0d20 100644 (file)
@@ -4,11 +4,11 @@
 from ..utils import (
     ExtractorError,
     int_or_none,
-    xpath_attr,
-    xpath_text,
-    xpath_element,
     unescapeHTML,
     unified_timestamp,
+    xpath_attr,
+    xpath_element,
+    xpath_text,
 )
 
 
index bb6e8f1ea561c7f3576d4668d026a12c3e9c7390..312a4fde080e77297a48f3e3fdb7d2d9eff20ead 100644 (file)
@@ -3,10 +3,10 @@
     compat_str,
 )
 from ..utils import (
-    clean_html,
     ExtractorError,
-    traverse_obj,
+    clean_html,
     int_or_none,
+    traverse_obj,
 )
 
 
index 2fd200f87af87b37318f0838e77d20adc0f8e85a..46a15e6a18f8d915aabd6ac889d53c37c652cca0 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    ExtractorError,
     clean_html,
     clean_podcast_url,
-    ExtractorError,
     int_or_none,
     str_or_none,
     try_get,
index 566f777827341a08feaf39106d53f9688d50982e..20a70a7bcdebc2a4c25a5c65423571820871751d 100644 (file)
@@ -2,9 +2,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    OnDemandPagedList,
     format_field,
     int_or_none,
-    OnDemandPagedList,
     smuggle_url,
 )
 
index 462861e0e089697f1ba51c9b679ed04bdc58d9cc..c303ac53ac571128ba110faf538a36d56134b228 100644 (file)
@@ -3,8 +3,8 @@
     ExtractorError,
     float_or_none,
     int_or_none,
-    try_get,
     parse_codecs,
+    try_get,
 )
 
 
index b9523c8654c404a3fc01969d66c4fecc267a2416..a847925e47a44ba352fadf9e5d1ffbcf8366fd71 100644 (file)
@@ -3,7 +3,7 @@
     ExtractorError,
     UserNotLive,
     lowercase_escape,
-    traverse_obj
+    traverse_obj,
 )
 
 
index 708873a9566f6da8512f994617c53fd921aefc27..501156e5138e2a851964291af78f0e944b08aa5a 100644 (file)
@@ -2,10 +2,10 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    parse_duration,
+    determine_ext,
     int_or_none,
+    parse_duration,
     qualities,
-    determine_ext,
 )
 
 
index bd2d738423f0e04a0a38c7b09b0b89e55ed004ec..29e5e573fe41581364c92e25a16a48a2892ded23 100644 (file)
@@ -1,7 +1,7 @@
 from .adobepass import AdobePassIE
 from ..utils import (
-    update_url_query,
     smuggle_url,
+    update_url_query,
 )
 
 
index 808c6c73d34e876115938c2ab59108c4dbf47fc1..4e178593f4e260ad40519f5309248574e958069f 100644 (file)
@@ -2,8 +2,8 @@
 
 from .turner import TurnerBaseIE
 from ..compat import (
-    compat_urllib_parse_urlparse,
     compat_parse_qs,
+    compat_urllib_parse_urlparse,
 )
 from ..utils import (
     float_or_none,
index 5eac9aa3fd0984390051ea5a6531aee8eccacac3..778fa1263d45fd1f70a7d204b59c5356fb8f275f 100644 (file)
@@ -3,10 +3,10 @@
 from .common import InfoExtractor
 from .wistia import WistiaIE
 from ..utils import (
-    clean_html,
     ExtractorError,
-    int_or_none,
+    clean_html,
     get_element_by_class,
+    int_or_none,
     strip_or_none,
     urlencode_postdata,
     urljoin,
index 90a976297a19b1a4bf31066572d8cae5c3670b6c..74024099366f8fd7f564ae8fa1cd17670d191dd5 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     qualities,
 )
 
index d32f81262a51eea7eec4f177dd1a648b42f2771d..3fb899cac5a5058e5e31a46a81a6e5ade71ade96 100644 (file)
@@ -13,8 +13,8 @@
     parse_qs,
     traverse_obj,
     unified_timestamp,
-    urljoin,
     url_or_none,
+    urljoin,
 )
 
 
index dd802db5b74f470f59840583200ae67a0e3cfb6b..ba25cdcf65c84afbc4d22296426736eae7403c0a 100644 (file)
@@ -2,9 +2,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
-    ExtractorError,
     float_or_none,
     get_element_by_class,
     get_element_by_id,
index c28a1549876aba7dc0c336d66fbb772756427f18..0969bbb03652ebb195f8537145343b1d146d4834 100644 (file)
@@ -2,14 +2,13 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
+    parse_duration,
     str_to_int,
     try_get,
-    url_or_none,
     unified_strdate,
-    parse_duration,
+    url_or_none,
 )
 
 
index 212af3785034c3678ad08c2f902e2e7963ca81f3..1705c2d5564f731a2409d7195ec3abbecfd241dc 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from .youtube import YoutubeIE
 from ..utils import (
+    determine_ext,
     js_to_json,
     qualities,
-    determine_ext,
 )
 
 
index 5fdcddd8b32890c9fb5bdc58a7dda393822b0195..380c84d98bf7a90832dcfb8ce3280a22e9f09d76 100644 (file)
@@ -1,4 +1,5 @@
 from __future__ import annotations
+
 import functools
 import json
 import textwrap
index 9318d6f9ad8b37b9b842d9bb06791b305b087219..71e54eb0cf1b76b5c3fac799b2a7bf168f142db1 100644 (file)
@@ -5,7 +5,7 @@
     int_or_none,
     parse_iso8601,
     traverse_obj,
-    try_call
+    try_call,
 )
 
 
index 6618ea4e6e0c1fe00b4d16e72c3c531728489b6b..ae2cb483f7fa628e35ad2e88f75b52d23892fdcf 100644 (file)
@@ -8,8 +8,8 @@
 from ..aes import aes_cbc_encrypt_bytes
 from ..utils import (
     ExtractorError,
-    float_or_none,
     determine_ext,
+    float_or_none,
     int_or_none,
     js_to_json,
     traverse_obj,
index a231eccf4bc7d0fd954b89f53494ccea94ee6113..fb6407715c56ec1a02947fb6ab291a04b7fcf84a 100644 (file)
@@ -10,7 +10,7 @@
     parse_qs,
     traverse_obj,
     unified_strdate,
-    urljoin
+    urljoin,
 )
 
 
index a991a4dfd0222300082f6ed54880dac84926032a..99f0d42ef57e2650145a59911368fe5ef866f761 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
-    parse_iso8601,
-    int_or_none,
     ExtractorError,
+    int_or_none,
+    parse_iso8601,
 )
 
 
index 9160f5ec6b8e95932c86383f09dcee9aa784fba2..eeb33a6606dbb79ada011c657b4d1f1ac39e7bef 100644 (file)
@@ -1,29 +1,27 @@
-import re
-import time
-import hmac
 import binascii
 import hashlib
+import hmac
+import re
+import time
 
-
-from .once import OnceIE
 from .adobepass import AdobePassIE
-from ..networking import Request
+from .once import OnceIE
+from ..networking import HEADRequest, Request
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
+    find_xpath_attr,
     float_or_none,
     int_or_none,
-    parse_qs,
-    unsmuggle_url,
-    update_url_query,
-    xpath_with_ns,
     mimetype2ext,
-    find_xpath_attr,
+    parse_qs,
     traverse_obj,
+    unsmuggle_url,
     update_url,
+    update_url_query,
     urlhandle_detect_ext,
+    xpath_with_ns,
 )
-from ..networking import HEADRequest
 
 default_ns = 'http://www.w3.org/2005/SMIL21/Language'
 _x = lambda p: xpath_with_ns(p, {'smil': default_ns})
index 7841f8da69e2cbd39f7c7731d9dba485caf4cd42..f7a13d2c373214aca4877b7e5509aca9fe68af46 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     float_or_none,
     int_or_none,
     join_nonempty,
index aa7ee6c489e78b7c75c9d197456698c9ebb3a3b3..ccb2ef8166dfaafb01bb51e6db92322e46816266 100644 (file)
@@ -1,6 +1,7 @@
-from .common import InfoExtractor
 import re
 
+from .common import InfoExtractor
+
 
 class ToypicsIE(InfoExtractor):
     _WORKING = False
index 56e51fea8f30047bf0305fac119a4e9484e170b4..3bdeedd43e003f9b4c0de668c26f8d712fce59ac 100644 (file)
@@ -14,8 +14,8 @@
     traverse_obj,
     unified_timestamp,
     url_basename,
-    urljoin,
     url_or_none,
+    urljoin,
 )
 
 
index 86f0990e8328184eb2f5160ac6ac1e073989f68b..efedac180c4ff9254e3c15121a4a177e73c6fb6d 100644 (file)
@@ -1,13 +1,13 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     parse_age_limit,
     traverse_obj,
     unified_timestamp,
-    url_or_none
+    url_or_none,
 )
 
 
index a26bdcaae76eb9c436efea696837f6848298fc08..f2d0c59011dd6381175a51bf6f64ea70a958cdab 100644 (file)
@@ -3,7 +3,7 @@
     ExtractorError,
     int_or_none,
     traverse_obj,
-    urlencode_postdata
+    urlencode_postdata,
 )
 
 
index 630d84bdc39fa10907af0de0d2fed905fe91f65f..b27db87bf7f028b9921741b0a4577e02f9e0e002 100644 (file)
@@ -3,17 +3,17 @@
 from .adobepass import AdobePassIE
 from ..compat import compat_str
 from ..utils import (
-    fix_xml_ampersands,
-    xpath_text,
-    int_or_none,
+    ExtractorError,
     determine_ext,
+    fix_xml_ampersands,
     float_or_none,
+    int_or_none,
     parse_duration,
-    xpath_attr,
-    update_url_query,
-    ExtractorError,
     strip_or_none,
+    update_url_query,
     url_or_none,
+    xpath_attr,
+    xpath_text,
 )
 
 
index 7756aa3f587fbfcfa56dc7f291798364b4c8b528..9b19e79954d21c9dea5f7563c03d9e2260a1aff7 100644 (file)
@@ -3,10 +3,10 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
-    int_or_none,
+    determine_ext,
     float_or_none,
+    int_or_none,
     js_to_json,
     parse_iso8601,
     remove_end,
index 9c0a111c0514faa6536804f79edeadd84edf592f..cd35ff5fbbca213da36d6f212c0d9f88dcc6820b 100644 (file)
@@ -1,8 +1,8 @@
 # encoding: utf-8
 from .common import InfoExtractor
 from ..utils import (
-    traverse_obj,
     UnsupportedError,
+    traverse_obj,
 )
 
 
index b9f5e110eb5412380d4b81d4f65b76e22f1dff27..dbebda4f4ecd4e6270dc267e1b78b36002d2fdf6 100644 (file)
@@ -1,7 +1,7 @@
 import re
 
-from .common import InfoExtractor
 from .brightcove import BrightcoveNewIE
+from .common import InfoExtractor
 
 
 class TVANouvellesIE(InfoExtractor):
index 5276813155b7e9cbe32bb526aa3817234008a267..ac480580a689e65af680a68178bdba603f540f7a 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     NO_DEFAULT,
+    int_or_none,
     unescapeHTML,
 )
 
index a8d00e243ad46fa14f2fc137c8d85266fa483b5c..f1ebf027a08acaa0e7a8edff37291f73334c46bd 100644 (file)
@@ -4,10 +4,10 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
     dict_get,
-    ExtractorError,
     int_or_none,
     js_to_json,
     str_or_none,
index 48a6efe1ccb70716f7ebfae15b788d22ee06ea83..29185d34bc6e19f8fd95e92e58e8a4711932b7dc 100644 (file)
@@ -4,8 +4,8 @@
 from ..compat import compat_urlparse
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     int_or_none,
     parse_iso8601,
     qualities,
index 228c2366ed66dcc87abb3852301cf7b5d2af0705..d43bdc2ff1a8d565b292b9a6dc2f3de0440f12bd 100644 (file)
@@ -2,10 +2,10 @@
 from ..compat import compat_str
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
     extract_attributes,
     try_get,
     urlencode_postdata,
-    ExtractorError,
 )
 
 
index e8e1fc666fdf53d7cdf1d9579e9c0c87f49ec0ac..9249550c970dd28cf586c10a9b50f341d32ea64d 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     determine_ext,
+    int_or_none,
     mimetype2ext,
 )
 
index fc80dade8f12f9b4f29ba77a1274d3209d0e0fe0..1a11162a0b132c64dffd56bd885a2d5815895d4c 100644 (file)
@@ -1,10 +1,10 @@
+import functools
 import json
 import random
 import re
 
 from .common import InfoExtractor
 from .periscope import PeriscopeBaseIE, PeriscopeIE
-from ..compat import functools  # isort: split
 from ..compat import (
     compat_parse_qs,
     compat_urllib_parse_unquote,
index 10668ac4b8caccae19b08fd8d443022095c4b1c6..d5849d29bf892b94d63bbb820fc1b0213cec3936 100644 (file)
@@ -1,12 +1,12 @@
 import re
 
 from .common import InfoExtractor
+from ..compat import compat_urlparse
 from ..utils import (
     determine_ext,
     int_or_none,
     js_to_json,
 )
-from ..compat import compat_urlparse
 
 
 class UDNEmbedIE(InfoExtractor):
index f914613c0931ba5b780d4e219efac9a18b7ac60d..f141804c801e7bbb3af2427dffe06359d21ae1f0 100644 (file)
@@ -1,11 +1,11 @@
+from .common import InfoExtractor
+from .vimeo import VimeoIE
+from .youtube import YoutubeIE
 from ..utils import (
+    ExtractorError,
     unescapeHTML,
     urljoin,
-    ExtractorError,
 )
-from .common import InfoExtractor
-from .vimeo import VimeoIE
-from .youtube import YoutubeIE
 
 
 class UkColumnIE(InfoExtractor):
index 7f97fc95f50b50e0375d8b236ded834b897d1d3a..928e6e1c2d66836dd18a56d45a935fa7117027d5 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from ..utils import (
-    dict_get,
     ExtractorError,
-    int_or_none,
     ISO639Utils,
+    dict_get,
+    int_or_none,
     parse_age_limit,
     try_get,
     unified_timestamp,
index 3243f3e3bdffdd039166482ed53b7966496b5336..42a28c509e7d36ee4b8e688fcd1690b26345491e 100644 (file)
@@ -1,4 +1,5 @@
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
     ExtractorError,
     get_element_by_attribute,
@@ -6,7 +7,6 @@
     try_get,
     update_url_query,
 )
-from ..compat import compat_str
 
 
 class USATodayIE(InfoExtractor):
index 5df2416537cfe4b18a9b039733ad40d35eafadbe..046e3d768c530cff47d72ba1469da06016688f0f 100644 (file)
@@ -7,10 +7,10 @@
     compat_urlparse,
 )
 from ..utils import (
-    encode_data_uri,
     ExtractorError,
-    int_or_none,
+    encode_data_uri,
     float_or_none,
+    int_or_none,
     join_nonempty,
     mimetype2ext,
     str_or_none,
index c3aeeb9615c674647dd25dcf6d75b32622281b38..f6ce5b3577d7b929653e6dec493fd153ff04d97f 100644 (file)
@@ -1,8 +1,8 @@
 from .common import InfoExtractor
 from ..utils import (
     int_or_none,
-    unified_strdate,
     unescapeHTML,
+    unified_strdate,
 )
 
 
index ef44d421ec6fd7600ad512197b7e77f6ce282316..205f8ea63e90d271bd917e7406f7d0f923bc53a7 100644 (file)
@@ -1,5 +1,4 @@
 from .common import InfoExtractor
-
 from ..utils import (
     int_or_none,
     mimetype2ext,
index 3f2dddbe90c2f6948cba02fdeeff5d1758c1cb3c..a2e90226afa2a7ed49b38c4a51dce12d1cbf0740 100644 (file)
@@ -1,8 +1,8 @@
 import re
 
 from .common import InfoExtractor
-from ..utils import ExtractorError
 from .rutv import RUTVIE
+from ..utils import ExtractorError
 
 
 class VestiIE(InfoExtractor):
index aa40227a76574af87adff4b8c9265b05d70e2b85..7715d683926562447290cc23df5409ef10a39c5c 100644 (file)
@@ -1,5 +1,5 @@
-import re
 import json
+import re
 
 from .common import InfoExtractor
 from ..compat import compat_str
index d31908fb126465a5e0edb16c3d75cd10547aec38..b072d9d739c573f9e785de0b604a80086b443bdb 100644 (file)
 from ..compat import compat_str
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    clean_html,
     ExtractorError,
-    int_or_none,
     OnDemandPagedList,
+    clean_html,
+    int_or_none,
     parse_age_limit,
     str_or_none,
     try_get,
index 770aa284da9590fc81b30ca8b98f5f786e784c06..6322bb04b620f185e69bd78a9829792a89fc1ff0 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    clean_html,
     ExtractorError,
+    clean_html,
     format_field,
     get_element_by_class,
     int_or_none,
index 44353b7fc45a19e6848dfa9364a57267a3ae652d..e1219a8a0d6a16e4a04fa67eb3960c3352054031 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..networking import HEADRequest
 from ..utils import (
-    format_field,
     float_or_none,
+    format_field,
     get_element_by_id,
     int_or_none,
     str_to_int,
index 91b976403a751736ffe02a7d88bf73718f465ada..ac96ade18695a060995d5496e7332d8e3ef31d0d 100644 (file)
@@ -1,21 +1,21 @@
 import base64
 import functools
-import re
 import itertools
+import re
 
 from .common import InfoExtractor
 from ..compat import compat_str, compat_urlparse
 from ..networking import HEADRequest, Request
 from ..networking.exceptions import HTTPError
 from ..utils import (
+    ExtractorError,
+    OnDemandPagedList,
     clean_html,
     determine_ext,
-    ExtractorError,
     get_element_by_class,
-    js_to_json,
     int_or_none,
+    js_to_json,
     merge_dicts,
-    OnDemandPagedList,
     parse_filesize,
     parse_iso8601,
     parse_qs,
@@ -26,8 +26,8 @@
     unified_timestamp,
     unsmuggle_url,
     urlencode_postdata,
-    urljoin,
     urlhandle_detect_ext,
+    urljoin,
 )
 
 
index 6f9af9f643b5e80ef6a6daeb04255d0a4e5eb8a6..480f49b7b17b098573856779f71b9fec63cb199c 100644 (file)
@@ -1,8 +1,8 @@
-import re
 import json
-import uuid
 import random
+import re
 import urllib.parse
+import uuid
 
 from .common import InfoExtractor
 from ..compat import compat_str
     ExtractorError,
     int_or_none,
     remove_end,
+    smuggle_url,
     strip_or_none,
     traverse_obj,
     try_get,
-    smuggle_url,
     unified_timestamp,
     unsmuggle_url,
     url_or_none,
index 28d5026850b71bfdc2b4d81b894e9a1c6c8bca8f..132d65bcaee52bd5a43405d7aaa52535723e0929 100644 (file)
@@ -20,6 +20,7 @@
     parse_resolution,
     str_or_none,
     str_to_int,
+    traverse_obj,
     try_call,
     unescapeHTML,
     unified_timestamp,
@@ -27,7 +28,6 @@
     url_or_none,
     urlencode_postdata,
     urljoin,
-    traverse_obj,
 )
 
 
index a1a9c1708c4a200731abbc26ec09a097de967d63..3ac0f83874a017342f7216bc1d0e7c8bc306dcb9 100644 (file)
@@ -2,8 +2,8 @@
 
 from .common import InfoExtractor
 from ..utils import (
-    xpath_text,
     int_or_none,
+    xpath_text,
 )
 
 
index 74501b1d2913b1c3ed814e4407911772c283bf5f..1cfed2da5e71ac7654c5577e4bdc8f11b1544112 100644 (file)
@@ -1,7 +1,6 @@
 import re
 
 from .common import InfoExtractor
-
 from ..utils import traverse_obj
 
 
index f80f140edc0a8aae149f6664028faafe17e24e0d..0b7ddd239b1210831182fb30fe4fea8677ff8828 100644 (file)
@@ -6,16 +6,16 @@
     compat_urlparse,
 )
 from ..utils import (
+    ExtractorError,
     determine_ext,
     dict_get,
-    ExtractorError,
     js_to_json,
     strip_jsonp,
     try_get,
     unified_strdate,
     update_url_query,
-    urlhandle_detect_ext,
     url_or_none,
+    urlhandle_detect_ext,
 )
 
 
index 2fca745aa5cbe1925e4dd53de27296c0a78182f0..b6a6593850d20aee9b1e2d2fb5dce1fe53e4519d 100644 (file)
@@ -1,6 +1,6 @@
+import itertools
 import json
 import random
-import itertools
 import urllib.parse
 
 from .common import InfoExtractor
index f2808cd9fc83de6ce01b3a52694e63fd1fb020be..492891d7828f3363c632e34374a3eff83d49bb54 100644 (file)
@@ -1,12 +1,12 @@
 from .common import InfoExtractor
+from ..compat import compat_str
 from ..utils import (
+    ExtractorError,
     int_or_none,
     qualities,
     try_call,
     try_get,
-    ExtractorError,
 )
-from ..compat import compat_str
 
 
 class WhoWatchIE(InfoExtractor):
index f9bf092df5de5c1e57ed4c8481fc019439e87595..d7d77c0db0c06344ab4c5bf95945f4de928e0b1e 100644 (file)
@@ -1,9 +1,9 @@
 from .common import InfoExtractor
 from ..utils import (
+    ExtractorError,
     determine_ext,
     parse_duration,
     urlencode_postdata,
-    ExtractorError,
 )
 
 
index 5e590e2f4f5e77795b4d17e6844afc5ef28ad8c4..0ef4e8e5375187403eb6119a85f41c1e3aada3c0 100644 (file)
@@ -1,13 +1,13 @@
+import json
+import random
+import re
+
 from .common import InfoExtractor
 from ..utils import (
-    try_get,
     ExtractorError,
+    try_get,
 )
 
-import json
-import random
-import re
-
 
 class WPPilotBaseIE(InfoExtractor):
     _VIDEO_URL = 'https://pilot.wp.pl/api/v1/channel/%s'
index 86e2646793b127d4887ad9cbd5a86fc9036626ab..35fe3036272cd67f80523098f05fd7a6c512275d 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    int_or_none,
     float_or_none,
+    int_or_none,
     unified_strdate,
 )
 
index 01ac5ddb65ed6c707ef8898dfb45a80b1a60c266..0b3a620ec20c928189c16ea6adc2b1e252a877dc 100644 (file)
@@ -4,11 +4,11 @@
 from .common import InfoExtractor
 from ..compat import compat_str
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
     dict_get,
     extract_attributes,
-    ExtractorError,
     float_or_none,
     int_or_none,
     parse_duration,
index 1452aaec37149172a2486e8b4caed1adc069dd21..74d4f041900e442666cf1d205bb806ef061aa8dc 100644 (file)
@@ -2,9 +2,9 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    NO_DEFAULT,
     determine_ext,
     int_or_none,
-    NO_DEFAULT,
     str_to_int,
 )
 
index 8dd1cd9efbee5b8f2c592e09575020550c5e51fb..322e86570f913056060e13813c198cc82954ad07 100644 (file)
@@ -2,11 +2,11 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    find_xpath_attr,
     int_or_none,
     parse_iso8601,
-    xpath_with_ns,
     xpath_text,
-    find_xpath_attr,
+    xpath_with_ns,
 )
 
 
index a489033abc81ffe38b0e37e5da12cdd2e16bcbf5..6b16ac2915c0d3e2fe0ceb56ed5c85cccfffbb01 100644 (file)
@@ -3,9 +3,9 @@
 from .common import InfoExtractor
 from ..compat import compat_urllib_parse_unquote
 from ..utils import (
+    ExtractorError,
     clean_html,
     determine_ext,
-    ExtractorError,
     int_or_none,
     parse_duration,
 )
index e3e3a9fe6374ae6ac8e0a13fd86e02d90384017e..aa6c84d09eafe1f72104c26e01e98d30d8df61a7 100644 (file)
@@ -1,7 +1,7 @@
 from .common import InfoExtractor
 from ..utils import (
-    parse_duration,
     int_or_none,
+    parse_duration,
 )
 
 
index 794dc3eaea2c99553ae2611409e92b1acff34dd1..acfe69bf45ac44cec7bb28257ef21791c291a3bc 100644 (file)
@@ -5,8 +5,8 @@
 from ..compat import compat_str
 from ..utils import (
     ExtractorError,
-    int_or_none,
     float_or_none,
+    int_or_none,
     try_get,
 )
 
index 88f526bbc9b354df0894a050f23eeb5a87469e4c..2a12aa5095345c4ddebfdfb511e6dcbe8cc328c2 100644 (file)
@@ -2,11 +2,11 @@
 
 from .common import InfoExtractor
 from ..utils import (
+    int_or_none,
     parse_duration,
     parse_iso8601,
-    xpath_with_ns,
     xpath_text,
-    int_or_none,
+    xpath_with_ns,
 )
 
 
index c24b33874c4cd9f3e66e680961285fbcf251b088..18b22a5c7d4e72f01f200c7c52b2effb341b8fa4 100644 (file)
@@ -1,5 +1,5 @@
 from .common import InfoExtractor
-from ..utils import format_field, float_or_none, int_or_none
+from ..utils import float_or_none, format_field, int_or_none
 
 
 class ZhihuIE(InfoExtractor):
index ff5eac89a345c0815c37b8c4f1d121e5399284d4..909a7a3ae636e7595aba46c5e5223f2f08e3f506 100644 (file)
@@ -10,8 +10,8 @@
     int_or_none,
     join_nonempty,
     try_call,
+    url_or_none,
     urljoin,
-    url_or_none
 )
 from ..utils.traversal import traverse_obj
 
index 2f3b4c47f5f691e3ca60fa14bdbbcb68efc0e2c1..8d3156d644a0a5d7c1376d76403190e9879246f9 100644 (file)
@@ -3,8 +3,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    dict_get,
     ExtractorError,
+    dict_get,
     int_or_none,
     js_to_json,
     parse_iso8601,