Remove "harold.martin@gmail.com" from authors (#974)
Browse files* Update authors/contact
* Update documentation URLs
* Update some old references from nficano/pytube to pytube/pytube
* Updated license in setup.py to The Unlicense
* Removed pytube3 CLI entrypoint
* Change OS classified to platform-independent
* Remove travis, coveralls, and codecov references
* Remove legacy 'coding: utf-8' tag
- .github/workflows/codecov.yml +0 -17
- .github/workflows/greetings.yml +1 -1
- Contributing.md +3 -3
- README.md +5 -5
- docs/conf.py +1 -3
- docs/index.rst +3 -8
- pytube/__init__.py +2 -2
- pytube/__main__.py +1 -2
- pytube/captions.py +0 -1
- pytube/cipher.py +5 -7
- pytube/cli.py +0 -1
- pytube/contrib/playlist.py +0 -1
- pytube/exceptions.py +0 -1
- pytube/extract.py +0 -1
- pytube/helpers.py +1 -2
- pytube/itags.py +0 -1
- pytube/metadata.py +0 -1
- pytube/monostate.py +0 -1
- pytube/query.py +0 -1
- pytube/request.py +0 -1
- pytube/streams.py +0 -1
- pytube/version.py +0 -2
- setup.py +10 -14
- tests/__init__.py +0 -1
- tests/conftest.py +0 -1
- tests/contrib/test_playlist.py +0 -1
- tests/test_captions.py +0 -1
- tests/test_cipher.py +0 -1
- tests/test_cli.py +0 -1
- tests/test_exceptions.py +0 -1
- tests/test_extract.py +0 -1
- tests/test_helpers.py +0 -1
- tests/test_itags.py +0 -1
- tests/test_main.py +0 -1
- tests/test_metadata.py +0 -1
- tests/test_query.py +0 -1
- tests/test_request.py +0 -1
- tests/test_streams.py +0 -1
.github/workflows/codecov.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1 |
-
name: Code Coverage
|
2 |
-
on: [push]
|
3 |
-
jobs:
|
4 |
-
Code-Coverage:
|
5 |
-
runs-on: ubuntu-latest
|
6 |
-
steps:
|
7 |
-
- run: echo "π The job was automatically triggered by a ${{ github.event_name }} event."
|
8 |
-
- run: echo "π§ This job is now running on a ${{ runner.os }} server hosted by GitHub!"
|
9 |
-
- run: echo "π The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
|
10 |
-
- name: Check out repository code
|
11 |
-
uses: actions/checkout@v2
|
12 |
-
- run: echo "π‘ The ${{ github.repository }} repository has been cloned to the runner."
|
13 |
-
- run: echo "π₯οΈ The workflow is now ready to test your code on the runner."
|
14 |
-
- name: List files in the repository
|
15 |
-
run: |
|
16 |
-
ls ${{ github.workspace }}
|
17 |
-
- run: echo "π This job's status is ${{ job.status }}."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.github/workflows/greetings.yml
CHANGED
@@ -9,4 +9,4 @@ jobs:
|
|
9 |
- uses: actions/first-interaction@v1
|
10 |
with:
|
11 |
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
12 |
-
issue-message: 'Thank you for contributing to PyTube. Please remember to reference [Contributing.md](https://github.com/
|
|
|
9 |
- uses: actions/first-interaction@v1
|
10 |
with:
|
11 |
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
12 |
+
issue-message: 'Thank you for contributing to PyTube. Please remember to reference [Contributing.md](https://github.com/pytube/pytube/blob/master/Contributing.md)'
|
Contributing.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
|
3 |
#### **Did you find a bug?**
|
4 |
|
5 |
-
* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/
|
6 |
|
7 |
-
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/
|
8 |
|
9 |
* For more detailed information on submitting a bug report and creating an issue, visit `TODO`
|
10 |
|
@@ -32,7 +32,7 @@ Changes that are cosmetic in nature and do not add anything substantial to the s
|
|
32 |
|
33 |
#### **Do you want to contribute to the PyTube documentation?**
|
34 |
|
35 |
-
* Consider submitting a patch to the [docs](https://github.com/
|
36 |
|
37 |
PyTube is a volunteer effort. We encourage you to pitch in and [join the team](https://contributors.rubyonrails.org)!
|
38 |
|
|
|
2 |
|
3 |
#### **Did you find a bug?**
|
4 |
|
5 |
+
* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/pytube/pytube/issues).
|
6 |
|
7 |
+
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/pytube/pytube/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **[MRE code sample](https://stackoverflow.com/help/minimal-reproducible-example)** or an **executable test case** demonstrating the expected behavior that is not occurring.
|
8 |
|
9 |
* For more detailed information on submitting a bug report and creating an issue, visit `TODO`
|
10 |
|
|
|
32 |
|
33 |
#### **Do you want to contribute to the PyTube documentation?**
|
34 |
|
35 |
+
* Consider submitting a patch to the [docs](https://github.com/pytube/pytube/tree/master/docs)
|
36 |
|
37 |
PyTube is a volunteer effort. We encourage you to pitch in and [join the team](https://contributors.rubyonrails.org)!
|
38 |
|
README.md
CHANGED
@@ -4,7 +4,8 @@
|
|
4 |
</p>
|
5 |
<p align="center">
|
6 |
<a href="https://pypi.org/project/pytube/"><img src="https://img.shields.io/pypi/dm/pytube?style=flat-square" alt="pypi"/></a>
|
7 |
-
<a href="https://
|
|
|
8 |
<a href="https://pypi.org/project/pytube/"><img src="https://img.shields.io/pypi/v/pytube?style=flat-square" /></a>
|
9 |
</p>
|
10 |
</div>
|
@@ -21,8 +22,8 @@ command-line utility) for downloading YouTube Videos.
|
|
21 |
|
22 |
## Documentation
|
23 |
|
24 |
-
Detailed documentation about how to use the library can be found on
|
25 |
-
[
|
26 |
for most use cases. If you just want to quickly download a single video,
|
27 |
the [quickstart](#Quickstart) guide below might be what you're looking for.
|
28 |
|
@@ -56,8 +57,7 @@ download videos right from terminal.
|
|
56 |
## Quickstart
|
57 |
|
58 |
This guide is only meant to cover the most basic usage of the library. For more
|
59 |
-
detailed information, please refer to
|
60 |
-
[readthedocs](https://python-pytube.readthedocs.io) page.
|
61 |
|
62 |
### Installation
|
63 |
|
|
|
4 |
</p>
|
5 |
<p align="center">
|
6 |
<a href="https://pypi.org/project/pytube/"><img src="https://img.shields.io/pypi/dm/pytube?style=flat-square" alt="pypi"/></a>
|
7 |
+
<a href="https://pytube.io/en/latest/"><img src="https://readthedocs.org/projects/python-pytube/badge/?version=latest&style=flat-square" /></a>
|
8 |
+
<a href="https://codecov.io/gh/pytube/pytube" aria-label="coverage"><img src="https://img.shields.io/codecov/c/github/pytube/pytube?style=flat-square" /></a>
|
9 |
<a href="https://pypi.org/project/pytube/"><img src="https://img.shields.io/pypi/v/pytube?style=flat-square" /></a>
|
10 |
</p>
|
11 |
</div>
|
|
|
22 |
|
23 |
## Documentation
|
24 |
|
25 |
+
Detailed documentation about how to use the library can be found on
|
26 |
+
[pytube.io](pytube.io). This is recommended
|
27 |
for most use cases. If you just want to quickly download a single video,
|
28 |
the [quickstart](#Quickstart) guide below might be what you're looking for.
|
29 |
|
|
|
57 |
## Quickstart
|
58 |
|
59 |
This guide is only meant to cover the most basic usage of the library. For more
|
60 |
+
detailed information, please refer to [pytube.io](https://pytube.io).
|
|
|
61 |
|
62 |
### Installation
|
63 |
|
docs/conf.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
#!/usr/bin/env python3
|
2 |
-
# -*- coding: utf-8 -*-
|
3 |
"""pytube documentation build configuration file."""
|
4 |
import os
|
5 |
import sys
|
@@ -36,8 +35,7 @@ master_doc = "index"
|
|
36 |
|
37 |
# General information about the project.
|
38 |
project = "pytube"
|
39 |
-
|
40 |
-
author = "Nick Ficano, Harold Martin"
|
41 |
|
42 |
# The version info for the project you're documenting, acts as replacement for
|
43 |
# |version| and |release|, also used in various other places throughout the
|
|
|
1 |
#!/usr/bin/env python3
|
|
|
2 |
"""pytube documentation build configuration file."""
|
3 |
import os
|
4 |
import sys
|
|
|
35 |
|
36 |
# General information about the project.
|
37 |
project = "pytube"
|
38 |
+
author = "RonnieΒ Ghose, Taylor Fox Dahlin, Nick Ficano"
|
|
|
39 |
|
40 |
# The version info for the project you're documenting, acts as replacement for
|
41 |
# |version| and |release|, also used in various other places throughout the
|
docs/index.rst
CHANGED
@@ -8,18 +8,13 @@ Release v\ |version|. (:ref:`Installation<install>`)
|
|
8 |
:alt: Pypi
|
9 |
:target: https://pypi.python.org/pypi/pytube/
|
10 |
|
11 |
-
.. image:: https://travis-ci.org/nficano/pytube.svg?branch=master
|
12 |
-
:alt: Build status
|
13 |
-
:target: https://travis-ci.org/nficano/pytube
|
14 |
-
|
15 |
-
.. image:: https://coveralls.io/repos/github/nficano/pytube/badge.svg?branch=master
|
16 |
-
:alt: Coverage
|
17 |
-
:target: https://coveralls.io/github/nficano/pytube?branch=master
|
18 |
-
|
19 |
.. image:: https://img.shields.io/pypi/pyversions/pytube.svg
|
20 |
:alt: Python Versions
|
21 |
:target: https://pypi.python.org/pypi/pytube/
|
22 |
|
|
|
|
|
|
|
23 |
**pytube** is a lightweight, Pythonic, dependency-free, library (and
|
24 |
command-line utility) for downloading YouTube Videos.
|
25 |
|
|
|
8 |
:alt: Pypi
|
9 |
:target: https://pypi.python.org/pypi/pytube/
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
.. image:: https://img.shields.io/pypi/pyversions/pytube.svg
|
12 |
:alt: Python Versions
|
13 |
:target: https://pypi.python.org/pypi/pytube/
|
14 |
|
15 |
+
.. image:: https://readthedocs.org/projects/python-pytube/badge/?version=latest&style=flat-square
|
16 |
+
:alt: Readthedocs
|
17 |
+
|
18 |
**pytube** is a lightweight, Pythonic, dependency-free, library (and
|
19 |
command-line utility) for downloading YouTube Videos.
|
20 |
|
pytube/__init__.py
CHANGED
@@ -4,8 +4,8 @@
|
|
4 |
Pytube: a very serious Python library for downloading YouTube Videos.
|
5 |
"""
|
6 |
__title__ = "pytube"
|
7 |
-
__author__ = "Nick Ficano"
|
8 |
-
__license__ = "
|
9 |
__js__ = None
|
10 |
__js_url__ = None
|
11 |
|
|
|
4 |
Pytube: a very serious Python library for downloading YouTube Videos.
|
5 |
"""
|
6 |
__title__ = "pytube"
|
7 |
+
__author__ = "RonnieΒ Ghose, Taylor Fox Dahlin, Nick Ficano"
|
8 |
+
__license__ = "The Unlicense (Unlicense)"
|
9 |
__js__ = None
|
10 |
__js_url__ = None
|
11 |
|
pytube/__main__.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""
|
3 |
This module implements the core developer interface for pytube.
|
4 |
|
@@ -209,7 +208,7 @@ class YouTube:
|
|
209 |
return self._fmt_streams
|
210 |
|
211 |
self._fmt_streams = []
|
212 |
-
# https://github.com/
|
213 |
stream_maps = ["url_encoded_fmt_stream_map"]
|
214 |
if "adaptive_fmts" in self.player_config_args:
|
215 |
stream_maps.append("adaptive_fmts")
|
|
|
|
|
1 |
"""
|
2 |
This module implements the core developer interface for pytube.
|
3 |
|
|
|
208 |
return self._fmt_streams
|
209 |
|
210 |
self._fmt_streams = []
|
211 |
+
# https://github.com/pytube/pytube/issues/165
|
212 |
stream_maps = ["url_encoded_fmt_stream_map"]
|
213 |
if "adaptive_fmts" in self.player_config_args:
|
214 |
stream_maps.append("adaptive_fmts")
|
pytube/captions.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import math
|
3 |
import os
|
4 |
import time
|
|
|
|
|
1 |
import math
|
2 |
import os
|
3 |
import time
|
pytube/cipher.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""
|
3 |
This module contains all logic necessary to decipher the signature.
|
4 |
|
@@ -49,7 +48,7 @@ class Cipher:
|
|
49 |
The ciphered signature sent in the ``player_config``.
|
50 |
:rtype: str
|
51 |
:returns:
|
52 |
-
|
53 |
"""
|
54 |
signature = list(ciphered_signature)
|
55 |
|
@@ -108,7 +107,7 @@ def get_initial_function_name(js: str) -> str:
|
|
108 |
The contents of the base.js asset file.
|
109 |
:rtype: str
|
110 |
:returns:
|
111 |
-
|
112 |
"""
|
113 |
|
114 |
function_patterns = [
|
@@ -226,7 +225,7 @@ def reverse(arr: List, _: Optional[Any]):
|
|
226 |
|
227 |
.. code-block:: javascript
|
228 |
|
229 |
-
|
230 |
|
231 |
This method takes an unused ``b`` variable as their transform functions
|
232 |
universally sent two arguments.
|
@@ -246,7 +245,7 @@ def splice(arr: List, b: int):
|
|
246 |
|
247 |
.. code-block:: javascript
|
248 |
|
249 |
-
|
250 |
|
251 |
**Example**:
|
252 |
|
@@ -263,7 +262,7 @@ def swap(arr: List, b: int):
|
|
263 |
|
264 |
.. code-block:: javascript
|
265 |
|
266 |
-
|
267 |
|
268 |
**Example**:
|
269 |
|
@@ -279,7 +278,6 @@ def map_functions(js_func: str) -> Callable:
|
|
279 |
|
280 |
:param str js_func:
|
281 |
The JavaScript version of the transform function.
|
282 |
-
|
283 |
"""
|
284 |
mapper = (
|
285 |
# function(a){a.reverse()}
|
|
|
|
|
1 |
"""
|
2 |
This module contains all logic necessary to decipher the signature.
|
3 |
|
|
|
48 |
The ciphered signature sent in the ``player_config``.
|
49 |
:rtype: str
|
50 |
:returns:
|
51 |
+
Decrypted signature required to download the media content.
|
52 |
"""
|
53 |
signature = list(ciphered_signature)
|
54 |
|
|
|
107 |
The contents of the base.js asset file.
|
108 |
:rtype: str
|
109 |
:returns:
|
110 |
+
Function name from regex match
|
111 |
"""
|
112 |
|
113 |
function_patterns = [
|
|
|
225 |
|
226 |
.. code-block:: javascript
|
227 |
|
228 |
+
function(a, b) { a.reverse() }
|
229 |
|
230 |
This method takes an unused ``b`` variable as their transform functions
|
231 |
universally sent two arguments.
|
|
|
245 |
|
246 |
.. code-block:: javascript
|
247 |
|
248 |
+
function(a, b) { a.splice(0, b) }
|
249 |
|
250 |
**Example**:
|
251 |
|
|
|
262 |
|
263 |
.. code-block:: javascript
|
264 |
|
265 |
+
function(a, b) { var c=a[0];a[0]=a[b%a.length];a[b]=c }
|
266 |
|
267 |
**Example**:
|
268 |
|
|
|
278 |
|
279 |
:param str js_func:
|
280 |
The JavaScript version of the transform function.
|
|
|
281 |
"""
|
282 |
mapper = (
|
283 |
# function(a){a.reverse()}
|
pytube/cli.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
#!/usr/bin/env python3
|
2 |
-
# -*- coding: utf-8 -*-
|
3 |
"""A simple command line application to download youtube videos."""
|
4 |
import argparse
|
5 |
import gzip
|
|
|
1 |
#!/usr/bin/env python3
|
|
|
2 |
"""A simple command line application to download youtube videos."""
|
3 |
import argparse
|
4 |
import gzip
|
pytube/contrib/playlist.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Module to download a complete playlist from a youtube channel."""
|
3 |
import json
|
4 |
import logging
|
|
|
|
|
1 |
"""Module to download a complete playlist from a youtube channel."""
|
2 |
import json
|
3 |
import logging
|
pytube/exceptions.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Library specific exception definitions."""
|
3 |
from typing import Pattern, Union
|
4 |
|
|
|
|
|
1 |
"""Library specific exception definitions."""
|
2 |
from typing import Pattern, Union
|
3 |
|
pytube/extract.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""This module contains all non-cipher related data extraction logic."""
|
3 |
import json
|
4 |
import logging
|
|
|
|
|
1 |
"""This module contains all non-cipher related data extraction logic."""
|
2 |
import json
|
3 |
import logging
|
pytube/helpers.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Various helper functions implemented by pytube."""
|
3 |
import functools
|
4 |
import gzip
|
@@ -93,7 +92,7 @@ def setup_logger(level: int = logging.ERROR, log_filename: Optional[str] = None)
|
|
93 |
date_fmt = "%H:%M:%S"
|
94 |
formatter = logging.Formatter(fmt, datefmt=date_fmt)
|
95 |
|
96 |
-
# https://github.com/
|
97 |
logger = logging.getLogger("pytube")
|
98 |
logger.setLevel(level)
|
99 |
|
|
|
|
|
1 |
"""Various helper functions implemented by pytube."""
|
2 |
import functools
|
3 |
import gzip
|
|
|
92 |
date_fmt = "%H:%M:%S"
|
93 |
formatter = logging.Formatter(fmt, datefmt=date_fmt)
|
94 |
|
95 |
+
# https://github.com/pytube/pytube/issues/163
|
96 |
logger = logging.getLogger("pytube")
|
97 |
logger.setLevel(level)
|
98 |
|
pytube/itags.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""This module contains a lookup table of YouTube's itag values."""
|
3 |
from typing import Dict
|
4 |
|
|
|
|
|
1 |
"""This module contains a lookup table of YouTube's itag values."""
|
2 |
from typing import Dict
|
3 |
|
pytube/metadata.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""This module contains the YouTubeMetadata class."""
|
3 |
import json
|
4 |
from typing import Dict, List, Optional
|
|
|
|
|
1 |
"""This module contains the YouTubeMetadata class."""
|
2 |
import json
|
3 |
from typing import Dict, List, Optional
|
pytube/monostate.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
from typing import Any, Callable, Optional
|
3 |
|
4 |
|
|
|
|
|
1 |
from typing import Any, Callable, Optional
|
2 |
|
3 |
|
pytube/query.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""This module provides a query interface for media streams and captions."""
|
3 |
from collections.abc import Mapping, Sequence
|
4 |
from typing import Callable, List, Optional, Union
|
|
|
|
|
1 |
"""This module provides a query interface for media streams and captions."""
|
2 |
from collections.abc import Mapping, Sequence
|
3 |
from typing import Callable, List, Optional, Union
|
pytube/request.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Implements a simple wrapper around urlopen."""
|
3 |
import json
|
4 |
import logging
|
|
|
|
|
1 |
"""Implements a simple wrapper around urlopen."""
|
2 |
import json
|
3 |
import logging
|
pytube/streams.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""
|
3 |
This module contains a container for stream manifest data.
|
4 |
|
|
|
|
|
1 |
"""
|
2 |
This module contains a container for stream manifest data.
|
3 |
|
pytube/version.py
CHANGED
@@ -1,5 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
-
|
3 |
__version__ = "10.7.1"
|
4 |
|
5 |
if __name__ == "__main__":
|
|
|
|
|
|
|
1 |
__version__ = "10.7.1"
|
2 |
|
3 |
if __name__ == "__main__":
|
setup.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1 |
#!/usr/bin/env python
|
2 |
-
|
3 |
-
"""This module contains setup instructions for pytube3."""
|
4 |
import codecs
|
5 |
import os
|
6 |
|
@@ -17,25 +16,22 @@ with open(os.path.join(here, "pytube", "version.py")) as fp:
|
|
17 |
setup(
|
18 |
name="pytube",
|
19 |
version=__version__, # noqa: F821
|
20 |
-
author="
|
21 |
-
author_email="
|
22 |
packages=["pytube", "pytube.contrib"],
|
23 |
package_data={"": ["LICENSE"],},
|
24 |
-
url="https://github.com/
|
25 |
-
license="
|
26 |
entry_points={
|
27 |
"console_scripts": [
|
28 |
-
"pytube = pytube.cli:main"
|
29 |
classifiers=[
|
30 |
"Development Status :: 5 - Production/Stable",
|
31 |
"Environment :: Console",
|
32 |
"Intended Audience :: Developers",
|
33 |
-
"License :: OSI Approved ::
|
34 |
"Natural Language :: English",
|
35 |
-
"Operating System ::
|
36 |
-
"Operating System :: Microsoft",
|
37 |
-
"Operating System :: POSIX",
|
38 |
-
"Operating System :: Unix",
|
39 |
"Programming Language :: Python :: 3.6",
|
40 |
"Programming Language :: Python :: 3.7",
|
41 |
"Programming Language :: Python :: 3.8",
|
@@ -54,8 +50,8 @@ setup(
|
|
54 |
zip_safe=True,
|
55 |
python_requires=">=3.6",
|
56 |
project_urls={
|
57 |
-
"Bug Reports": "https://github.com/
|
58 |
-
"Read the Docs": "https://
|
59 |
},
|
60 |
keywords=["youtube", "download", "video", "stream",],
|
61 |
)
|
|
|
1 |
#!/usr/bin/env python
|
2 |
+
"""This module contains setup instructions for pytube."""
|
|
|
3 |
import codecs
|
4 |
import os
|
5 |
|
|
|
16 |
setup(
|
17 |
name="pytube",
|
18 |
version=__version__, # noqa: F821
|
19 |
+
author="RonnieΒ Ghose, Taylor Fox Dahlin, Nick Ficano",
|
20 |
+
author_email="hey@pytube.io",
|
21 |
packages=["pytube", "pytube.contrib"],
|
22 |
package_data={"": ["LICENSE"],},
|
23 |
+
url="https://github.com/pytube/pytube",
|
24 |
+
license="The Unlicense (Unlicense)",
|
25 |
entry_points={
|
26 |
"console_scripts": [
|
27 |
+
"pytube = pytube.cli:main"],},
|
28 |
classifiers=[
|
29 |
"Development Status :: 5 - Production/Stable",
|
30 |
"Environment :: Console",
|
31 |
"Intended Audience :: Developers",
|
32 |
+
"License :: OSI Approved :: The Unlicense (Unlicense)",
|
33 |
"Natural Language :: English",
|
34 |
+
"Operating System :: OS Independent",
|
|
|
|
|
|
|
35 |
"Programming Language :: Python :: 3.6",
|
36 |
"Programming Language :: Python :: 3.7",
|
37 |
"Programming Language :: Python :: 3.8",
|
|
|
50 |
zip_safe=True,
|
51 |
python_requires=">=3.6",
|
52 |
project_urls={
|
53 |
+
"Bug Reports": "https://github.com/pytube/pytube/issues",
|
54 |
+
"Read the Docs": "https://pytube.io",
|
55 |
},
|
56 |
keywords=["youtube", "download", "video", "stream",],
|
57 |
)
|
tests/__init__.py
CHANGED
@@ -1,2 +1 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Package init | pydocstyle ignore isn't working :/."""
|
|
|
|
|
1 |
"""Package init | pydocstyle ignore isn't working :/."""
|
tests/conftest.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Reusable dependency injected testing components."""
|
3 |
import gzip
|
4 |
import json
|
|
|
|
|
1 |
"""Reusable dependency injected testing components."""
|
2 |
import gzip
|
3 |
import json
|
tests/contrib/test_playlist.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import datetime
|
3 |
from unittest import mock
|
4 |
|
|
|
|
|
1 |
import datetime
|
2 |
from unittest import mock
|
3 |
|
tests/test_captions.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import os
|
3 |
import pytest
|
4 |
from unittest import mock
|
|
|
|
|
1 |
import os
|
2 |
import pytest
|
3 |
from unittest import mock
|
tests/test_cipher.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import pytest
|
3 |
|
4 |
from pytube import cipher
|
|
|
|
|
1 |
import pytest
|
2 |
|
3 |
from pytube import cipher
|
tests/test_cli.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import argparse
|
3 |
import os
|
4 |
from unittest import mock
|
|
|
|
|
1 |
import argparse
|
2 |
import os
|
3 |
from unittest import mock
|
tests/test_exceptions.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import pytest
|
3 |
from unittest import mock
|
4 |
|
|
|
|
|
1 |
import pytest
|
2 |
from unittest import mock
|
3 |
|
tests/test_extract.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Unit tests for the :module:`extract <extract>` module."""
|
3 |
from datetime import datetime
|
4 |
import pytest
|
|
|
|
|
1 |
"""Unit tests for the :module:`extract <extract>` module."""
|
2 |
from datetime import datetime
|
3 |
import pytest
|
tests/test_helpers.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import gzip
|
3 |
import io
|
4 |
import json
|
|
|
|
|
1 |
import gzip
|
2 |
import io
|
3 |
import json
|
tests/test_itags.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
from pytube import itags
|
3 |
|
4 |
|
|
|
|
|
1 |
from pytube import itags
|
2 |
|
3 |
|
tests/test_main.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
from unittest import mock
|
3 |
|
4 |
import pytest
|
|
|
|
|
1 |
from unittest import mock
|
2 |
|
3 |
import pytest
|
tests/test_metadata.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Unit tests for the :module:`metadata <metadata>` module."""
|
3 |
from pytube import extract
|
4 |
|
|
|
|
|
1 |
"""Unit tests for the :module:`metadata <metadata>` module."""
|
2 |
from pytube import extract
|
3 |
|
tests/test_query.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
"""Unit tests for the :class:`StreamQuery <StreamQuery>` class."""
|
3 |
import pytest
|
4 |
|
|
|
|
|
1 |
"""Unit tests for the :class:`StreamQuery <StreamQuery>` class."""
|
2 |
import pytest
|
3 |
|
tests/test_request.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import socket
|
3 |
import os
|
4 |
import pytest
|
|
|
|
|
1 |
import socket
|
2 |
import os
|
3 |
import pytest
|
tests/test_streams.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
# -*- coding: utf-8 -*-
|
2 |
import os
|
3 |
import random
|
4 |
import pytest
|
|
|
|
|
1 |
import os
|
2 |
import random
|
3 |
import pytest
|