121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
|
# ytdl [![Build Status](https://travis-ci.org/rylio/ytdl.svg)](https://travis-ci.org/rylio/ytdl) [![GoDoc](https://godoc.org/github.com/rylio/ytdl?status.svg)](https://godoc.org/github.com/rylio/ytdl)
|
||
|
|
||
|
Go library for downloading YouTube videos
|
||
|
|
||
|
[Documentation: https://godoc.org/github.com/rylio/ytdl](https://godoc.org/github.com/rylio/ytdl "ytdl")
|
||
|
|
||
|
## Example
|
||
|
|
||
|
```go
|
||
|
import (
|
||
|
"github.com/otium/ytdl"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
vid, err := ytdl.GetVideoInfo("https://www.youtube.com/watch?v=1rZ-JorHJEY")
|
||
|
file, _ = os.Create(vid.Title + ".mp4")
|
||
|
defer file.Close()
|
||
|
vid.Download(file)
|
||
|
```
|
||
|
|
||
|
## ytdl CLI
|
||
|
|
||
|
- To install: `go get -u github.com/rylio/ytdl/...`
|
||
|
|
||
|
- Or use Docker image `docker pull brucwangno1/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
|
||
|
- `--no-progress` - Disables the progress bar
|
||
|
- `--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
|
||
|
|
||
|
```bash
|
||
|
ytdl -f itag:22 'https://www.youtube.com/watch?v=9bZkp7q19f0'
|
||
|
```
|
||
|
|
||
|
Download content with the best fps
|
||
|
|
||
|
```bash
|
||
|
ytdl -f best-fps 'https://www.youtube.com/watch?v=9bZkp7q19f0'
|
||
|
```
|
||
|
|
||
|
Get all download formats (Requires [jq](https://github.com/stedolan/jq) to be installed)
|
||
|
|
||
|
```bash
|
||
|
./ytdl -j 'http://youtube.com/watch?v=9bZkp7q19f0' | jq ".formats"
|
||
|
```
|
||
|
|
||
|
Extract title of the video (Requires [jq](https://github.com/stedolan/jq) to be installed)
|
||
|
|
||
|
```bash
|
||
|
ytdl -j 'http://youtube.com/watch?v=9bZkp7q19f0' | jq ".title"
|
||
|
```
|
||
|
|
||
|
Print download url without downloading the content
|
||
|
|
||
|
```bash
|
||
|
ytdl -f itag:22 --download-url 'https://www.youtube.com/watch?v=9bZkp7q19f0'
|
||
|
```
|
||
|
|
||
|
Print video and audio download options and accept input interactively
|
||
|
|
||
|
```bash
|
||
|
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.
|