Skip to content

Instantly share code, notes, and snippets.

@mjc
Created April 19, 2009 00:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mjc/97842 to your computer and use it in GitHub Desktop.
Save mjc/97842 to your computer and use it in GitHub Desktop.
lastfm playcounts to itunes script. currently busted
#!/usr/bin/env ruby
require 'rubygems'
gem 'plist', '>=3.0.0'
gem 'scrobbler', '>=0.2.3'
gem 'hpricot', '>=0.8'
require 'open-uri'
require 'plist'
require 'scrobbler'
require 'hpricot'
# snippet modified from http://codesnippets.joyent.com/posts/show/1965
plist_location = Etc.getpwuid.dir + '/Music/iTunes/iTunes Music Library.xml'
lastfm_user = 'projct'
chartList = Hpricot(open("http://ws.audioscrobbler.com/2.0/user/#{lastfm_user}/weeklychartlist.xml"))
charts = (chartList/'//chart')
user = Scrobbler::User.new('projct')
playlist_plist = Hpricot(File.read(plist_location))
# # todo, bother to walk the chart correctly
# user.weekly_track_chart(1195992000,1239537600).each { |track|
# playlist_plist["Tracks"].each_pair{|key, value|
# if value["Artist"] == track.artist and value["Name"] == track.name && track.playcount.to_i >= 1
# playlist_plist["Tracks"]["#{key}"]["Play Count"] = track.playcount.to_i
# end
# }
# }
# playlist_plist.save_plist("#{plist_location}.mod")
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Application Version</key><string>8.1.1</string>
<key>Features</key><integer>5</integer>
<key>Show Content Ratings</key><true/>
<key>Music Folder</key><string>file://some/path/here</string>
<key>Library Persistent ID</key><string>ID here</string>
<key>Tracks</key>
<dict>
<key>1160</key>
<dict>
<key>Track ID</key><integer>1160</integer>
<key>Name</key><string>Epilogue</string>
<key>Artist</key><string>Samael</string>
<key>Album Artist</key><string>Samael</string>
<key>Album</key><string>1987–1992 (disc 1: Blood Ritual)</string>
<key>Genre</key><string>Black Metal</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>1600935</integer>
<key>Total Time</key><integer>39653</integer>
<key>Track Number</key><integer>1</integer>
<key>Year</key><integer>1994</integer>
<key>Date Modified</key><date>2009-03-21T22:22:02Z</date>
<key>Date Added</key><date>2009-03-02T23:56:31Z</date>
<key>Bit Rate</key><integer>320</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>1</integer>
<key>Play Date</key><integer>3318868640</integer>
<key>Play Date UTC</key><date>2009-03-02T23:57:20Z</date>
<key>Rating</key><integer>20</integer>
<key>Album Rating</key><integer>20</integer>
<key>Album Rating Computed</key><true/>
<key>Artwork Count</key><integer>1</integer>
<key>Sort Album Artist</key><string>Samael</string>
<key>Sort Artist</key><string>Samael</string>
<key>Persistent ID</key><string>id here</string>
<key>Disabled</key><true/>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://some/path/here</string>
<key>File Folder Count</key><integer>4</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>
</dict>
</dict>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment