]>
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:thumbnail", namespaces
=media
.nsmap
)
30 print [i
.items() for i
in contenturls
]
31 contenturl
= contenturls
[-1]
32 contenturl
= [val
for (kw
, val
) in contenturl
.items() if kw
== "url"][0]
33 # On récupère la meilleure résolution de l'image
34 contenturl
= contenturl
.replace("s288", "s5000")
35 title
= media
.xpath("./media:title", namespaces
=media
.nsmap
)[0]
37 processed
.append([title
, contenturl
])
40 def download_file(url
, path
):
41 """Télécharge le fichier depuis l'``url`` et l'enregistre dans ``path``."""
42 page
= urllib
.urlopen(url
)
43 with
open(path
, "w") as f
:
44 bloc
= page
.read(4096)
47 bloc
= page
.read(4096)
49 def do_all(rss_url
, folder
):
50 """Télécharge tout l'album depuis ``rss_url`` et le stocke dans ``folder``"""
51 album
= get_album(rss_url
)
52 titles
= album
.xpath("//image/title", namespaces
=album
.nsmap
)
53 albumtitle
= titles
[0].text
54 os
.mkdir("%s/%s" % (folder
, albumtitle
))
55 linktitles
= album_to_links(album
)
56 for [title
, url
] in linktitles
:
57 print "Downloading %s : %s" % (title
, url
)
58 download_file(url
, "%s/%s/%s" % (folder
, albumtitle
, title
))
61 if __name__
== "__main__":
64 albumtitle
= do_all(rss_url
, ".")
65 print (u
"Téléchargé dans %s" % albumtitle
).encode("utf-8")