-
Notifications
You must be signed in to change notification settings - Fork 0
/
MusicOCD.py
70 lines (61 loc) · 1.98 KB
/
MusicOCD.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
import mutagen.mp3
import musicbrainzngs
import time
from pprint import pprint
def opener(filepath):
metadata = mutagen.mp3.Open(filepath)
m_artist = metadata['TPE1']
m_song = metadata['TIT2']
m_album = metadata['TALB']
m_date = metadata['TDRC']
return {'artist':m_artist,
'song':m_song,
'album':m_album,
'date':m_date}
def search(song, artist):
musicbrainzngs.set_useragent("MusicOCD", "0.1", "https://github.com/asvas/MusicOCD")
s = musicbrainzngs.search_recordings(song, artist=artist, country='US')
artist = s['recording-list'][0]['artist-credit-phrase']
s_id = s['recording-list'][0]['id']
song = musicbrainzngs.get_recording_by_id(s_id)['recording']['title']
album = ''
date = 0
for i in s['recording-list']:
if i['artist-credit-phrase'] == artist:
for j in i['release-list']:
if 'release-group' in j and 'type' in j['release-group'] and 'date' in j:
if j['release-group']['type'] == 'Album':
for k in j['medium-list']:
if k != {} and k['track-list'][0]['title'] == song:
if date == 0:
date = eval(j['date'][0:4])
album = j['title']
else:
if eval(j['date'][0:4]) < date:
album = j['title']
date = eval(j['date'][0:4])
return {'artist':artist,
'song':song,
'album':album,
'date':date}
def evaluate(path):
info_file = opener(path)
info_web = search(info_file['song'],info_file['artist'])
print(info_file['song'], '-->', info_web['song'])
print(info_file['artist'], '-->', info_web['artist'])
print(info_file['album'], '-->', info_web['album'])
print(info_file['date'], '-->', info_web['date'])
return [info_file, info_web]
def backup_info(info):
info_back = info
back_up = open('MusicOCD_BackUp.txt', 'a')
back_up.write('o Edit date:\n')
back_up.write(str(time.time()) + ' / ' + str(time.asctime()) + '\n')
back_up.write('o Change:\n')
back_up.write(str(info_back) + '\n')
back_up.close()
def editor(path):
l = evaluate(path)
print(l)
l[0]['date']=l[1]['date']
print(l)