Last.fm APIを使ってアルバムアートを入手
外部ツールでリッピングすると、WMPのライブラリに入れてもWMPがアルバムアートを取得してくれないんでムカムカしてアルバムアートを取得するスクリプトを書いた。
Last.fmのAPIからアルバムアートのURLを取得し、そのURLから画像を.jpgで保存する。
ライブラリはBeautifulSoupとPILを使用。
例外処理とかいろいろ適当なので、使用には注意。
# -*- coding: utf-8 -*- import urllib2 import re from BeautifulSoup import BeautifulStoneSoup import Image import ImageFileIO class AlbumArt: def __init__(self, artist, album): self.api_key = あなたのAPIキー self.artist = artist self.album = album pass def openUrl(self): artist = re.sub(" ", "%20", self.artist) album = re.sub(" ", "%20", self.album) url = "http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=%s&artist=%s&album=%s" % (self.api_key, artist, album) try: xml = urllib2.urlopen(url).read() pass except Exception: print "can't open url" return 0 return xml def getImageUrl(self, xml): image_url = "" soup = BeautifulStoneSoup(xml) e = soup.find("lfm") if e.has_key("status") and e["status"] == "ok": images = e.findAll("image") #mediumサイズ if images[1].contents: image_url = images[2].contents[0] pass pass if image_url: return image_url else: return 0 pass def saveImage(self, image_url): stream = urllib2.urlopen(image_url) if stream.info().gettype()[:5] == "image": file_name = unicode(self.album + ".jpg") image = Image.open(ImageFileIO.ImageFileIO(stream)) image.save(file_name, quality = 100) pass else: return 0 print "success! AlbumArt saved as %s" % file_name stream.close() if __name__ == "__main__": artist = アーティスト名 album = アルバム名 hoge = AlbumArt(artist, album) xml = hoge.openUrl() if xml: url = hoge.getImageUrl(xml) if url: hoge.saveImage(url) pass pass pass