YTSFlix_Go/vendor/github.com/rylio/ytdl/README.md

121 lines
3.7 KiB
Markdown
Raw Normal View History

2018-11-04 14:58:15 +00:00
# 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.