mecker. mecker. mecker.

wget -r – oder wie man alle Bilder von Bing.com herunterlädt

Ameisen

Ich plane ja einen Header in mein Blog ein­zu­pfle­gen; so in etwa wie hier. Allerdings nicht solche alten Bilder, sondern eher etwas An­sehn­li­che­res. Inzwischen bin ich bei bing.com, dem Picture of the Day angelangt (via cmur2).

Lage prüfen

Wir gehen zunächst auf http://bing.de/ und werden auf http://bing.com/?cc=de wei­ter­ge­lei­tet, denn wir kommen ja aus Deutsch­land. Dort sehen wir schon: das ist JavaScript-only. Nicht verzagen, Google fragen: Extract Bing.com Wallpapers. Genau das wollen wir haben. Sieht ziemlich einfach aus:

curl -s 'http://www.bing.com/?cc=de' | grep -oE '\\/fd.+\.jpg'
#  \/fd\/hpk2\/MachuPicchu_DE-DE609064060.jpg

Wenn wir davon die Back­slas­hes entfernen, können wir damit prima auf das aktuelle Tagesbild zugreifen. Spä­tes­tens jetzt merkt man aber, dass der Vor und Zurück-Button natürlich auch in JavaScript im­ple­men­tiert ist…

Down Them All

An dieser Stelle war ich dann zunächst etwas ratlos und bin den üblichen Weg über Google gegangen: bing image archive. Gleich der erste Treffer sieht perfekt aus. Auflistung aller Bilder, wahlweise nach Nationen gefiltert, sehr leicht ex­tra­hier­bar, da die Sei­ten­lo­gik in PHP realisiert ist, und zwar über einfach zu edi­tie­ren­de GET-Befehle.

Via grep lassen sich so einfach die Di­rekt­links her­aus­fil­tern - aus­schließ­lich für DE-Deutsch­land:

curl -s 'http://www.istartedsomething.com/bingimages/' | grep -oE 'resize\.php\?i=[^.]+_DE[^.]+\.jpg&w=100'
#  resize.php?i=WorldExpo_DE-DE278223030.jpg&w=100
#  resize.php?i=Bratislava_DE-DE736008353.jpg&w=100

Der letzte URL-Parameter gibt an, dass das Bild noch ver­klei­nert werden soll, wird der entfernt, kommen wir an das Ori­gi­nal­bild heran. Da sich meine Kenntnisse bei den ganzen unix-Tools in Grenzen halten, musste ich zu guter letzt ein kleines Python-Skript zu­sam­men­ha­cken, was alle Bildlinks für August 2009 bis Juli 2010 ausspuckt; natürlich wget-tauglich.

Dann kommt zum Schluss ein nettes wget -i links und schon haben wir über 300 Bilder (ca. 71 MiB) her­un­ter­ge­la­den!

import re
from urllib import urlopen

url = 'http://www.istartedsomething.com/bingimages/?m=%s&y=%s' # month, year

if __name__ == '__main__':

    for t in [(m+1,2010) for m in range(10)] + [(m+1,2009) for m in range(10)]:
        for line in urlopen(url % t):
            m = re.findall("resize\.php\?i=[^.]+_DE[^.]+\.jpg&w=100", line)
            if m:
                print '%s%s' % (url.split('?')[0], m[0].split('&')[0])

ps: wer nicht alles manuell machen möchte, kann sie sich über Wuala holen

blog comments powered by Disqus