Welcome, guest | Sign In | My Account | Store | Cart
#!/usr/bin/env python
#coding=utf-8
import os
import sys

from time import sleep
from win32com.client import Dispatch


def exit(message):
    confirm
= raw_input(message)
    sys
.exit(1)

def main():
    itunes
= Dispatch("iTunes.Application")
   
for source in itunes.Sources:
       
if source.Kind == 3:
           
break
   
else:
       
exit("audio CD not found. Enter to exit.")
   
if itunes.CurrentEncoder.Name.lower() != "lossless encoder":
       
exit("Bad encoder, switch to ALAC please. Enter to exit.")
    playlist
= source.Playlists[0]
   
# convert tracks in audio cd.
    status
= itunes.ConvertTracks(playlist.Tracks)
   
while status.InProgress:
        sleep
(1)

    all_tracks
= itunes.LibraryPlaylist.Tracks
    album_name
= playlist.Name
   
for cd_track in playlist.Tracks:
       
for track in reversed(all_tracks):
           
if track.Name == cd_track.Name and track.Album == album_name:
               
print track.Duration == cd_track.Duration, track.Name, track.Duration, cd_track.Duration
               
if track.Duration != cd_track.Duration:
                   
# Convert again.
                   
retry = 0
                   
while track.Duration != cd_track.Duration and retry < 10:
                       
# delete bad converted track.
                       
print "retrying %s, count=%s" % (track.Name, retry)
                       
retry += 1
                        os
.remove(track.Location)
                        track
.Delete()
                       
# Convert again.
                        status
= itunes.ConvertTrack(cd_track)
                       
while status.InProgress:
                            sleep
(0.5)
                       
for t in reversed(all_tracks):
                           
if t.Name == cd_track.Name and t.Album == album_name:
                                track
= t
                               
break
                       
else:
                           
print "track '%s' not found." % track.Name
                   
if retry >= 10:
                        confirm
= raw_input("'%s' not converted." % track.Name)
               
break
       
else:
           
print "track '%s' not found." % track.Name

    raw_input
("all done.")


if __name__ == "__main__":
    main
()

History