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
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)
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