2016-04-25 7 views
2

すべての音楽ファイルを上書きし、それぞれのアルバムアートをダウンロードするPythonベースのアプリケーションを作成しています。 私はlast.fmのサイトからbeautifulsoup4を使ってアルバムアートをスクラップしています。album art grabber python

いい方法はありますか?時々私はサイトへのリクエストが多すぎることを除いているからです。 last.fm apiのように、私はスクラップの代わりに必要なものを提供します。

私はこれを見つけたが、私はそれを使用しようとしていないが、これは私が今のためにそれを行う方法です https://github.com/pylast/pylast

を必要として、それを使用することができると思ういけない:の

def getAlbumArt(songDet): 
    #create a search url according the name of the given song's album 
    try: 
     # deletes unnecessary words from the name 
     if songDet.albumName.rfind("(") != -1: 
      r = requests.get("http://www.last.fm/search?q="+songDet.albumName[:songDet.albumName.rfind("(")]) 
     else: 
      r = requests.get("http://www.last.fm/search?q=" + songDet.albumName) 
     html = bs4.BeautifulSoup(r.content, "html.parser") 
     imagesLinks = html.find_all("ol") 
     r.close() 
     for imageLink in imagesLinks: 
      for image in imageLink.contents: 
       if type(image) is bs4.Tag: 
        if image.text.__contains__(songDet.artist): 
         # todo add path to save pic to the mp3 path 
         urllib.urlretrieve(image.find("img").attrs['src'], image.find("img").attrs[u'alt'] + ".jpg") 
         print "got a picture" 
         return True 
         #break 
      #break 
    except requests.RequestException as e: 
     print e 
+1

これは試しましたか?もしそうなら、あなたが持っているもののコードサンプルを提供できますか? –

+0

私はそれを使用しようとしていないが、これは今のところ私が行う方法ですhttp://pastebin.ca/3583239 – Liran

+0

ちょっと@Liran、次回あなたの質問にコードを追加してください。私は今度あなたのためにそれをしました。 –

答えて

1

ファーストすべて、あなたは間違いなくlast.fm APIの使用を開始する必要があります。

そして、あなたはAPIを使用していない場合は、「あまりにも多くの要求」の問題を回避するために、be a good web-scraping citizenとあなたの要求間の遅延をもたらす - あなたは(あなたはもちろんのimport timeする必要があります)time.sleep(delay_in_seconds)ような単純なもので開始することができます。