#!/bin/env python3 import sys import requests import base64 from tqdm import tqdm if len(sys.argv) > 1: master_json_url = sys.argv[1] else: print('master.json must be passed as argument', file=sys.stderr) exit(1) base_url = master_json_url[:master_json_url.rfind('/', 0, -26) + 1] resp = requests.get(master_json_url) content = resp.json() heights = [(i, d['height']) for (i, d) in enumerate(content['video'])] import pdb; pdb.set_trace() idx, _ = max(heights, key=lambda h: h[1]) video = content['video'][idx] video_base_url = base_url + video['base_url'] print('base url:', video_base_url) print(video['id']) filename = 'video_{}.mp4'.format(video['id']) print ('saving to {}'.format(filename)) video_file = open(filename, 'wb') init_segment = base64.b64decode(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()