#!/usr/bin/python # -*- coding: utf-8 -*- import cgitb cgitb.enable() import urllib2, re, cgi from random import choice, seed URL0 = "http://explorer.plncoin.org/chain/PLNcoin/q/addressbalance/" URL1 = "http://81.210.53.210:2750/chain/PLNCoin/q/addressbalance/" URL2 = "http://explorer.zaplnc.pl/chain/PLNcoin/q/addressbalance/" # ADDR = "AABTYcuWBFwcqjLpxxkBSatJfozS4hT32G" # ADDR = "A4mQQWkiqF8ae3pgnUhL3xjZioh4UCUTe3" ADDR = "A1wi4SkwDsjofP5CDDM1NWdsXNsFtNbvTC" MULT = 100.0 # balance multiplier SLOWA = [u'gdzie', u'kocham', u'kraj', u'nas', u'ojczyzna', u'ojczyzny', u'polska', u'szukaj', u'te', u'wśród', u'ziemia', u'chwała', u'nadziei', u'nowe', u'wraca'] class Verse(unicode): syllcnt = -1 syll_re = re.compile( ur'((i?[aoieyuąęó])|(\b[bcdfghj-np-tvwxzśćńźżł]+[rl][bcdfghj-np-tvwxzśćńźżł]+\b))', re.I | re.U ) def __init__(self, *args, **kwargs): super(Verse, self).__init__(*args, **kwargs) v = self.syll_re.findall(self) self.syllcnt = len(v) def words(self): return map(Verse, self.split(' ')) def gen_verse(syll): global SLOWA verse = Verse() while verse.syllcnt != syll: verse = Verse() words = [] while verse.syllcnt < syll: words.append(choice(SLOWA)) verse = Verse(' '.join(words)) return verse def versek(): global ADDR seed(ADDR) while True: yield gen_verse(8) yield gen_verse(7) def paid_versek(coins): filling_verses = [ "Ha!", "Zawsze!", "Na zawsze!", "Po wsze czasy!", "Po wsze czasy. Ha!", "Teraz i na zawsze!", "Teraz i po wsze czasy!" ] for verse in versek(): if coins == 0: break if coins < verse.syllcnt: verse = gen_verse(coins) # words = [] # for word in verse.words(): # if coins == 0: break # if coins < word.syllcnt: # if words: # words = ' '.join(words) # yield words.rstrip(' ,.?!:;') + '...' # while coins > 0: # n = len(filling_verses) # n = coins if coins < n else n # coins -= n # yield filling_verses[n - 1] # return # coins -= word.syllcnt # words.append(word) # words = ' '.join(words) # yield words.rstrip(' ,.?!:;') + '...' #else: coins -= verse.syllcnt yield verse #def balance(): # global URL1, URL2, ADDR # try: # return float(urllib2.urlopen(URL1 + ADDR).read()) # except: # try: # return float(urllib2.urlopen(URL2 + ADDR).read()) # except: # return -1 def balance(): global URL0, ADDR try: req = urllib2.Request(URL0 + ADDR) req.add_header('User-agent', 'Imaginacje patriotyzmu cyfrowego') return float(urllib2.urlopen(req).read()) except: return -1 #coins = 0.296574 coins = balance() params = cgi.FieldStorage() if 'ajax' in params and params['ajax']: print "Status: 200 OK" print "Content-type: text/plain; charset=utf-8" print print coins exit() print """Status: 200 OK Content-type: text/html; charset=utf-8
PLNcoinowy generator dadaistycznej poezji patriotycznej
Stawka: %s PLNcoin za sylabę
Przelej PLNcoiny na ten adres i odśwież stronę:
%s
Po wykryciu płatności system doda dla Ciebie nowe wersy.
""" % (str(1.0/MULT).rstrip('0'), ADDR) for verse in paid_versek(sylls): print "" + unicode(verse).encode('utf-8') print """