|
#!/usr/bin/env python |
|
#coding:utf-8 |
|
|
|
from xml.dom import minidom |
|
import urllib, os.path, threading |
|
from mutagen.mp3 import EasyMP3 |
|
|
|
generic_xml_url = "http://player.believe.fr/getPlayerInfo.php?action=getfullinfo&lang=fr&upc=%s&version=5" |
|
first_upc = "3661585684183" |
|
|
|
def getTag(domElement, tagName): |
|
try: |
|
return domElement.getElementsByTagName(tagName)[0].firstChild.nodeValue |
|
except: |
|
return "" |
|
|
|
def download_track(track_dom, album): |
|
title = getTag(track_dom, "longTitle") or getTag(track_dom, "title") or "Chanson " + getTag(track_dom, "track")[0] |
|
tracknumber = getTag(track_dom, "track") |
|
url = getTag(track_dom, "fulltrack") or getTag(track_dom, "totalTrack") or getTag(track_dom, "splitfile") |
|
|
|
print (u"%s : téléchargement de %s..." % (album["name"], title)) |
|
filename = title.replace("/", "|") + os.path.splitext(url)[-1] |
|
|
|
if not os.path.exists(filename): |
|
filename, message = urllib.urlretrieve(url=url, filename=filename) |
|
|
|
audio = EasyMP3(filename) |
|
audio["title"] = title |
|
audio["artist"] = audio["author"] = album["artist"] |
|
audio["genre"] = album["genre"] |
|
audio["date"] = album["date"] |
|
audio["tracknumber"] = tracknumber |
|
audio["album"] = album["name"] |
|
audio["website"] = album["url"] |
|
audio.save() |
|
print (u"\t%s téléchargé" % title) |
|
|
|
generic_album = generic_xml_url % first_upc |
|
generic_album_dom = minidom.parse(urllib.urlopen(generic_xml_url%first_upc)) |
|
|
|
for album_dom in generic_album_dom.getElementsByTagName("albums")[0].getElementsByTagName("album"): |
|
if album_dom.parentNode.tagName == u"albums" : |
|
upc = getTag(album_dom, "upc") |
|
album_dom = minidom.parse(urllib.urlopen(generic_xml_url % upc)) |
|
cur_album = { |
|
"name" : getTag(album_dom, "longTitle"), |
|
"artist" : getTag(album_dom, "artist"), |
|
"genre" : getTag(album_dom, "textGenre"), |
|
"cover" : getTag(album_dom, "cover"), |
|
"date" : getTag(album_dom, "digitalReleaseDate"), |
|
"url" : getTag(album_dom, "linkToArtist") |
|
} |
|
|
|
urllib.urlretrieve(url=cur_album["cover"], filename=cur_album['name']+".jpg") |
|
|
|
for track_dom in album_dom.getElementsByTagName("track"): |
|
if track_dom.parentNode.tagName == u"tracks": |
|
threading.Thread(target=download_track, args=(track_dom,cur_album)).start() |