Garfield pro dnešní den..

Při procházení a jakési údržbě složek na pc, jsem našel asi rok starý skript na zobrazení aktuáního komixu Garfielda, který, jak známo, vychází každý den. Skript je z doby, kdy jsem se rozhodl, že se musím naučit pracovat v jazyce python... Psaní programu mě po chvilce přestalo bavit, python ne.

Skript předkládám v takovém stavu, v jakém jsem jej zanechal ... všimněte si parádní hlavičky a názvu GarfViewer :-) Možná se k němu ještě jednou vrátím a dodělám nějaké fičurky, ale....spíš ne.
Vyžaduje PyGTK pro zobrazení okýnka.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python
 
# GarfViewer : version 0.0.1
# by Jakub Jedelsky <dev @stderr.cz>
 
import pygtk
pygtk.require('2.0')
import gtk
import urllib,sys,datetime,getopt
 
today = datetime.date.today()
# for today strip:
Y = today.strftime("%Y")        # Year (2008)
y = today.strftime("%y")        # year (08)
m = today.strftime("%m")        # month (12)
d = today.strftime("%d")        # day (02)
 
print  "  > day: " + Y + "-" + m + "-" + d
 
garf = "garfield.gif"
 
print "  > downloading comic strip from http://images.ucomics.com"
source = "http://images.ucomics.com/comics/ga/"+ Y + "/ga"+ y+m+d  +".gif"
strip = urllib.urlopen(source)
g = strip.read()
file = open(garf, "w")
file.write(g)
file.close()
print "  > strip saved in ./" + garf
 
# def random_strip():
 
class GarfView:
        # def options(self):
 
        def close_application(self,widget,event,data=None):
                print "  > this is the end"
                sys.exit()
                return 0
 
        def __init__(self):
                window = gtk.Window(gtk.WINDOW_TOPLEVEL)
                window.connect("delete_event",self.close_application)
                window.set_border_width(5)
                window.set_title("ComViewer > Garfield > "+Y+"-"+m+"-"+d)
                window.set_position(gtk.WIN_POS_CENTER)
                window.show()
 
                image = gtk.Image()
                image.set_from_file(garf)
                image.show()
 
                window.add(image)
 
def main():
        gtk.main()
        return 0
 
if __name__ == "__main__":
        GarfView()
        main()

Jak vidno, funguje jednoduše: po spuštění zjistí datum, podle něj stáhne z webu ucomics.com aktuální strip, uloží a zobrazí. Žádná bomba.

Dokonce vím o jednom bugu a to, že nový strip vycházi (na náš čas) až kolem 7mé (baj voko), takže od půlnoci do té doby je program jaksi nefunkční, resp. zobrazí prázdnej čtvereček. Co už.