
Interessante! Ora però sembra abbiano sistemato!
import sys import win32com.client import httplib import urllib import xml.dom.minidom dic = dict() def artistGetTopOfTags(artista): artist_url = u"http://ws.audioscrobbler.com/2.0/?method=artist.gettoptags&artist=%s&api_key=b25b959554ed76058ac220b7b2e0a026" url = artist_url % urllib.quote(artista.encode('utf8')) dom=xml.dom.minidom.parse(urllib.urlopen(url)) genre="" for tag in dom.getElementsByTagName('tag'): name = "" count = "" for child in tag.childNodes: if child.nodeName == "name": name = child.firstChild.nodeValue if child.nodeName == "count": count = child.firstChild.nodeValue if count=="100": genre = name return genre.title() def genere(artista): if not artista in dic: dic[artista]=artistGetTopOfTags(artista) print artista return dic[artista] def main(*args): itunes = win32com.client.Dispatch("iTunes.Application") mainLibrary = itunes.LibraryPlaylist tracks = mainLibrary.Tracks numTracks = tracks.Count n = 1; while n <= numTracks: currTrack = tracks.Item(n) if genere(currTrack.Artist) != "": try: currTrack.Genre = genere(currTrack.Artist) except: print "eccezione!" n+=1 if __name__ == '__main__': sys.exit(main(*sys.argv))va bene, le eccezioni dovranno essere gestite meglio, e va bene, il genere musicale non è sempre corretto. Però i portali Web che mettono a disposizione delle funzioni tramite Web Services sono sempre più numerosi (es. Google, Yahoo Weather, etc...) e mi pareva interessante porre le basi per iniziare ad utilizzarli. Sembra che il metodo più pythoniano di parserizzare un file XML consiste nell'utilizzare la libreria ElemenTree, e non la libreria DOM standard... bene vedremo di approfondire anche questo!
import win32com.client from mutagen.mp3 import MP3 from mutagen.easyid3 import EasyID3 import mutagen.id3 itunes = win32com.client.Dispatch("iTunes.Application") mainLibrary = itunes.LibraryPlaylist tracks = mainLibrary.Tracks numTracks = tracks.Count n = 1 v = 0 while n <= numTracks: currTrack = tracks.Item(n) location = win32com.client.CastTo(currTrack,'IITFileOrCDTrack').Location if ((currTrack.Artist == "") or (currTrack.Name == "")): try: m = MP3(location, ID3=EasyID3) if m.has_key('artist'): currTrack.Artist = m['artist'][0] if m.has_key('album'): currTrack.Album = m['album'][0] if m.has_key('title'): currTrack.Name = m['title'][0] if m.has_key('tracknumber'): currTrack.TrackNumber = m['tracknumber'][0] if m.has_key('date'): currTrack.Year = m['date'][0] if m.has_key('genre'): currTrack.Genre = m['genre'][0] v += 1 except mutagen.id3.error: print "Error" continue n+=1 print "Brani aggiornati: " + str(v)