Easily get data and download YouTube videos, focused on speed and simplicity.
Also works as a command-line extractor/downloader.
You can install ytget using pip:
pip install ytgetSome videos/formats will need ffmpeg to download. You can install it from the official website or by running:
sudo apt install ffmpeg- Simple use.
- Quick download and info extraction of youtube videos and playlists.
- Quick youtube search.
- Access to age restricted videos without login.
- Access to your private videos logging into your account.
- Command-line support.
To extract information from a video, create a Video object with the url or query:
from ytget import Video
video = Video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# Get info
title = video.title
duration = video.duration
subtitles = video.subtitles
stream_url = video.stream_url
# ...and so on.
# You can use print(dir(video)) or help(video) to get all available info and parameters.
# Download the video
video.download()
# Change some parameters
video.download(path="downloads/", quality="med", only_audio=True)You can also search for a query and get the information of all the videos obtained with the Search object:
from ytget import Search, Download
from ytget.utils import formatted_to_seconds
# Get the complete information of all videos
results = Search("never gonna give you up", get_duration_formatted=False).results
# Download all
results.download()
# Or do something with the results before downloading
filtered_results = list(filter(lambda x: x.duration < formatted_to_seconds('3:00'), results))
Download(filtered_results, quality="best", only_video=True, target_fps=30)
# Get simplified information (in case you need speed and don't need to download/get the stream urls)
results = Search("never gonna give you up", get_simple=True).results
for result in results:
print(result['title'], result['url'])Get information from a playlist with the Playlist object:
from ytget import Playlist, Fetch, Download
# Get the complete information of all videos
playlist = Playlist("https://www.youtube.com/watch?v=9OFpfTd0EIs&list=PLd9auH4JIHvupoMgW5YfOjqtj6Lih0MKw")
# Download all
playlist.download()
for video in playlist:
print(video.get('title'), video.get('url'))
# Instead of downloading directly, you can do something with the videos before
videos = list(filter(lambda x: x.title.lower().startswith('a'), playlist.videos))
Download(videos)
# If you want to be the most efficient, get only the initial data of each video
videos_info = list(filter(lambda x: x.get('title').lower().startswith('b'), playlist.videos_info))
Download(Fetch(videos_info))And (as shown in the previous examples) you can also use useful objects like Fetch and Download, and functions like formatted_to_seconds, format_seconds and delete_cache (among others) to make it even easier for you.
You can also use the GenericExtractor to extract info from various sites, though it's recommended to use a dedicated extractor for each website.
For more detailed information, use:
ytget --helpExample 1 - Downloading a video and printing its title and url:
ytget https://www.youtube.com/watch?v=dQw4w9WgXcQ --print title urlExample 2 - Searching for a query for videos under 5 minutes long, and without downloading get the data of all the videos and write it to a json file:
ytget "never gonna give you up" --max-duration 5:00 --search --skip-download --print all --write-to-jsonExample 3 - Get playlist info (with a maximum of 150 videos) and write to json file their titles, urls and ids:
ytget "https://www.youtube.com/playlist?list=PLd9auH4JIHvupoMgW5YfOjqtj6Lih0MKw" --max-length 150 --print title url video_id --skip-download --write-to-jsonAdd playlist support.- Add channels support.
Allow some way to download livestreams (fractions).- Allow search for multiple pages.
- Issues related to downloading age restricted videos without logging in.
- When downloading some specific formats the result might be "corrupted". For now this can be fixed by enabling "force_ffmpeg".
You can check the PyPi page of the package.
This project is licensed under the MIT License.