%global _empty_manifest_terminate_build 0
Name: python-pytube3
Version: 9.6.4
Release: 1
Summary: Python 3 library for downloading YouTube Videos.
License: MIT
URL: https://github.com/hbmartin/pytube3
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/52/e6/e195069c72bbb71c53885cf41dc2b61c79b47a0e77da994ad220e3ed4766/pytube3-9.6.4.tar.gz
BuildArch: noarch
Requires: python3-typing-extensions
%description
# pytube3
## Table of Contents
* [Installation](#installation)
* [Quick start](#quick-start)
* [Features](#features)
* [Usage](#usage)
* [Command-line interface](#command-line-interface)
* [Development](#development)
* [GUIs and other libraries](#guis-and-other-libraries)
## Installation
Download using pip via pypi.
```bash
$ pip install pytube3 --upgrade
```
(Mac/homebrew users may need to use ``pip3``)
## Quick start
```python
>>> from pytube import YouTube
>>> YouTube('https://youtu.be/9bZkp7q19f0').streams.get_highest_resolution().download()
>>>
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> yt.streams
... .filter(progressive=True, file_extension='mp4')
... .order_by('resolution')[-1]
... .download()
```
A GUI frontend for pytube3 is available at [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload)
## Features
* Support for Both Progressive & DASH Streams
* Support for downloading complete playlist
* Easily Register ``on_download_progress`` & ``on_download_complete`` callbacks
* Command-line Interfaced Included
* Caption Track Support
* Outputs Caption Tracks to .srt format (SubRip Subtitle)
* Ability to Capture Thumbnail URL.
* Extensively Documented Source Code
* No Third-Party Dependencies
## Usage
Let's begin with showing how easy it is to download a video with pytube:
```python
>>> from pytube import YouTube
>>> YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams[0].download()
```
This example will download the highest quality progressive download stream available.
Next, let's explore how we would view what video streams are available:
```python
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> print(yt.streams)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Selecting an itag
You may notice that some streams listed have both a video codec and audio codec, while others have just video or just audio, this is a result of YouTube supporting a streaming technique called Dynamic Adaptive Streaming over HTTP (DASH).
In the context of pytube, the implications are for the highest quality streams; you now need to download both the audio and video tracks and then post-process them with software like FFmpeg to merge them.
The legacy streams that contain the audio and video in a single file (referred to as "progressive download") are still available, but only for resolutions 720p and below.
To only view these progressive download streams:
```python
>>> yt.streams.filter(progressive=True)
[,
,
,
,
]
```
Conversely, if you only want to see the DASH streams (also referred to as "adaptive") you can do:
```python
>>> yt.streams.filter(adaptive=True)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Playlists
You can also download a complete Youtube playlist:
```python
>>> from pytube import Playlist
>>> playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
>>> for video in playlist:
>>> video.streams.get_highest_resolution().download()
```
This will download the highest progressive stream available (generally 720p) from the given playlist.
### Filtering
Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
To list the audio only streams:
```python
>>> yt.streams.filter(only_audio=True)
[,
,
,
,
]
```
To list only ``mp4`` streams:
```python
>>> yt.streams.filter(subtype='mp4')
[,
,
,
,
,
,
,
,
]
```
Multiple filters can also be specified:
```python
>>> yt.streams.filter(subtype='mp4', progressive=True)
>>> # this can also be expressed as:
>>> yt.streams.filter(subtype='mp4').filter(progressive=True)
[,
]
```
You also have an interface to select streams by their itag, without needing to filter:
```python
>>> yt.streams.get_by_itag(22)
```
If you need to optimize for a specific feature, such as the "highest resolution" or "lowest average bitrate":
```python
>>> yt.streams.filter(progressive=True).order_by('resolution').desc()
```
Note: Using ``order_by`` on a given attribute will filter out all streams missing that attribute.
### Callbacks
If your application requires post-processing logic, pytube allows you to specify an "on download complete" callback function:
```python
>>> def convert_to_aac(stream, file_handler):
return # do work
>>> yt.register_on_complete_callback(convert_to_aac)
```
Similarly, if your application requires on-download progress logic, pytube exposes a callback for this as well:
```python
>>> def show_progress_bar(stream, chunk, file_handler, bytes_remaining):
return # do work
>>> yt.register_on_progress_callback(show_progress_bar)
```
## Command-line interface
pytube3 ships with a simple CLI interface for downloading videos, playlists, and captions.
Let's start with downloading:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --itag=18
```
To view available streams:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --list
```
The complete set of flags are:
```
usage: pytube3 [-h] [--version] [--itag ITAG] [-r RESOLUTION] [-l] [-v]
[--build-playback-report] [-c [CAPTION_CODE]] [-t TARGET]
[-a [AUDIO]] [-f [FFMPEG]]
[url]
Command line application to download youtube videos.
positional arguments:
url The YouTube /watch or /playlist url
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--itag ITAG The itag for the desired stream
-r RESOLUTION, --resolution RESOLUTION
The resolution for the desired stream
-l, --list The list option causes pytube cli to return a list of
streams available to download
-v, --verbose Verbosity level, use up to 4 to increase logging -vvvv
--build-playback-report
Save the html and js to disk
-c [CAPTION_CODE], --caption-code [CAPTION_CODE]
Download srt captions for given language code. Prints
available language codes if no argument given
-t TARGET, --target TARGET
The output directory for the downloaded stream.
Default is current working directory
-a [AUDIO], --audio [AUDIO]
Download the audio for a given URL at the highest
bitrate availableDefaults to mp4 format if none is
specified
-f [FFMPEG], --ffmpeg [FFMPEG]
Downloads the audio and video stream for resolution
providedIf no resolution is provided, downloads the
best resolutionRuns the command line program ffmpeg to
combine the audio and video
```
## Development
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
To run code checking before a PR use ``make test``
#### Virtual environment
Virtual environment is setup with [pipenv](https://pipenv-fork.readthedocs.io/en/latest/) and can be automatically activated with [direnv](https://direnv.net/docs/installation.html)
#### Code Formatting
This project is linted with [pyflakes](https://github.com/PyCQA/pyflakes), formatted with [black](https://github.com/ambv/black), and typed with [mypy](https://mypy.readthedocs.io/en/latest/introduction.html)
#### Code of Conduct
Treat other people with helpfulness, gratitude, and consideration! See the [Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/).
## GUIs and other libraries
* [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload) - Featured GUI frontend for pytube3
* [Pytube-GUI](https://github.com/GAO23/Pytube-GUI) - Simple GUI frontend for pytube3
* [StackOverflow questions](https://stackoverflow.com/questions/tagged/pytube)
* [PySlackers](https://pyslackers.com/web) - Python Slack group
%package -n python3-pytube3
Summary: Python 3 library for downloading YouTube Videos.
Provides: python-pytube3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-pytube3
# pytube3
## Table of Contents
* [Installation](#installation)
* [Quick start](#quick-start)
* [Features](#features)
* [Usage](#usage)
* [Command-line interface](#command-line-interface)
* [Development](#development)
* [GUIs and other libraries](#guis-and-other-libraries)
## Installation
Download using pip via pypi.
```bash
$ pip install pytube3 --upgrade
```
(Mac/homebrew users may need to use ``pip3``)
## Quick start
```python
>>> from pytube import YouTube
>>> YouTube('https://youtu.be/9bZkp7q19f0').streams.get_highest_resolution().download()
>>>
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> yt.streams
... .filter(progressive=True, file_extension='mp4')
... .order_by('resolution')[-1]
... .download()
```
A GUI frontend for pytube3 is available at [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload)
## Features
* Support for Both Progressive & DASH Streams
* Support for downloading complete playlist
* Easily Register ``on_download_progress`` & ``on_download_complete`` callbacks
* Command-line Interfaced Included
* Caption Track Support
* Outputs Caption Tracks to .srt format (SubRip Subtitle)
* Ability to Capture Thumbnail URL.
* Extensively Documented Source Code
* No Third-Party Dependencies
## Usage
Let's begin with showing how easy it is to download a video with pytube:
```python
>>> from pytube import YouTube
>>> YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams[0].download()
```
This example will download the highest quality progressive download stream available.
Next, let's explore how we would view what video streams are available:
```python
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> print(yt.streams)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Selecting an itag
You may notice that some streams listed have both a video codec and audio codec, while others have just video or just audio, this is a result of YouTube supporting a streaming technique called Dynamic Adaptive Streaming over HTTP (DASH).
In the context of pytube, the implications are for the highest quality streams; you now need to download both the audio and video tracks and then post-process them with software like FFmpeg to merge them.
The legacy streams that contain the audio and video in a single file (referred to as "progressive download") are still available, but only for resolutions 720p and below.
To only view these progressive download streams:
```python
>>> yt.streams.filter(progressive=True)
[,
,
,
,
]
```
Conversely, if you only want to see the DASH streams (also referred to as "adaptive") you can do:
```python
>>> yt.streams.filter(adaptive=True)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Playlists
You can also download a complete Youtube playlist:
```python
>>> from pytube import Playlist
>>> playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
>>> for video in playlist:
>>> video.streams.get_highest_resolution().download()
```
This will download the highest progressive stream available (generally 720p) from the given playlist.
### Filtering
Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
To list the audio only streams:
```python
>>> yt.streams.filter(only_audio=True)
[,
,
,
,
]
```
To list only ``mp4`` streams:
```python
>>> yt.streams.filter(subtype='mp4')
[,
,
,
,
,
,
,
,
]
```
Multiple filters can also be specified:
```python
>>> yt.streams.filter(subtype='mp4', progressive=True)
>>> # this can also be expressed as:
>>> yt.streams.filter(subtype='mp4').filter(progressive=True)
[,
]
```
You also have an interface to select streams by their itag, without needing to filter:
```python
>>> yt.streams.get_by_itag(22)
```
If you need to optimize for a specific feature, such as the "highest resolution" or "lowest average bitrate":
```python
>>> yt.streams.filter(progressive=True).order_by('resolution').desc()
```
Note: Using ``order_by`` on a given attribute will filter out all streams missing that attribute.
### Callbacks
If your application requires post-processing logic, pytube allows you to specify an "on download complete" callback function:
```python
>>> def convert_to_aac(stream, file_handler):
return # do work
>>> yt.register_on_complete_callback(convert_to_aac)
```
Similarly, if your application requires on-download progress logic, pytube exposes a callback for this as well:
```python
>>> def show_progress_bar(stream, chunk, file_handler, bytes_remaining):
return # do work
>>> yt.register_on_progress_callback(show_progress_bar)
```
## Command-line interface
pytube3 ships with a simple CLI interface for downloading videos, playlists, and captions.
Let's start with downloading:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --itag=18
```
To view available streams:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --list
```
The complete set of flags are:
```
usage: pytube3 [-h] [--version] [--itag ITAG] [-r RESOLUTION] [-l] [-v]
[--build-playback-report] [-c [CAPTION_CODE]] [-t TARGET]
[-a [AUDIO]] [-f [FFMPEG]]
[url]
Command line application to download youtube videos.
positional arguments:
url The YouTube /watch or /playlist url
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--itag ITAG The itag for the desired stream
-r RESOLUTION, --resolution RESOLUTION
The resolution for the desired stream
-l, --list The list option causes pytube cli to return a list of
streams available to download
-v, --verbose Verbosity level, use up to 4 to increase logging -vvvv
--build-playback-report
Save the html and js to disk
-c [CAPTION_CODE], --caption-code [CAPTION_CODE]
Download srt captions for given language code. Prints
available language codes if no argument given
-t TARGET, --target TARGET
The output directory for the downloaded stream.
Default is current working directory
-a [AUDIO], --audio [AUDIO]
Download the audio for a given URL at the highest
bitrate availableDefaults to mp4 format if none is
specified
-f [FFMPEG], --ffmpeg [FFMPEG]
Downloads the audio and video stream for resolution
providedIf no resolution is provided, downloads the
best resolutionRuns the command line program ffmpeg to
combine the audio and video
```
## Development
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
To run code checking before a PR use ``make test``
#### Virtual environment
Virtual environment is setup with [pipenv](https://pipenv-fork.readthedocs.io/en/latest/) and can be automatically activated with [direnv](https://direnv.net/docs/installation.html)
#### Code Formatting
This project is linted with [pyflakes](https://github.com/PyCQA/pyflakes), formatted with [black](https://github.com/ambv/black), and typed with [mypy](https://mypy.readthedocs.io/en/latest/introduction.html)
#### Code of Conduct
Treat other people with helpfulness, gratitude, and consideration! See the [Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/).
## GUIs and other libraries
* [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload) - Featured GUI frontend for pytube3
* [Pytube-GUI](https://github.com/GAO23/Pytube-GUI) - Simple GUI frontend for pytube3
* [StackOverflow questions](https://stackoverflow.com/questions/tagged/pytube)
* [PySlackers](https://pyslackers.com/web) - Python Slack group
%package help
Summary: Development documents and examples for pytube3
Provides: python3-pytube3-doc
%description help
# pytube3
## Table of Contents
* [Installation](#installation)
* [Quick start](#quick-start)
* [Features](#features)
* [Usage](#usage)
* [Command-line interface](#command-line-interface)
* [Development](#development)
* [GUIs and other libraries](#guis-and-other-libraries)
## Installation
Download using pip via pypi.
```bash
$ pip install pytube3 --upgrade
```
(Mac/homebrew users may need to use ``pip3``)
## Quick start
```python
>>> from pytube import YouTube
>>> YouTube('https://youtu.be/9bZkp7q19f0').streams.get_highest_resolution().download()
>>>
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> yt.streams
... .filter(progressive=True, file_extension='mp4')
... .order_by('resolution')[-1]
... .download()
```
A GUI frontend for pytube3 is available at [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload)
## Features
* Support for Both Progressive & DASH Streams
* Support for downloading complete playlist
* Easily Register ``on_download_progress`` & ``on_download_complete`` callbacks
* Command-line Interfaced Included
* Caption Track Support
* Outputs Caption Tracks to .srt format (SubRip Subtitle)
* Ability to Capture Thumbnail URL.
* Extensively Documented Source Code
* No Third-Party Dependencies
## Usage
Let's begin with showing how easy it is to download a video with pytube:
```python
>>> from pytube import YouTube
>>> YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams[0].download()
```
This example will download the highest quality progressive download stream available.
Next, let's explore how we would view what video streams are available:
```python
>>> yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0')
>>> print(yt.streams)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Selecting an itag
You may notice that some streams listed have both a video codec and audio codec, while others have just video or just audio, this is a result of YouTube supporting a streaming technique called Dynamic Adaptive Streaming over HTTP (DASH).
In the context of pytube, the implications are for the highest quality streams; you now need to download both the audio and video tracks and then post-process them with software like FFmpeg to merge them.
The legacy streams that contain the audio and video in a single file (referred to as "progressive download") are still available, but only for resolutions 720p and below.
To only view these progressive download streams:
```python
>>> yt.streams.filter(progressive=True)
[,
,
,
,
]
```
Conversely, if you only want to see the DASH streams (also referred to as "adaptive") you can do:
```python
>>> yt.streams.filter(adaptive=True)
[,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]
```
### Playlists
You can also download a complete Youtube playlist:
```python
>>> from pytube import Playlist
>>> playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
>>> for video in playlist:
>>> video.streams.get_highest_resolution().download()
```
This will download the highest progressive stream available (generally 720p) from the given playlist.
### Filtering
Pytube allows you to filter on every property available (see the documentation for the complete list), let's take a look at some of the most useful ones.
To list the audio only streams:
```python
>>> yt.streams.filter(only_audio=True)
[,
,
,
,
]
```
To list only ``mp4`` streams:
```python
>>> yt.streams.filter(subtype='mp4')
[,
,
,
,
,
,
,
,
]
```
Multiple filters can also be specified:
```python
>>> yt.streams.filter(subtype='mp4', progressive=True)
>>> # this can also be expressed as:
>>> yt.streams.filter(subtype='mp4').filter(progressive=True)
[,
]
```
You also have an interface to select streams by their itag, without needing to filter:
```python
>>> yt.streams.get_by_itag(22)
```
If you need to optimize for a specific feature, such as the "highest resolution" or "lowest average bitrate":
```python
>>> yt.streams.filter(progressive=True).order_by('resolution').desc()
```
Note: Using ``order_by`` on a given attribute will filter out all streams missing that attribute.
### Callbacks
If your application requires post-processing logic, pytube allows you to specify an "on download complete" callback function:
```python
>>> def convert_to_aac(stream, file_handler):
return # do work
>>> yt.register_on_complete_callback(convert_to_aac)
```
Similarly, if your application requires on-download progress logic, pytube exposes a callback for this as well:
```python
>>> def show_progress_bar(stream, chunk, file_handler, bytes_remaining):
return # do work
>>> yt.register_on_progress_callback(show_progress_bar)
```
## Command-line interface
pytube3 ships with a simple CLI interface for downloading videos, playlists, and captions.
Let's start with downloading:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --itag=18
```
To view available streams:
```bash
$ pytube3 http://youtube.com/watch?v=9bZkp7q19f0 --list
```
The complete set of flags are:
```
usage: pytube3 [-h] [--version] [--itag ITAG] [-r RESOLUTION] [-l] [-v]
[--build-playback-report] [-c [CAPTION_CODE]] [-t TARGET]
[-a [AUDIO]] [-f [FFMPEG]]
[url]
Command line application to download youtube videos.
positional arguments:
url The YouTube /watch or /playlist url
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--itag ITAG The itag for the desired stream
-r RESOLUTION, --resolution RESOLUTION
The resolution for the desired stream
-l, --list The list option causes pytube cli to return a list of
streams available to download
-v, --verbose Verbosity level, use up to 4 to increase logging -vvvv
--build-playback-report
Save the html and js to disk
-c [CAPTION_CODE], --caption-code [CAPTION_CODE]
Download srt captions for given language code. Prints
available language codes if no argument given
-t TARGET, --target TARGET
The output directory for the downloaded stream.
Default is current working directory
-a [AUDIO], --audio [AUDIO]
Download the audio for a given URL at the highest
bitrate availableDefaults to mp4 format if none is
specified
-f [FFMPEG], --ffmpeg [FFMPEG]
Downloads the audio and video stream for resolution
providedIf no resolution is provided, downloads the
best resolutionRuns the command line program ffmpeg to
combine the audio and video
```
## Development
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
To run code checking before a PR use ``make test``
#### Virtual environment
Virtual environment is setup with [pipenv](https://pipenv-fork.readthedocs.io/en/latest/) and can be automatically activated with [direnv](https://direnv.net/docs/installation.html)
#### Code Formatting
This project is linted with [pyflakes](https://github.com/PyCQA/pyflakes), formatted with [black](https://github.com/ambv/black), and typed with [mypy](https://mypy.readthedocs.io/en/latest/introduction.html)
#### Code of Conduct
Treat other people with helpfulness, gratitude, and consideration! See the [Python Community Code of Conduct](https://www.python.org/psf/codeofconduct/).
## GUIs and other libraries
* [YouTubeDownload](https://github.com/YouTubeDownload/YouTubeDownload) - Featured GUI frontend for pytube3
* [Pytube-GUI](https://github.com/GAO23/Pytube-GUI) - Simple GUI frontend for pytube3
* [StackOverflow questions](https://stackoverflow.com/questions/tagged/pytube)
* [PySlackers](https://pyslackers.com/web) - Python Slack group
%prep
%autosetup -n pytube3-9.6.4
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-pytube3 -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Sun Apr 23 2023 Python_Bot - 9.6.4-1
- Package Spec generated