using mutagen and trying to figure out a way to improve search results accuracy
parent
cb757fcd01
commit
84d6a9d59e
|
@ -2,4 +2,5 @@
|
||||||
!.vscode/settings.json
|
!.vscode/settings.json
|
||||||
!.vscode/tasks.json
|
!.vscode/tasks.json
|
||||||
!.vscode/launch.json
|
!.vscode/launch.json
|
||||||
!.vscode/extensions.json
|
!.vscode/
|
||||||
|
*.mp3
|
|
@ -1,36 +1,59 @@
|
||||||
import musicbrainzngs as m
|
import musicbrainzngs as m
|
||||||
import sys, eyed3
|
import sys
|
||||||
|
from mutagen.id3 import ID3
|
||||||
|
from mutagen import File
|
||||||
|
import os
|
||||||
|
import mutagen
|
||||||
|
from os.path import basename
|
||||||
|
import spotipy
|
||||||
|
|
||||||
|
def improve_song_name(song):
|
||||||
|
return song
|
||||||
|
|
||||||
|
|
||||||
|
def get_metadata(song):
|
||||||
|
spotify = spotipy.Spotify()
|
||||||
|
results = spotify.search(song_name, limit=1)
|
||||||
|
|
||||||
|
results = results['tracks']['items'][0] # Find top result
|
||||||
|
album = results['album']['name'] # Parse json dictionary
|
||||||
|
artist = results['album']['artists'][0]['name']
|
||||||
|
song_title = results['name']
|
||||||
|
album_art = results['album']['images'][0]['url']
|
||||||
|
|
||||||
|
return artist, album, song_title, album_art
|
||||||
|
|
||||||
|
def add_metadata(files):
|
||||||
|
# tags = File("/home/yash/Desktop/music-tagger/sample_songs/02. DJ Snake - Let Me Love You (Feat. Justin Bieber).mp3")
|
||||||
|
# print(tags)
|
||||||
|
for file in files:
|
||||||
|
print(file)
|
||||||
|
tags = File(file)
|
||||||
|
song_name = basename(file[:-4])
|
||||||
|
song_name = improve_song_name(song_name)
|
||||||
|
|
||||||
|
title, artist, album, cover_art = get_metadata(song_name)
|
||||||
|
|
||||||
|
|
||||||
|
def list_files():
|
||||||
|
files = []
|
||||||
|
return [f for f in os.listdir('.') if f.endswith('.mp3')]
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
m.set_useragent(
|
m.set_useragent(
|
||||||
"RepairMusicMetadata", "0.1", "https://yashagarwal.me")
|
"RepairMusicMetadata", "0.1", "https://yashagarwal.me")
|
||||||
|
|
||||||
music_path = "/home/yash/bf.mp3"
|
files = list_files()
|
||||||
file = eyed3.load(music_path)
|
get_metadata("36. Galantis - No Money")
|
||||||
|
# add_metadata(files)
|
||||||
artist_name = file.tag.artist
|
# result = m.search_releases("36. Galantis - No Money")
|
||||||
title = file.tag.title
|
|
||||||
album = file.tag.album
|
|
||||||
|
|
||||||
result = m.search_recordings(recording=title, country="IN", artist=artist_name, release=album)
|
|
||||||
# print(result)
|
# print(result)
|
||||||
|
# for rel in result['release-list']:
|
||||||
for query in result['recording-list']:
|
# print("{}, by {}".format(rel['title'], rel["artist-credit-phrase"]))
|
||||||
if(query['ext:score'] == "100"):
|
# if 'date' in rel:
|
||||||
# print(query['release-list'][0]['title'])
|
# print("Released {} ({})".format(rel['date'], rel['status']))
|
||||||
# area = query['release-list'][0]['release-event-list'][0]['area']['name']
|
# print("MusicBrainz ID: {}".format(rel['id']))
|
||||||
# print(area)
|
|
||||||
if(query['release-list'][0]['title'] == album):
|
|
||||||
id = query['release-list'][0]['medium-list'][0]['track-list'][0]['id']
|
|
||||||
print(id)
|
|
||||||
else:
|
|
||||||
print("Not Found")
|
|
||||||
# print(id)
|
|
||||||
# x = m.get_recording_by_id(id)
|
|
||||||
# print(x)
|
|
||||||
# break
|
|
||||||
# print(release)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue