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(" ", '+')
Esempio n. 4
0
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