summaryrefslogtreecommitdiff
path: root/feeder/pepper_sj.py
diff options
context:
space:
mode:
authorPepper <pepper@scannerjammer.com>2015-05-20 11:16:13 -0400
committerPepper <pepper@scannerjammer.com>2015-05-20 11:16:13 -0400
commita4916103efb2d97896c456ff0e83064b21e85d25 (patch)
treeb3eb529e4b96375109626bbeada35d4f8a2667ee /feeder/pepper_sj.py
parent3790eedc2f48c725c586b8c7b924875fedbeb7b4 (diff)
first commit in a while
Diffstat (limited to 'feeder/pepper_sj.py')
-rwxr-xr-xfeeder/pepper_sj.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/feeder/pepper_sj.py b/feeder/pepper_sj.py
new file mode 100755
index 0000000..ffe94c8
--- /dev/null
+++ b/feeder/pepper_sj.py
@@ -0,0 +1,110 @@
+#!/usr/bin/python
+
+import scanjam
+import asdf_db
+import random
+
+USERID = 412
+USERNAME = "pepper"
+ROOM = "main"
+
+SJ = scanjam.ScanJam (USERID, USERNAME, ROOM)
+DB = asdf_db.db ()
+
+class Talker:
+ # initialize a new talker
+ def __init__ (self, file, rate):
+ self.data_file = file
+ self.seen_file = file + ".seen"
+
+ # load in the data file and the file of things we've already dumped
+ self.dumps = self.slurp (self.data_file)
+ self.seen = self.slurp (self.seen_file)
+ print "slurped"
+
+ # remove things we've already dumped from the queue
+ for key in self.seen.keys():
+ if key in self.dumps:
+ del self.dumps[key]
+
+ # start each talker off-cycle
+ self.rate = rate
+ print "the rate "+str(self.rate)
+ self.tick = random.randint (0, rate)
+ self.on = True
+
+ # consider whether to say something
+ def consider (self):
+ print "self.on "+str(self.on)
+ if not self.on:
+ return
+
+ self.tick += 1
+
+ # 15% chance of dumping
+ if self.tick > self.rate and random.randint (1, 1000) > 500: #850
+
+ # is there anything left to dump?
+ if len(self.dumps) == 0:
+
+ self.on = False
+ print "self.on "+str(self.on)
+ return
+
+ # get a new dump
+ newdump = random.choice (self.dumps.keys())
+
+ # store that we have dumped this already
+ self.seen[newdump] = True
+ del self.dumps[newdump]
+ self.unslurp (self.seen_file, self.seen)
+
+ print ">", newdump
+
+ # perform the dump
+ SJ.say (newdump)
+ self.tick = 0
+
+ # load a flatfile into a hash (url => True)
+ def slurp (self, file):
+ f = open (file, "r")
+ lines = f.readlines()
+ f.close
+ lookup = {}
+ for l in lines:
+ lookup[l.strip()] = True
+ return lookup
+
+ # save a hash into a flatfile
+ def unslurp (self, file, lookup):
+ f = open (file, "w")
+ for line in lookup.keys():
+ f.write (line + "\n")
+ f.close
+ return f
+
+def store_msg (who, msg):
+ sql = "INSERT INTO dump_msg (nick,date,who,dump) VALUES(%s,%s,%s,%s)"
+ args = (USERNAME, asdf_db.now (), who+"@scannerjammer", msg)
+ DB.execute (sql, args)
+ print who, ">", msg
+
+# set up one talker for dumps, one talker for videos
+dump_talker = Talker ("pepper/dumps.txt", 60 * 60 * 4)
+video_talker = Talker ("pepper/videos.txt", 5)
+
+# deduper for messages
+seen_msgs = {}
+
+# poll indefinitely..
+while (1):
+ dump_talker.consider ()
+ video_talker.consider ()
+ msgs = SJ.poll ()
+ for msg in msgs:
+ if msg['msg'] in seen_msgs:
+ continue
+ seen_msgs[msg['msg']] = True
+ if USERNAME in msg['msg'].lower():
+ store_msg (msg['nick'], msg['msg'])
+