class Deezify::Exporter
Public Class Methods
new()
click to toggle source
# File lib/deezify/exporter.rb, line 3 def initialize @spotify = Deezify::API::Spotify.new @deezer = Deezify::API::Deezer.new end
Public Instance Methods
export_playlist(user_id, playlist_id)
click to toggle source
# File lib/deezify/exporter.rb, line 8 def export_playlist(user_id, playlist_id) playlist = @spotify.playlist user_id, playlist_id puts "Starting to export: #{playlist.name}" tracks = get_tracks playlist create_playlist playlist.name, tracks puts "Successfully added #{tracks.size} tracks" # @TODO: export more than 100 tracks # @TODO: add progress bar # @TODO: check playlist existence and recreate it # @FIXME: sometimes finds wrong tracks or doesn't find track at all end
get_tracks(playlist)
click to toggle source
# File lib/deezify/exporter.rb, line 25 def get_tracks(playlist) playlist.tracks(limit: 100).map { |track| track = find_track(track) track[:id] unless track.nil? }.reject(&:nil?) end
Private Instance Methods
create_playlist(name, tracks)
click to toggle source
# File lib/deezify/exporter.rb, line 44 def create_playlist(name, tracks) playlist = @deezer.create_playlist "#{name} on Spotify" @deezer.add_tracks playlist[:id], tracks end
find_track(track)
click to toggle source
# File lib/deezify/exporter.rb, line 32 def find_track(track) search_params = { artist: track.artists.map(&:name).join(' '), name: track.name, album: track.album.name } tracks = @deezer.search search_params.values.join ' ' tracks.first unless tracks.empty? end