/
itson.py
102 lines (71 loc) · 2.69 KB
/
itson.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import urllib
import random
import os
from pyechonest import config
from pyechonest import sandbox
import echonest.audio as audio
config.ECHO_NEST_API_KEY = "YLTCU72SODVIC00NB"
config.ECHO_NEST_CONSUMER_KEY = 'd0fe2f9558fb209037fc49a4227ac81d'
config.ECHO_NEST_SHARED_SECRET = '9QNMqlVDQWWgMjxJVoej0Q'
sandbox_name = 'emi_professor_green'
# sandbox_name = 'emi_tinie_tempah'
print 'getting list of assets'
more_assets = True
asslists = []
images = []
videos = []
start = 0
while more_assets:
new_asslist = sandbox.list(sandbox_name, 100, start)
start += 100
if len(new_asslist) == 0:
more_assets = False
else:
asslists.append(new_asslist)
for i in range(len(asslists)):
if i == 0:
combo = asslists[i]
else:
combo = combo + asslists[i]
for asset in combo:
if 'title' in asset:
if asset['title'].find('Music Video') > -1 and asset['filename'].find('mp4') > -1:
if asset['filename'].find('high') > -1:
# videos.append(asset)
if asset['id'].find('2dd895f242b8b325053ae5cb853ad1d5'):
videos.append(asset)
# if asset['type'] == 'release_image':
# filename = str(asset['filename']).partition('/')[2];
# image_asset = sandbox.access(sandbox_name, asset['id'])
# urllib.urlretrieve(image_asset[0]['url'], sandbox_name + '_' + filename)
print 'selecting video'
video = random.choice(videos)
filename = str(video['filename']).partition('/')[2];
print filename
# video_asset = sandbox.access(sandbox_name, video['id'])
video_asset = sandbox.access(sandbox_name, '2dd895f242b8b325053ae5cb853ad1d5')
urllib.urlretrieve(video_asset[0]['url'], sandbox_name + '_' + filename)
print 'encoding audio'
os.system('ffmpeg -i ' + sandbox_name + '_' + filename + ' -vn -acodec libmp3lame -ab 192000 ' + sandbox_name + '_' + filename + '.mp3')
print 'acquiring analysis'
song_analysis = audio.LocalAudioFile(sandbox_name + '_' + filename + '.mp3')
sections = song_analysis.analysis.sections
bars = song_analysis.analysis.bars
beats = song_analysis.analysis.beats
tempo = song_analysis.analysis.tempo
# tatums = song_analysis.analysis.tatums
print 'writing analysis data'
f = open(sandbox_name + '_' + filename + '.ena', 'w')
f.write(str(tempo['value']) + '\n')
for section in sections:
f.write(str(section.start) + ':' + str(section.duration) + ', ')
f.write('\n')
for bar in bars:
f.write(str(bar.start) + ':' + str(bar.duration) + ', ')
f.write('\n')
for beat in beats:
f.write(str(beat.start) + ':' + str(beat.duration) + ', ')
f.write('\n')
f.write(filename)
print 'done'
f.close()