-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path010-ffmpeg.py
executable file
·44 lines (33 loc) · 1.22 KB
/
010-ffmpeg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env python
"""
Demonstrates converting the videos to a uniform format after download
eg: ./010-ffmpeg.py --output "dog.mp4" "skateboarding dog"
"""
import argparse
import subprocess
import os
import re
import json
import requests
import glob
def main():
parser = argparse.ArgumentParser(description='Download some videos')
parser.add_argument('--output', type=str, help='output name', default='triptych.mp4')
parser.add_argument('keyword', type=str, nargs=1, help='A keyword used to search YouTube')
args = parser.parse_args()
base, ext = os.path.splitext( args.output )
work_dir = "%s_tmp" % (base)
if not os.path.exists(work_dir):
os.makedirs(work_dir)
feed_url = "http://gdata.youtube.com/feeds/api/videos?q={0}&max-results=3&v=2&alt=json".format(args.keyword[0])
r = requests.get(feed_url)
feed = json.loads( r.text )
for i, entry in enumerate(feed["feed"]["entry"]):
url = entry["link"][0]["href"]
cmd = 'youtube-dl -f 18 -o "{0}/{1}.mp4" "{2}"'.format(work_dir, i, url)
subprocess.call(cmd, shell=True)
cmd = 'ffmpeg -loglevel quiet -n -i {0}/{1}.mp4 -q:v 1 -r 30 {0}/{1}.avi'.format(work_dir, i, work_dir, i)
subprocess.call(cmd, shell=True)
print "done!"
if __name__ == '__main__':
main()