class RecoverItunesRatings::Runner

Restores each rating found in the library XML to the current iTunes library.

Public Class Methods

new(library_xml_path, dry_run: true, reset_album_ratings: false) click to toggle source
# File lib/recover_itunes_ratings/runner.rb, line 7
def initialize(library_xml_path, dry_run: true, reset_album_ratings: false)
  @dry_run = dry_run
  @reset_album_ratings = reset_album_ratings

  @ratings = SavedRatings.new(library_xml_path)
  @tracks = MatchedTracks.new(@ratings)
end

Public Instance Methods

run() click to toggle source
# File lib/recover_itunes_ratings/runner.rb, line 15
def run
  @tracks.each do |track, saved_rating|
    if @reset_album_ratings && track.album_rating_kind.get == :user
      name = "#{track.artist.get} - #{track.album.get}"
      puts "[#{track.album_rating.get/20} -> X] Album: #{name}"
      track.album_rating.set(-1) unless @dry_run
    end

    current_rating = track.rating.get
    next unless saved_rating && current_rating != saved_rating

    name = "#{track.artist.get} - #{track.name.get}"
    puts "[#{current_rating/20} -> #{saved_rating/20}]  Song: #{name}"
    track.rating.set(saved_rating) unless @dry_run
  end
end