Categorygithub.com/rylio/ytdl
modulepackage
0.6.4
Repository: https://github.com/rylio/ytdl.git
Documentation: pkg.go.dev

# README

ytdl

Go library for downloading YouTube videos

Documentation Build Status Codecov Go ReportCard

Example

package main

import (
	"context"
	"os"

	"github.com/rylio/ytdl"
)

func main() {
	ctx := context.Background()
	client := ytdl.DefaultClient

	videoInfo, err := client.GetVideoInfo(ctx, "https://www.youtube.com/watch?v=WkVvG4QTO9M")
	if err != nil {
		panic(err)
	}

	file, err := os.Create(videoInfo.Title + ".mp4")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	err = client.Download(ctx, videoInfo, videoInfo.Formats[0], file)
	if err != nil {
		panic(err)
	}
}

ytdl CLI

  • To install: go get -u github.com/rylio/ytdl/...

  • Or use Docker image docker pull brucewangno1/ytdl:1.0

Usage

  • ytdl [global options] [youtube url or video id]
  • Or using Docker: docker run -it --rm -v /directory/you/want/to/save/the/download/:/ytdl/ brucewangno1/ytdl:1.0 [global options] "[youtube url or video id]"

Options

  • --help, -h - show help
  • --filter, -f - Filter out formats
    • Syntax: -f key:value1,value2,...,valueN
      • Shortcuts for best/worst(e.g. -f best)
        • best/worst - best/worst video and audio
        • best-video/worst-video - best/worst video
        • best-fps/worst-fps - best/worst video with fps as the first priority
        • best-audio/worst-audio - best/worst audio
    • To exclude: -f !key:value1,...
    • Available keys (See format.go for available values):
      • ext - extension of video
      • res - resolution of video
      • videnc - video encoding
      • audenc - audio encoding
      • prof - youtube video profile
      • audbr - audio bitrate
    • Default filters
      • ext:mp4
      • !videnc:
      • !audenc:
      • best
  • --output, -o - Output to specific path
    • Supports templates, ex: {{.Title}}.{{.Ext}}
    • Defaults to {{.Title}}.{{.Ext}}
    • Supported template variables are Title, Ext, DatePublished, Resolution
    • Pass - to output to stdout, former stdout output is redirected to stderr
  • --info, -i - Just gets video info, outputs to stdout
  • --silent, -s - Disables all output, except for fatal errors
  • --debug, -d - Output debug logs
  • --append, -a - append to output file, instead of truncating
  • --range, -r - specify a range of bytes, placed in http range header, ex: 0-100
  • --download-url, -u - just print download url to, don't do anything else
  • --version, -v - print out ytdl cli version
  • --start-offset - offset the beginning of the video by a duration of time(e.g. 20s or 1m)
  • --download-option, -p - Print video and audio download options and accept input interactively

Examples

Download content based on itag

ytdl -f itag:22 'https://www.youtube.com/watch?v=9bZkp7q19f0'

Download content with the best fps

ytdl -f best-fps 'https://www.youtube.com/watch?v=9bZkp7q19f0'

Get all download formats (Requires jq to be installed)

./ytdl -j 'http://youtube.com/watch?v=9bZkp7q19f0' | jq ".formats"

Extract title of the video (Requires jq to be installed)

ytdl -j 'http://youtube.com/watch?v=9bZkp7q19f0' | jq ".title"

Print download url without downloading the content

ytdl -f itag:22 --download-url 'https://www.youtube.com/watch?v=9bZkp7q19f0'

Print video and audio download options and accept input interactively

ytdl -p 'https://www.youtube.com/watch?v=9bZkp7q19f0'

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

ytdl is released under the MIT License, see LICENSE for more details.

# Packages

# Functions

GetVideoInfo fetches info from a url string, url object, or a url string.

# Constants

Available format Keys.
Available format Keys.
Available format Keys.
Available format Keys.
Available format Keys.
Available format Keys.
Available format Keys.
ThumbnailQualityDefault is the default quality thumbnail jpg.
ThumbnailQualityHigh is the high quality thumbnail jpg.
ThumbnailQualityMaxRes is the maximum resolution quality jpg.
ThumbnailQualityMedium is the medium quality thumbnail jpg.
ThumbnailQualitySD is the standard def quality thumbnail jpg.

# Variables

ITAGS is a map of all itags and their attributes.

# Structs

Itag is a youtube is a static youtube video format.
VideoInfo contains the info a youtube video.

# Type aliases

FormatKey is a string type containing a key in a video format map.
FormatList is a slice of formats with filtering functionality.
ThumbnailQuality is a youtube thumbnail quality option.