#!/usr/bin/python # iRoll.py # Jon Oberheide # http://jon.oberheide.org/iroll/ import os, sys, cPickle import gpod MOUNT_POINT = '/mnt/ipod' RICK_ROLL = 'rickroll.mp3' BACKUP = '%s/.rickroll' % MOUNT_POINT def main(): print 'iRoll.py by Jon Oberheide ' print if os.path.exists(BACKUP): print '[-] This iPod has already been iRoll\'ed' sys.exit(1) try: print '[+] Loading iTunes database' db = gpod.Database(MOUNT_POINT) except gpod.DatabaseException, e: print '[-] Error opening iTunes database' print '[-] Check path to iPod mount point' print '[-] %s' % e sys.exit(1) try: print '[+] Adding Rick Roll track' track = db.new_Track(filename=RICK_ROLL) except gpod.TrackException, e: print '[-] Error creating track' print '[-] Check path to Rick Roll MP3' print '[-] %s' % e sys.exit(1) print '[+] Copying Rick Roll track to iPod' track['artist'] = 'Rick Astley' track['title'] = 'Never Gonna Give You Up' track.copy_to_ipod() path = track['ipod_path'] print '[+] Linking all songs to Rick Roll track' map = {} for iter in db.get_master(): key = (iter['artist'], iter['album'], iter['title']) map[key] = iter['ipod_path'] iter['ipod_path'] = path print '[+] Writing out backup file for unRoll\'ing' try: backup = open(BACKUP, 'w') cPickle.dump(map, backup) backup.close() except: print '[-] Error writing backup file' print '[-] Check permissions on iPod mount point' sys.exit(1) print '[+] Saving and closing iTunes database' db.copy_delayed_files() db.close() print '[+] iRoll complete!!' if __name__ == '__main__': main()