Example #1
0
def loadPlaylists(sep='\t'):
    lookup = dict()  # track_key -> api.Track
    for track in iTunes.library.track_iter:
        track_key = '\t'.join([track.artist, track.album, track.name])
        lookup[track_key] = track

    for playlist_tsv in glob('Playlist-*.tsv'):
        playlist_name = re.match('Playlist-(.+).tsv', playlist_tsv).group(1)
        print 'Creating playlist', playlist_name
        # continue
        playlist = iTunes.ensure_playlist(playlist_name)
        for line in open(playlist_tsv):
            track_cells = line.replace('\n', '').decode('utf8')
            track_values = dict(zip(playlist_cols, track_cells.split(sep)))
            track_key = '\t'.join([
                track_values['artist'], track_values['album'],
                track_values['name']
            ])

            existing_track = lookup.get(track_key)
            if existing_track:
                playlist.add_track(existing_track)

                time.sleep(0.1)
            else:
                print 'Could not find:', track_key
Example #2
0
def prioritizeDuplicates():
    duplicates = iTunes.ensure_playlist('Duplicates')

    lookup = defaultdict(list)  # track_key -> api.Track
    for track in duplicates.track_iter:
        track_key = '\t'.join([track.artist.lower(), track.name.lower()])
        lookup[track_key].append(track)

    for track_key, tracks in lookup.iteritems():
        if len(tracks) > 1:
            print len(tracks), track_key
            sorted_tracks = sorted(tracks, key=lambda t: -t.bitrate)

            sum_plays = sum(t.plays for t in tracks)
            max_rating = max(t.rating for t in tracks)
            print 'plays', sum_plays, 'rating', max_rating

            best_track = sorted_tracks[0]

            best_track.set('enabled', True)
            best_track.set('plays', sum_plays)
            best_track.set('rating', max_rating)

            time.sleep(0.1)

            for bad_track in sorted_tracks[1:]:
                bad_track.set('enabled', False)
                bad_track.set('plays', 0)
                bad_track.set('rating', 0)

                time.sleep(0.1)
Example #3
0
def prioritizeDuplicates():
    duplicates = iTunes.ensure_playlist('Duplicates')

    lookup = defaultdict(list)  # track_key -> api.Track
    for track in duplicates.track_iter:
        track_key = '\t'.join([track.artist.lower(), track.name.lower()])
        lookup[track_key].append(track)

    for track_key, tracks in lookup.iteritems():
        if len(tracks) > 1:
            print len(tracks), track_key
            sorted_tracks = sorted(tracks, key=lambda t: -t.bitrate)

            sum_plays = sum(t.plays for t in tracks)
            max_rating = max(t.rating for t in tracks)
            print 'plays', sum_plays, 'rating', max_rating

            best_track = sorted_tracks[0]

            best_track.set('enabled', True)
            best_track.set('plays', sum_plays)
            best_track.set('rating', max_rating)

            time.sleep(0.1)

            for bad_track in sorted_tracks[1:]:
                bad_track.set('enabled', False)
                bad_track.set('plays', 0)
                bad_track.set('rating', 0)

                time.sleep(0.1)
Example #4
0
def loadPlaylists(sep='\t'):
    lookup = dict()  # track_key -> api.Track
    for track in iTunes.library.track_iter:
        track_key = '\t'.join([track.artist, track.album, track.name])
        lookup[track_key] = track

    for playlist_tsv in glob('Playlist-*.tsv'):
        playlist_name = re.match('Playlist-(.+).tsv', playlist_tsv).group(1)
        print 'Creating playlist', playlist_name
        # continue
        playlist = iTunes.ensure_playlist(playlist_name)
        for line in open(playlist_tsv):
            track_cells = line.replace('\n', '').decode('utf8')
            track_values = dict(zip(playlist_cols, track_cells.split(sep)))
            track_key = '\t'.join([track_values['artist'], track_values['album'], track_values['name']])

            existing_track = lookup.get(track_key)
            if existing_track:
                playlist.add_track(existing_track)

                time.sleep(0.1)
            else:
                print 'Could not find:', track_key