#!/usr/bin/env python # .sig engine by TeknoHog 2000 #SQL fetch disabled for now #cacheFile = "/home/teknohog/sig/daquotes" sigTop = "Mr Risto A. Paju ::: http://www.iki.fi/teknohog/\n\n" # The quotes must be separated by blank lines # i.e. lines with only a \n, no spaces! cycleFile = "/home/teknohog/sig/sciquotes" # This must be a FIFO, not a regular file: # $ mknod .signature p sigFile = "/home/teknohog/.signature" # A safety measure: I once got /home full when downloading stuff, # as a result the cycleFile was lost because when attempting to rewrite. # Use this to save the contents of cycleFile (on a different # filesystem!) in case cannot write cycleFile. dumpFile = "/tmp/sigmake-dump" #disabled silly web page update for now #w3File = "/home/teknohog/public_html/finalpage.html" #import string, time, sys from string import join #,split from time import sleep #import MySQL, whrandom #def getsig(IDint): # IDtext = `IDint` # rawtext = (DB.do("select sentence from homepage2 where ID=" + IDtext))[0][0] # textlist = split(rawtext) # # quote = "" # while len(textlist): # tempstring = "" # while len(tempstring) < 72: # if len(textlist): # tempstring = tempstring + textlist.pop(0) + " " # else: # break # quote = quote + tempstring + "\n" # # cache = ReadFile(cacheFile) # cache.append(quote + "\n") # cacheStuff = join(cache, "") # WriteFile(cacheFile, cacheStuff) # # return quote def sigcycle(): quotes = ReadFile(cycleFile) theQuote = [] while quotes[0] == "\n": quotes.pop(0) while quotes[0] != "\n": theQuote.append(quotes.pop(0)) quotes.append("\n") quotes.extend(theQuote) newQuoteStuff = join(quotes, "") try: WriteFile(cycleFile, newQuoteStuff) except: # safety measure to save quotestuff if, e.g. /home is suddenly full.. WriteFile(dumpFile, newQuoteStuff) print "Error writing " + cycleFile + ", exiting." from sys import exit exit() quoteString = join(theQuote, "") return quoteString def ReadFile(file): File = open(file, "r") contents = File.readlines() File.close() return contents def WriteFile(filename, content): File = open(filename, "w") File.write(content) File.close() #def FindQuote(): # try: # DB = MySQL.connect("remote.database.machine", "user") # DB.selectdb("database") # maxID = (DB.do("select max(ID) from homepage2"))[0][0] # id = int(whrandom.random() * maxID + 1) # quote = getsig(id) # DB.close() # # except MySQL.error: # quote = sigcycle() # return quote #def W3update(): # for j in range(0, len(quote)): # if quote[j] == "\n": # quote = quote[:j] + "
" + quote[j+1:] # # w3page = ReadFile(w3File) # startpos = w3page.index("\n") # i = startpos + 1 # while not w3page[i] == "\n": # w3page.pop(i) # w3page.insert(i, quote+"\n") # webstring = join(w3page, "") # WriteFile(w3File, webstring) while 1: try: quote = sigcycle() sleep(0.5) # important - try what happens without this :-) theSig = sigTop + quote WriteFile(sigFile, theSig) except KeyboardInterrupt: pass # eliminate termination from Ctl-C on shell