Skip to content

Instantly share code, notes, and snippets.

@lovasoa
Created September 1, 2012 09:22
Show Gist options
  • Save lovasoa/3568101 to your computer and use it in GitHub Desktop.
Save lovasoa/3568101 to your computer and use it in GitHub Desktop.
Télécharger les mp3 et les pochettes des albums Danakil qui sont disponibles en streaming sur leur site danakil.fr, et ajouter les tags en ID3

Téléchagement des mp3 de danakil (avec les pochettes)

Dépendances

* Python 2 * mutagen (bibliothèque pour la gestion des tags audio en python)

Utilisation

sur une debian-like (Ubuntu par exemple):
sudo apt-get install python-mutagen
python danakil.py
#!/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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment