Skip to main content

Easily get data and download youtube videos, focused on speed and simplicity.

Project description

ytget

Easily get data and download YouTube videos, focused on speed and simplicity.

Also works as a command-line extractor/downloader.

Installation

You can install ytget using pip:

pip install ytget

Features

  • 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.

Usage

Python

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:

from ytget import Search
from ytget.utils import format_seconds

# Get the complete information of all videos
results = Search("never gonna give you up", get_duration_formatted=False).results

# Download all
results.download()

for result in results:
    # Only download if the video is less than 3 minutes long
    if result.duration < format_seconds('3:00'):
        result.download(quality="best", only_video=True, target_fps=30)


# Get simplified information (in case you need speed and don't need to download)
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:

from ytget import Playlist, Fetch

# 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 = playlist.videos

for video in videos:
    # Download videos starting with the letter a
    if video.title.lower().startswith('a'):
        video.download()

        
# 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))

videos_to_download = Fetch(videos_info)
for video in videos_to_download:
    video.download()

Command-line

For more detailed information, use:

ytget --help

Example 1 - Downloading a video and printing its title and url:

ytget https://www.youtube.com/watch?v=dQw4w9WgXcQ --print title url

Example 2 - Searching for a query, without downloading get the data of all the videos and write it to a json file:

ytget "never gonna give you up" --search --skip-download --print all --write-to-json

Example 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-json

To Do

  • Add playlist support.
  • Add channels support.
  • Allow some way to download livestreams (fractions).
  • Make user input download speed in MB/s and not using chunk size.

Known issues

  • Issues related to downloading age restricted videos with and without logging in.
  • When downloading some specific formats the result might be "corrupted". For now this can be fixed by enabling "force_ffmpeg".

Repository

The source code is available on GitHub.

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ytget-0.2.1.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ytget-0.2.1-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file ytget-0.2.1.tar.gz.

File metadata

  • Download URL: ytget-0.2.1.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.0

File hashes

Hashes for ytget-0.2.1.tar.gz
Algorithm Hash digest
SHA256 fe2805d56979fc2be8e1ae03858accd62d72e02d7b2c634e1f43137c70b2094e
MD5 cea2168d95b867f08965818d1857c17f
BLAKE2b-256 ecebf841994e4b57ed8e7a23ff3f9533706646b303be0de51164213113f9eff7

See more details on using hashes here.

File details

Details for the file ytget-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ytget-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.0

File hashes

Hashes for ytget-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1057314fc7cc19d3a71b6d0d904a51acbef54f08c60785dec81ef005f42ee2fd
MD5 319ffc33a3fd739fa479edf9eb1dc5a7
BLAKE2b-256 725e45851ce1c4640d6c5db432f6418d6ec114512ec91b9f9985f0933bbec85a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page