Profile
Back to NewsBack
GitHub Trending 4 min
Reader Mode
akiomik/vimeo-dl: A cli tool to download private videos on vimeo. Written in golang.

akiomik/vimeo-dl: A cli tool to download private videos on vimeo. Written in golang.

10 hours ago

vimeo-dl ========

Go</a>

A tool to download Vimeo videos when you have access to their JSON playback manifest.

Usage

vimeo-dl --combine -i "${MASTER_JSON_URL}"

The input must be a master.json or playlist.json playback manifest URL, including any signed query string. A Vimeo video page URL or an HLS .m3u8 URL cannot be used as input. If the JSON manifest uses path-like init segments, request it with base64_init=1. If multiple segments resolve to the same media URL, request it with query_string_ranges=1. Quote the URL in the shell so & stays inside the argument. Signed manifest URLs can expire; obtain a fresh one if the request returns an HTTP error. The tool does not print signed media URLs. On filesystems with POSIX permissions, downloaded media is readable only by the current user.

Advanced Usage

# Download a video as ${clip_id}-video.mp4 (1080p).

The highest bitrate track is automatically selected.

vimeo-dl -i "https://skyfire.vimeocdn.com/xxx/yyy/live-archive/video/240p,360p,540p,720p,1080p/master.json?base64_init=1&query_string_ranges=1"
# Download a video as ${clip_id}-video.mp4 (720p) with the specified user-agent.
vimeo-dl -i "https://skyfire.vimeocdn.com/xxx/yyy/live-archive/video/240p,360p,540p,720p,1080p/master.json?base64_init=1&query_string_ranges=1" \
         --video-id "720p" \
         --user-agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"

you can use jq command to list available formats associated ids (https://jqlang.org)

curl -s $URL | jq '[.video[] | {id, height, width, codecs}] | sort_by(.height)'
# Download a video as ${clip_id}.mp4.
vimeo-dl -i "https://8vod-adaptive.akamaized.net/xxx/yyy/sep/video/9f88d1ff,b83d0f9d,da44206b,f34fd50d,f9ebc26f/master.json?base64_init=1" \
         --video-id "b83d0f9d" \
         --audio-id "b83d0f9d" \
         --combine

Download a video as my-video-file-name.mp4.

vimeo-dl -i "https://8vod-adaptive.akamaized.net/xxx/yyy/sep/video/9f88d1ff,b83d0f9d,da44206b,f34fd50d,f9ebc26f/master.json?base64_init=1" \ --video-id "b83d0f9d" \ --audio-id "b83d0f9d" \ --combine \ --output-file-name "my-video-file-name"

The combine option is equivalent to the following command.

vimeo-dl -i "https://8vod-adaptive.akamaized.net/xxx/yyy/sep/video/9f88d1ff,b83d0f9d,da44206b,f34fd50d,f9ebc26f/master.json?base64_init=1" \ --video-id "b83d0f9d" \ --audio-id "b83d0f9d" ffmpeg -i ${clip_id}-video.mp4 -i ${clip_id}-audio.mp4 -c copy ${clip_id}.mp4

Options

Usage:
  vimeo-dl [flags]

Flags: --audio-id string audio id --combine combine video and audio into a single mp4 (ffmpeg is required) -h, --help help for vimeo-dl -i, --input string url for master.json or playlist.json (required) -o, --output-file-name string output file name --user-agent string user-agent for request -v, --version version for vimeo-dl --video-id string video id

Install

Installing or building from source requires the Go version specified in .go-version or newer.

Pre-compiled binaries

Currently, Windows, macOS and linux are supported.

  • Download the latest release from the release page.
  • Extract the downloaded .tar.gz file.

go install

go install github.com/akiomik/vimeo-dl@latest

Build

make build

Test

make test

Docker

Using Docker images is useful if you do not have ffmpeg installed.

Build docker image:

# build docker image (with ffmpeg)
docker build -t vimeo-dl .

build docker image without ffpeg

docker build -t vimeo-dl:no-ffmpeg --target=no-ffmpeg .

Use docker image (instead of the binary):

docker run -v "$(pwd)/downloads:/downloads" vimeo-dl ...

Chat with me