Class: RecoverItunesRatings::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/recover_itunes_ratings/runner.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(library_xml_path, dry_run: true, reset_album_ratings: false) ⇒ Runner

Returns a new instance of Runner.



7
8
9
10
11
12
13
# 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

Instance Method Details

#runObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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