]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - download_picasa_album.py
2 # -*- encoding:utf-8 -*-
6 Pour télécharger un album Picasa sans avoir à utiliser l'application Picasa
8 Il faut lui fournir le l'url vers le flux RSS
17 """Récupère le xml décrivant l'album à partir de l'``url`` du flux RSS"""
18 page
= urllib
.urlopen(url
)
20 parsed
= lxml
.etree
.fromstring(content
)
23 def album_to_links(album
):
24 """Un peu de xpath pour récupérer les liens directs des éléments
26 medias
= album
.xpath("//media:group", namespaces
=album
.nsmap
)
29 contenturls
= media
.xpath("./media:content", namespaces
=media
.nsmap
)
30 # Pour les photos il n'y a qu'un seul media:content
31 # Mais pour la vidéo, il y a un thumbnail avant
32 if len(contenturls
) > 1:
33 contenturl
= contenturls
[1]
35 contenturl
= contenturls
[0]
36 contenturl
= [val
for (kw
, val
) in contenturl
.items() if kw
== "url"][0]
37 title
= media
.xpath("./media:title", namespaces
=media
.nsmap
)[0]
39 processed
.append([title
, contenturl
])
42 def download_file(url
, path
):
43 """Télécharge le fichier depuis l'``url`` et l'enregistre dans ``path``."""
44 page
= urllib
.urlopen(url
)
45 with
open(path
, "w") as f
:
46 bloc
= page
.read(4096)
49 bloc
= page
.read(4096)
51 def do_all(rss_url
, folder
):
52 """Télécharge tout l'album depuis ``rss_url`` et le stocke dans ``folder``"""
53 album
= get_album(rss_url
)
54 titles
= album
.xpath("//image/title", namespaces
=album
.nsmap
)
55 albumtitle
= titles
[0].text
56 os
.mkdir("%s/%s" % (folder
, albumtitle
))
57 linktitles
= album_to_links(album
)
58 for [title
, url
] in linktitles
:
59 print "Downloading %s : %s" % (title
, url
)
60 download_file(url
, "%s/%s/%s" % (folder
, albumtitle
, title
))
63 if __name__
== "__main__":
66 albumtitle
= do_all(rss_url
, ".")
67 print (u
"Téléchargé dans %s" % albumtitle
).encode("utf-8")