Creates a playlist for every artist in your library -- since the Roku app doesn't have browsing by artists.

  • Download Gist
create_playlists_from_artists_for_rdio
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
#!/usr/bin/env ruby
#
# Creates a playlist for every artist in your library -- since the
# Roku app doesn't have browsing by artists. The following need to be
# in the ENV:
#
# export RDIO_KEY=...
# export RDIO_SECRET=...
#
# You can pass in the email or username as the first argument. If not
# provided we use the current user.
#
# You have to install the rdio gem, too.
#
 
require 'rubygems'
require 'rdio'
 
def main(argv)
 
# Use the first argument as the email or vanity name if available,
# otherwise use the current user
if argv.empty?
user = Rdio::User.current
else
user = Rdio::User.find argv.shift
end
 
# Turn off the warning for not finding symbols...It's quite annoying
Rdio::log_couldnt_find_symbols = false
 
# Collect all the artists for this user
artists = []
start = 0
count = 10
while true
all = user.artists_in_collection start,count
break if not all or all.empty?
artists += all
puts "Found #{all.length} artists, have #{artists.length}"
start += count
end
# Go over all the artists and remove existing playlist, if it
# exists, and create a new playlist
artists.each do |artist|
name = artist.name
desc = artist.name + ' All'
tracks = user.tracks_for_artist_in_collection artist
pl = Rdio::Playlist.create name,desc,tracks
next if not pl
puts "Added '#{pl.name}' with #{tracks.length} tracks"
end
end
 
main ARGV

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.