import pygtk import gtk import os import sys import urllib2 import random import thread gtk.gdk.threads_init() homedir = lambda filename: os.path.join(os.path.expanduser('~'), filename) bfilename = homedir('fapfapfap.bookmarks') class FapFAPfapFAPfapFApFap (gtk.Window): def __init__ (self): gtk.Window.__init__(self) self.set_title ("FapFAPfapFAPfapFApFap TIME") try: self.set_opacity(0.97) except: pass self.connect('destroy', lambda w: gtk.main_quit()) self.resize(1024, 768) self.vbox = gtk.VBox() self.eventbox = gtk.EventBox() self.eventbox.connect('button-release-event', lambda *x: self.randomfap()) scrolled = gtk.ScrolledWindow() scrolled.add_with_viewport(self.eventbox) scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.url_entry = gtk.Entry() self.url_entry.connect('key-release-event', lambda w, event: event.keyval!=65293 or self.load_something(w.get_text())) vbox = gtk.VBox() # -- bbox = gtk.HBox() back = gtk.Button("Back") forward = gtk.Button("Forward") back.connect('clicked', self.back) forward.connect('clicked', self.forward) bbox.pack_start(back) bbox.pack_start(forward) # Bookmarks bookmarksbox = gtk.HBox() load = gtk.Button("Load URL from entry") load.connect('clicked', lambda w: self.load_something(self.url_entry.get_text())) self.bookmarks = self.load_bookmarks() self.bookmarks.connect('changed', lambda w: self.load_something(w.get_active_text())) add_bookmark = gtk.Button("Add to Bookmarks") add_bookmark.connect('clicked', self.add_bookmark) bookmarksbox.pack_start(load) bookmarksbox.pack_start(self.bookmarks) bookmarksbox.pack_start(add_bookmark) #.# vbox.pack_start(bbox) vbox.pack_start(bookmarksbox) self.vbox.pack_start(self.url_entry, False) self.vbox.pack_start(scrolled) self.vbox.pack_end(vbox, False) self.images = [] self.last = 0 def load_bookmarks (self): combobox = gtk.combo_box_new_text() if not os.path.exists(bfilename): return combobox for bookmark in open(bfilename, 'r').readlines(): combobox.append_text(bookmark) return combobox def add_bookmark (self, *w): if os.path.exists(bfilename): old = open(bfilename, 'r').read()+'\n' else: old = '' bookmark = self.images[self.last-1][0] open(bfilename, 'w').write(old+bookmark) self.bookmarks.append_text(bookmark) def load_last (self): url, pixbuf = self.images[self.last-1] self.url_entry.set_text(url) self.image.set_from_pixbuf(pixbuf) def back (self, *w): if not self.last: return self.last -= 1 self.load_last() def forward (self, *w): if self.last == len(self.images): self.randomfap() else: self.last += 1 self.load_last() def load_image (self, image_url): print 'FAPping: '+image_url self.url_entry.set_text("FAPping: "+image_url) data = urllib2.urlopen(image_url) pbl = gtk.gdk.PixbufLoader() pbl.write(data.read()) pixbuf = pbl.get_pixbuf() pbl.close() #..fap if not hasattr(self, 'image'): self.image = gtk.image_new_from_pixbuf(pixbuf) self.eventbox.add(self.image) self.image.show() else: self.image.set_from_pixbuf(pixbuf) self.url_entry.set_text(image_url) self.images.append((image_url, pixbuf)) self.last = len(self.images) #alloc = self.eventbox.get_allocation() #self.resize(alloc.width, alloc.height) #self.resize(pixbuf.get_width(), pixbuf.get_height()) #voi avete res basse, mi fate troppa pena =( def load_image_from_url (self, url): if not url: return image_url = 'http://www.fapfapfap.net/img/'+urllib2.urlopen(url).read().split('img src="')[1].split('"')[0][2:] thread.start_new(self.load_image, (image_url,)) def load_something (self, something): if not something: return something = something.strip() if something[-3:] in ('jpg', 'gif', 'png'): thread.start_new(self.load_image, (something,)) else: self.load_image_from_url(something) def randomfap (self): #fapFAPfap url = 'http://www.fapfapfap.net/img/?picture=' + str(random.randint(0,3214)) self.load_image_from_url(url) def start (self): self.add(self.vbox) self.show_all() gtk.main() if __name__ == '__main__': print "FapFAPfapFAPfapFApFap() !!!" fap = FapFAPfapFAPfapFApFap() fap.start()