Skip to content

Instantly share code, notes, and snippets.

@cvogt
Forked from alexeygrigorev/vimeo-download.py
Last active December 26, 2018 08:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cvogt/1e46597e39bfe0e0aee8d5348123ca03 to your computer and use it in GitHub Desktop.
Save cvogt/1e46597e39bfe0e0aee8d5348123ca03 to your computer and use it in GitHub Desktop.
Downloading segmented video from vimeo
#!/usr/bin/env python2.7
# https://gist.github.com/cvogt/1e46597e39bfe0e0aee8d5348123ca03
# based on https://gist.github.com/alexeygrigorev/a1bc540925054b71e1a7268e50ad55cd#file-vimeo-download-py
# also see https://github.com/eMBee/vimeo-download
import requests
import base64
import sys
from tqdm import tqdm
master_json_url = sys.argv[1]
print ("downloading " + master_json_url)
base_url = master_json_url[:master_json_url.rfind('/', 0, -1) + 1]
resp = requests.get(master_json_url)
content = resp.json()
heights = [(i, d['height']) for (i, d) in enumerate(content['video'])]
idx, _ = max(heights, key=lambda (_, h): h)
video = content['video'][idx]
video_base_url = base_url + video['base_url']
print 'base url:', video_base_url
filename = 'video_%s.mp4' % video['id']
print 'saving to %s' % filename
video_file = open(filename, 'wb')
init_segment = video['init_segment']
video_file.write(init_segment)
for segment in tqdm(video['segments']):
segment_url = video_base_url + segment['url']
resp = requests.get(segment_url, stream=True)
if resp.status_code != 200:
print 'not 200!'
print resp
print segment_url
break
for chunk in resp:
video_file.write(chunk)
video_file.flush()
video_file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment