The unified diff between revisions [8c5c8a3d..] and [e331aa42..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'poetweb.py'

#
#
# patch "poetweb.py"
#  from [b7f62177c811a28243a96a0921525f950120e23c]
#    to [4ead8fdbbb9b582210fe226b0fc04022284712b2]
#
============================================================
--- poetweb.py	b7f62177c811a28243a96a0921525f950120e23c
+++ poetweb.py	4ead8fdbbb9b582210fe226b0fc04022284712b2
@@ -6,14 +6,13 @@
 # All rights reserved.
 #

-import datetime
-import urlparse
-import web
 from poet3 import Poet3
 from forms import haiku
-import cPickle
+
+import urlparse
 import config
 import syslog
+import web
 import re

 # for debugging, logging of referrers, etc.
@@ -32,6 +31,7 @@ class NewLivejournal:
             return 'http://users.%s/%s/' % (site, username)
         else:
             return 'http://%s.%s/' % (username, site)
+
     @classmethod
     def rss_uri(self, site, username):
         return NewLivejournal.user_uri(site, username) + 'data/rss'
@@ -39,6 +39,7 @@ rss_lookup = {
 rss_lookup = {
     'livejournal.com' : NewLivejournal,
     'deadjournal.com' : NewLivejournal,
+    'greatestjournal.com' : NewLivejournal,
 }

 urls = (
@@ -49,32 +50,6 @@ urls = (
     '/robots.txt', 'RobotsView',
 )

-def gen_haiku(rss_uri):
-    poet = Poet3(rss_uri)
-    last_update = poet.storage.mtime('last_update')
-    if datetime.datetime.now() - last_update > config.update_interval:
-        poet.update()
-        # FIXME this doesn't work..
-        poet.storage.open('last_update', 'w').write('')
-    poet.build_state()
-    if poet.symbol_state.forward_markov.total == 0:
-        return -1, None
-
-    # if there has been no upwriting yet, then let's do some now.
-    # we save the resulting combined tokens, so the code uses those
-    # when adding new tokens to the corpus from now on
-    if not poet.upwritten_seqs:
-        to_upwrite = poet.symbol_state.chunkable()
-        cPickle.dump(to_upwrite, poet.storage.open('upwritten.txt', 'w'))
-        poet.upwrite(to_upwrite)
-
-    for attempt in xrange(config.haiku_attempts):
-        poem = haiku(poet)
-        if poem != None:
-            break
-
-    return attempt, poem
-
 class Renderer:
     def __init__(self):
         # any templates that can be inherited from, should be added to the list here
@@ -107,14 +82,25 @@ class HaikuView:
 haiku_base = '''<form action="%(dynamic_uri_path)spost/haiku" method="post"><table align="center" border="0" bgcolor="#DDDDFF" style="border: 1px solid black;"><tr><th>LJ-Haiku<sup>2</sup> for %(username)s</th></tr><tr><td><blockquote align="right" style="text-align:right;border-right:1px solid #808080; padding:5px;">	%(haiku)s</blockquote></td></tr><tr><td align="center"><input type="text" size=8 name="haiku_username" value="%(username)s" /> @ <select name="haiku_server"><option selected value="%(mysite)s">%(mysite)s</option><option value="x">Other...</option></select><input value="%(username)s" type="hidden" name="haiku_referrer" /></td></tr><tr><td align="center"><input type="submit" value="What's my Haiku?"></td></tr><tr><td align="center" bgcolor="#CCCCCC"><small><a href="http://www.livejournal.com/users/grahame/">Created by Grahame</a></small></td></tr></table></form>'''

 class HaikuView:
+    def gen_haiku(self, site, rss_uri):
+        poet = Poet3(site, rss_uri)
+        if not poet.has_data():
+            return -1, None
+
+        for attempt in xrange(config.haiku_attempts):
+            poem = haiku(poet)
+            if poem != None:
+                break
+
+        return attempt, poem
+
     def GET(self, site, username):
         if not rss_lookup.has_key(site):
             ## fixme; this is a site we don't know about; let's return a friendly
             ## page suggesting the user might want to ask about adding it
             return web.notfound()
-        uri = rss_lookup[site].rss_uri(site, username)
-        web.debug(uri)
-        attempts, haiku = gen_haiku(uri)
+        rss_uri = rss_lookup[site].rss_uri(site, username)
+        attempts, haiku = self.gen_haiku(site, rss_uri)
         if haiku == None:
             haiku_code = None
         else:
@@ -122,7 +108,6 @@ class HaikuView:
                                         'dynamic_uri_path' : config.dynamic_uri_path,
                                         'username' : username,
                                         'haiku' : '<br />'.join(' '.join(t) for t in haiku) }
-        web.debug("haiku_code=%s" % haiku_code)
         renderer.render("haiku.html",
                         attempts=attempts,
                         page_title="your haiku",
@@ -132,6 +117,7 @@ class PostMemeView:
 class PostMemeView:
     def GET(self, meme_name):
         web.seeother(config.dynamic_uri_path)
+
     def POST(self, meme_name):
         meme_name = meme_name.lower()
         i = web.input()