using mutagen and trying to figure out a way to improve search results accuracy

pull/1/head
Yash Agarwal 2017-06-14 22:14:05 +05:30
parent cb757fcd01
commit 84d6a9d59e
3 changed files with 62 additions and 26 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/
*.mp3

View File

@ -1,36 +1,59 @@
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():
m.set_useragent(
"RepairMusicMetadata", "0.1", "https://yashagarwal.me")
music_path = "/home/yash/bf.mp3"
file = eyed3.load(music_path)
artist_name = file.tag.artist
title = file.tag.title
album = file.tag.album
result = m.search_recordings(recording=title, country="IN", artist=artist_name, release=album)
files = list_files()
get_metadata("36. Galantis - No Money")
# add_metadata(files)
# result = m.search_releases("36. Galantis - No Money")
# print(result)
for query in result['recording-list']:
if(query['ext:score'] == "100"):
# print(query['release-list'][0]['title'])
# area = query['release-list'][0]['release-event-list'][0]['area']['name']
# 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)
# for rel in result['release-list']:
# print("{}, by {}".format(rel['title'], rel["artist-credit-phrase"]))
# if 'date' in rel:
# print("Released {} ({})".format(rel['date'], rel['status']))
# print("MusicBrainz ID: {}".format(rel['id']))
if __name__ == "__main__":

12
setup.py 100644
View File

@ -0,0 +1,12 @@
from distutils.core import setup
setup(
name='music-tagger',
version='1.0.0',
packages=[''],
url='https://github.com/yash2696/MP3Repair',
license='MIT',
author='Yash Agarwal',
author_email='yashagarwaljpr@gmail.com',
description=''
)