Ich plane ja einen Header in mein Blog einzupflegen; so in etwa wie hier. Allerdings nicht solche alten Bilder, sondern eher etwas Ansehnlicheres. Inzwischen bin ich bei bing.com, dem Picture of the Day angelangt (via cmur2).
Wir gehen zunächst auf http://bing.de/ und werden auf http://bing.com/?cc=de weitergeleitet, denn wir kommen ja aus Deutschland. 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 Backslashes entfernen, können wir damit prima auf das aktuelle Tagesbild zugreifen. Spätestens jetzt merkt man aber, dass der Vor und Zurück-Button natürlich auch in JavaScript implementiert ist...
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 extrahierbar, da die Seitenlogik in PHP realisiert ist, und zwar über einfach zu editierende GET-Befehle.
Via grep lassen sich so einfach die Direktlinks herausfiltern - ausschließlich für DE-Deutschland:
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 verkleinert werden soll, wird der entfernt, kommen
wir an das Originalbild heran. Da sich meine Kenntnisse bei den ganzen unix-Tools in Grenzen halten,
musste ich zu guter letzt ein kleines Python-Skript zusammenhacken, 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) heruntergeladen!
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