diff --git a/.gitignore b/.gitignore index 6c0ecba..4dbe268 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ !.vscode/launch.json !.vscode/ *.mp3 -aidmatch.py \ No newline at end of file +aidmatch.py +data.json +.idea/* \ No newline at end of file diff --git a/addMetadata.py b/addMetadata.py index 5e07e79..4cd6d3b 100644 --- a/addMetadata.py +++ b/addMetadata.py @@ -1,10 +1,13 @@ import sys import os -import mutagen from os.path import basename import acoustid import discogs_client as discogs from string import digits +import musicbrainzngs as m +from mutagen.id3 import ID3, APIC, _util +from mutagen.mp3 import EasyMP3 +from bs4 import BeautifulSoup def improve_song_names(songs): @@ -15,19 +18,18 @@ def improve_song_names(songs): improved_names = [] for song in songs: searchText = song[0:-4] - remove_digits = searchText.maketrans('', '', digits) - searchText = searchText.translate(remove_digits) + # remove_digits = searchText.maketrans('', '', digits) + # searchText = searchText.translate(remove_digits) for word in song[0:-4].split(' '): if word.lower() in blacklistWords: searchText = searchText.replace(word, '') - improved_names.append(searchText) + improved_names.append(searchText.strip()) return improved_names def get_metadata_acoustid(song): - API_KEY = 'GkQibmzT1u' try: results = acoustid.match(API_KEY, song) @@ -49,16 +51,32 @@ def get_metadata_acoustid(song): first = False else: print(result) + score, rid, title, artist = result[0], result[1], result[2], result[3] + valid = True if first is True: print("No Data found for " + song + " .... Skipping it") + valid = False + score, rid, title, artist = None, None, None, None + + return valid, score, rid, title, artist -def get_metadata_musicbrainz(song): - return +def get_metadata_musicbrainz(rid, artist, title): + d = m.set_useragent( + "MetadataRepair", + "0.1", + "https://github.com/yash2696/python-musicbrainzngs/", + ) + + result = m.search_recordings( + artist=artist, recording=title, rid=rid, limit=5) + + print(result) -def add_metadata(files): +def add_metadata(file_name, rid, title, artist): + return @@ -70,14 +88,17 @@ def list_files(): def get_metadata_discogs(song_name): d = discogs.Client('ExampleApplication/0.1', user_token="mbNSnSrqdyJOKorCDBXjzzeYNhgulysWNJbwgBmk") + results = d.search(song_name, type="release") first_result = results.page(1)[0] + # print(first_result) title = first_result.title - print(dir(first_result.artists[0])) + # print(dir(first_result)) print(title) print(first_result.artists[0].name) + print(first_result.images[0]) def main(): @@ -87,13 +108,34 @@ def main(): # get_metadata_discogs( # "Jonas Blue - By Your Side (Feat Raye)") - # files = improve_song_names(files) - for file in files: - print("-------------" + file + "------------------") + # get_metadata_discogs( + # "Maroon 5-Animals") + # valid, score, rid, title, artist = get_metadata_acoustid( + # "18. Justin Timberlake - CAN'T STOP THE FEELING!.mp3") + # print(valid) + # print(score) + # print(files) + # for file_name in files: + # print("-------------" + file_name + "------------------") + # print() + # valid, score, rid, title, artist = get_metadata_acoustid(file_name) + # if valid == True: + # get_metadata_musicbrainz(rid, artist, title) + # add_metadata(file_name, rid, title, artist) + # print() + # break + + files = improve_song_names(files) + # print(files) + count = 0 + for file_name in files: + print("-------------" + file_name + "------------------") print() - get_metadata_acoustid(file) + get_metadata_discogs(file_name) + count += 1 + if count > 5: + break print() - print(files) if __name__ == "__main__":