def fix(song_info, test=0): oldArtist = song_info["primary_artists"] newArtist = tools.removeGibberish(oldArtist) newArtist = tools.divideBySColon(newArtist) newArtist = tools.removeTrailingExtras(newArtist) song_info['primary_artists'] = tools.removeDup(newArtist) song_info["singers"] = song_info['primary_artists'] old_composer = song_info["music"] new_composer = tools.removeGibberish(old_composer) new_composer = tools.divideBySColon(new_composer) new_composer = tools.removeTrailingExtras(new_composer) song_info["music"] = tools.removeDup(new_composer) song_info['image'] = song_info['image'].replace('-150x150.jpg', '-500x500.jpg') # ---------------------------------------------------------------# new_title = song_info['title'].replace('"', '#') if new_title != song_info['title']: song_info['title'] = new_title song_info['title'] = tools.removeGibberish(song_info['title']) x = re.compile( r''' ( [(\[] .* # 'featured in' or 'from' or any other shit in quotes \#(.*)\# # album name [)\]] ) ''', re.VERBOSE) album_name = x.findall(song_info['title']) song_info['title'] = song_info['title'].replace(album_name[0][0], '').strip() song_info['actual_album'] = album_name[0][1] # old method, if above wont work, this will work 9/10 times. # json_data = re.sub(r'.\(\b.*?"\)', "", str(info.text)) # json_data = re.sub(r'.\[\b.*?"\]', "", json_data) # actual_album = '' else: song_info['actual_album'] = '' song_info['title'] = tools.removeGibberish(song_info['title']) song_info["album"] = tools.removeGibberish(song_info["album"]).strip() if test: print(json.dumps(song_info, indent=2))
def fixArtist(tags): try: oldArtist = tags['artist'][0] print("Curr Artist: ", oldArtist) except KeyError: print("No Artist was found in tags, moving on...") return # old one # oldArtist = ';'.join(re.split(r'/|,|& ', oldArtist)) # 2nd old method # oldArtist = re.sub(r'\s*&\s*|\s*/\s*|\s*,\s*', ';', oldArtist) # oldArtist = re.sub(r';\s*;\s*|;\s*', '; ', oldArtist) # new method newArtist = tools.removeGibberish(oldArtist) newArtist = tools.divideBySColon(newArtist) newArtist = tools.removeTrailingExtras(newArtist) newArtist = tools.removeDup(newArtist) if newArtist != oldArtist: tags['artist'] = newArtist tags.save() print("New Artist: ", newArtist)
def getURL(baseUrl, song_name, tags): # get the search url using album or artist or year or only name song_name = song_name.lower().strip() if tools.isTagPresent(tags, 'album') and \ tools.removeYear(tags['album'][0]).lower().strip() != song_name: album = tools.removeYear(tags['album'][0]).lower().strip() album = tools.removeGibberish(album) url = baseUrl.format(song_name + ' ' + album) elif tools.isTagPresent(tags, 'artist'): oldArtist = tools.removeGibberish(tags['artist'][0]) newArtist = tools.divideBySColon(oldArtist) newArtist = tools.removeTrailingExtras(newArtist) newArtist = tools.removeDup(newArtist) url = baseUrl.format(song_name + ' ' + newArtist) elif tools.isTagPresent(tags, 'date'): url = baseUrl.format(song_name + ' ' + tags['date'][0]) else: url = baseUrl.format(song_name) return url.replace(" ", '+')
def fixComposer(tags): try: old_composer = tags['composer'][0] print("Composer: ", old_composer) except: traceback.print_exc() print("No Composer was found in tags, moving on...") return new_composer = tools.removeGibberish(old_composer) new_composer = tools.divideBySColon(new_composer) new_composer = tools.removeTrailingExtras(new_composer) new_composer = tools.removeDup(new_composer) if new_composer != old_composer: tags['composer'] = new_composer tags.save() print("New Composer: ", new_composer) return
def autoMatch(song_info_list, song_name, tags, song_with_path, test=0): for song in song_info_list: json_data = json.loads(json.dumps(song)) ################################################# if test: # print(json.dumps(json_data, indent=4)) print() print(json_data['title'].lower().strip()) print(song_name.lower().strip()) ################################################# song_name = song_name.lower().strip() title = json_data['title'].lower().strip() ed_title = tools.editDistDP(song_name, title, len(song_name), len(title)) if test: print(ed_title) if ed_title > 5: continue if tools.isTagPresent(tags, 'album'): album_from_tags = tools.removeYear(tags['album'][0]).lower().strip() # try: # album_from_json = json_data['actual_album'].lower().strip() # except KeyError: album_from_json = json_data['album'].lower().strip() ed_album = tools.editDistDP(album_from_tags, album_from_json, len(album_from_tags), len(album_from_json)) if test: print(album_from_json) print(album_from_tags) print(ed_album) if ed_album > 4: continue if tools.isTagPresent(tags, 'artist'): artist_from_json = json_data['singers'] artist_from_json = tools.divideBySColon(artist_from_json) artist_from_json = tools.removeTrailingExtras(artist_from_json) artist_from_json = tools.removeDup(artist_from_json) artist_from_tags = tags['artist'][0] artist_from_tags = tools.divideBySColon(artist_from_tags) artist_from_tags = tools.removeTrailingExtras(artist_from_tags) artist_from_tags = tools.removeDup(artist_from_tags) ed_artist = tools.editDistDP(artist_from_tags, artist_from_json, len(artist_from_tags), len(artist_from_json)) if test: print(artist_from_json) print(artist_from_tags) print(ed_artist) if ed_artist >= 11: continue audio = MP3(song_with_path) length_from_tags = int(audio.info.length) length_from_json = int(json_data['duration']) if test: print(length_from_json) print(length_from_tags) print(mod(length_from_json) - length_from_tags) if mod(length_from_json - length_from_tags) > 10: continue return song return None