convert the project via 2to3
This commit is contained in:
parent
f513b241d2
commit
9112ad0ae7
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
import thread
|
import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from irc.client import NickMask, is_channel
|
from irc.client import NickMask, is_channel
|
||||||
@ -159,7 +159,9 @@ class Acro(Plugin):
|
|||||||
self.bot.privmsg(self.game.channel, "the round has started! your acronym is '{0:s}'. "
|
self.bot.privmsg(self.game.channel, "the round has started! your acronym is '{0:s}'. "
|
||||||
"submit within {1:d} seconds via !acro submit [meaning]".format(acro, sleep_time))
|
"submit within {1:d} seconds via !acro submit [meaning]".format(acro, sleep_time))
|
||||||
|
|
||||||
thread.start_new_thread(self.thread_do_process_submissions, (sleep_time,))
|
t = threading.Thread(target=self.thread_do_process_submissions, args=(sleep_time,))
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _generate_acro():
|
def _generate_acro():
|
||||||
@ -254,12 +256,14 @@ class Acro(Plugin):
|
|||||||
"""Begin the voting period."""
|
"""Begin the voting period."""
|
||||||
|
|
||||||
self.game.state = 3
|
self.game.state = 3
|
||||||
self.game.rounds[-1].sub_shuffle = self.game.rounds[-1].submissions.keys()
|
self.game.rounds[-1].sub_shuffle = list(self.game.rounds[-1].submissions.keys())
|
||||||
random.shuffle(self.game.rounds[-1].sub_shuffle)
|
random.shuffle(self.game.rounds[-1].sub_shuffle)
|
||||||
self.bot.privmsg(self.game.channel, "here are the results. vote with !acro vote [number]")
|
self.bot.privmsg(self.game.channel, "here are the results. vote with !acro vote [number]")
|
||||||
self._print_round_acros()
|
self._print_round_acros()
|
||||||
|
|
||||||
thread.start_new_thread(self.thread_do_process_votes, ())
|
t = threading.Thread(target=self.thread_do_process_votes, args=())
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
||||||
|
|
||||||
def _print_round_acros(self):
|
def _print_round_acros(self):
|
||||||
"""Take the current round's acros and spit them to the channel."""
|
"""Take the current round's acros and spit them to the channel."""
|
||||||
@ -303,17 +307,17 @@ class Acro(Plugin):
|
|||||||
"""For the acros in the round, find the votes for them."""
|
"""For the acros in the round, find the votes for them."""
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for s in self.game.rounds[-1].submissions.keys():
|
for s in list(self.game.rounds[-1].submissions.keys()):
|
||||||
votes = filter(lambda x: x == s, self.game.rounds[-1].votes.values())
|
votes = [x for x in list(self.game.rounds[-1].votes.values()) if x == s]
|
||||||
self.bot.privmsg(self.game.channel, " {0:d} ({1:s}): {2:d}".format(i+1, s, len(votes)))
|
self.bot.privmsg(self.game.channel, " {0:d} ({1:s}): {2:d}".format(i+1, s, len(votes)))
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
def _add_round_scores_to_game_scores(self):
|
def _add_round_scores_to_game_scores(self):
|
||||||
"""Apply the final round scores to the totall scores for the game."""
|
"""Apply the final round scores to the totall scores for the game."""
|
||||||
|
|
||||||
for s in self.game.rounds[-1].votes.values():
|
for s in list(self.game.rounds[-1].votes.values()):
|
||||||
votes = filter(lambda x: x == s, self.game.rounds[-1].votes.values())
|
votes = [x for x in list(self.game.rounds[-1].votes.values()) if x == s]
|
||||||
if s in self.game.scores.keys():
|
if s in list(self.game.scores.keys()):
|
||||||
self.game.scores[s] += len(votes)
|
self.game.scores[s] += len(votes)
|
||||||
else:
|
else:
|
||||||
self.game.scores[s] = len(votes)
|
self.game.scores[s] = len(votes)
|
||||||
@ -338,7 +342,7 @@ class Acro(Plugin):
|
|||||||
def _print_game_scores(self):
|
def _print_game_scores(self):
|
||||||
"""Print the final calculated scores."""
|
"""Print the final calculated scores."""
|
||||||
|
|
||||||
for s in self.game.scores.keys():
|
for s in list(self.game.scores.keys()):
|
||||||
self.bot.privmsg(self.game.channel, " {0:s}: {1:d}".format(s, self.game.scores[s]))
|
self.bot.privmsg(self.game.channel, " {0:s}: {1:d}".format(s, self.game.scores[s]))
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Access to countdown items through bot commands."""
|
"""Access to countdown items through bot commands."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Countdown item models."""
|
"""Countdown item models."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -187,7 +187,7 @@ class DiceRoller(object):
|
|||||||
the actual roll. Returns a string representing the result.
|
the actual roll. Returns a string representing the result.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
a = range(dice)
|
a = list(range(dice))
|
||||||
for i in range(dice):
|
for i in range(dice):
|
||||||
a[i] = random.randint(1, size)
|
a[i] = random.randint(1, size)
|
||||||
if keep != dice:
|
if keep != dice:
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Track dispatcher configurations."""
|
"""Track dispatcher configurations."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
"""Handle dispatcher API requests."""
|
"""Handle dispatcher API requests."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import xmlrpclib
|
import xmlrpc.client
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from rest_framework import generics, status
|
from rest_framework import generics, status
|
||||||
@ -79,7 +77,7 @@ class DispatchMessage(generics.GenericAPIView):
|
|||||||
# connect over XML-RPC and send
|
# connect over XML-RPC and send
|
||||||
try:
|
try:
|
||||||
bot_url = 'http://{0:s}:{1:d}/'.format(settings.IRCBOT_XMLRPC_HOST, settings.IRCBOT_XMLRPC_PORT)
|
bot_url = 'http://{0:s}:{1:d}/'.format(settings.IRCBOT_XMLRPC_HOST, settings.IRCBOT_XMLRPC_PORT)
|
||||||
bot = xmlrpclib.ServerProxy(bot_url)
|
bot = xmlrpc.client.ServerProxy(bot_url)
|
||||||
log.debug("sending '%s' to channel %s", text, action.destination)
|
log.debug("sending '%s' to channel %s", text, action.destination)
|
||||||
bot.privmsg(action.destination, text)
|
bot.privmsg(action.destination, text)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from __future__ import unicode_literals
|
"""IRC plugin for retrieval of facts."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Store "facts"."""
|
"""Store "facts"."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
"""Manage ircbot models and admin actions in the admin interface."""
|
"""Manage ircbot models and admin actions in the admin interface."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import xmlrpclib
|
import xmlrpc.client
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
@ -32,7 +30,7 @@ def send_privmsg(request):
|
|||||||
message = form.cleaned_data['message']
|
message = form.cleaned_data['message']
|
||||||
|
|
||||||
bot_url = 'http://{0:s}:{1:d}/'.format(settings.IRCBOT_XMLRPC_HOST, settings.IRCBOT_XMLRPC_PORT)
|
bot_url = 'http://{0:s}:{1:d}/'.format(settings.IRCBOT_XMLRPC_HOST, settings.IRCBOT_XMLRPC_PORT)
|
||||||
bot = xmlrpclib.ServerProxy(bot_url)
|
bot = xmlrpc.client.ServerProxy(bot_url)
|
||||||
bot.privmsg(target, message)
|
bot.privmsg(target, message)
|
||||||
form = PrivmsgForm()
|
form = PrivmsgForm()
|
||||||
else:
|
else:
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
"""Provide the base IRC client bot which other code can latch onto."""
|
"""Provide the base IRC client bot which other code can latch onto."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import bisect
|
import bisect
|
||||||
import collections
|
import collections
|
||||||
import copy
|
import copy
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
|
from xmlrpc.server import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
|
||||||
import socket
|
import socket
|
||||||
import ssl
|
import ssl
|
||||||
import sys
|
import sys
|
||||||
import thread
|
import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -106,7 +104,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
handler = PrioritizedRegexHandler(priority, regex, handler)
|
handler = PrioritizedRegexHandler(priority, regex, handler)
|
||||||
for event in events:
|
for event in events:
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
log.debug(u"in add_global_regex_handler")
|
log.debug("in add_global_regex_handler")
|
||||||
event_regex_handlers = self.regex_handlers.setdefault(event, [])
|
event_regex_handlers = self.regex_handlers.setdefault(event, [])
|
||||||
bisect.insort(event_regex_handlers, handler)
|
bisect.insort(event_regex_handlers, handler)
|
||||||
|
|
||||||
@ -149,7 +147,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
# only do aliasing for pubmsg/privmsg
|
# only do aliasing for pubmsg/privmsg
|
||||||
if event.type in ['pubmsg', 'privmsg']:
|
if event.type in ['pubmsg', 'privmsg']:
|
||||||
what = event.arguments[0]
|
what = event.arguments[0]
|
||||||
log.debug(u"checking for alias for %s", what)
|
log.debug("checking for alias for %s", what)
|
||||||
|
|
||||||
for alias in Alias.objects.all():
|
for alias in Alias.objects.all():
|
||||||
repl = alias.replace(what)
|
repl = alias.replace(what)
|
||||||
@ -161,18 +159,18 @@ class DrReactor(irc.client.Reactor):
|
|||||||
|
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
# doing regex version first as it has the potential to be more specific
|
# doing regex version first as it has the potential to be more specific
|
||||||
log.debug(u"checking regex handlers for %s", event.type)
|
log.debug("checking regex handlers for %s", event.type)
|
||||||
matching_handlers = sorted(
|
matching_handlers = sorted(
|
||||||
self.regex_handlers.get("all_events", []) +
|
self.regex_handlers.get("all_events", []) +
|
||||||
self.regex_handlers.get(event.type, [])
|
self.regex_handlers.get(event.type, [])
|
||||||
)
|
)
|
||||||
log.debug(u"got %d", len(matching_handlers))
|
log.debug("got %d", len(matching_handlers))
|
||||||
for handler in matching_handlers:
|
for handler in matching_handlers:
|
||||||
log.debug(u"checking %s vs. %s", handler, event.arguments)
|
log.debug("checking %s vs. %s", handler, event.arguments)
|
||||||
for line in event.arguments:
|
for line in event.arguments:
|
||||||
match = re.search(handler.regex, line)
|
match = re.search(handler.regex, line)
|
||||||
if match:
|
if match:
|
||||||
log.debug(u"match!")
|
log.debug("match!")
|
||||||
result = handler.callback(connection, event, match)
|
result = handler.callback(connection, event, match)
|
||||||
if result == "NO MORE":
|
if result == "NO MORE":
|
||||||
return
|
return
|
||||||
@ -182,7 +180,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
self.handlers.get(event.type, [])
|
self.handlers.get(event.type, [])
|
||||||
)
|
)
|
||||||
for handler in matching_handlers:
|
for handler in matching_handlers:
|
||||||
log.debug(u"not-match")
|
log.debug("not-match")
|
||||||
result = handler.callback(connection, event)
|
result = handler.callback(connection, event)
|
||||||
if result == "NO MORE":
|
if result == "NO MORE":
|
||||||
return
|
return
|
||||||
@ -204,14 +202,14 @@ class DrReactor(irc.client.Reactor):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log.debug(u"RECURSING EVENT: e[%s] s[%s] t[%s] a[%s]", event.type, event.source,
|
log.debug("RECURSING EVENT: e[%s] s[%s] t[%s] a[%s]", event.type, event.source,
|
||||||
event.target, event.arguments)
|
event.target, event.arguments)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# begin recursion search
|
# begin recursion search
|
||||||
attempt = event.arguments[0]
|
attempt = event.arguments[0]
|
||||||
|
|
||||||
log.debug(u"checking it against %s", attempt)
|
log.debug("checking it against %s", attempt)
|
||||||
|
|
||||||
start_idx = attempt.find('[')
|
start_idx = attempt.find('[')
|
||||||
subcmd = attempt[start_idx+1:]
|
subcmd = attempt[start_idx+1:]
|
||||||
@ -219,7 +217,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
subcmd = subcmd[:end_idx]
|
subcmd = subcmd[:end_idx]
|
||||||
|
|
||||||
if start_idx != -1 and end_idx != -1 and len(subcmd) > 0:
|
if start_idx != -1 and end_idx != -1 and len(subcmd) > 0:
|
||||||
log.debug(u"subcmd: %s", subcmd)
|
log.debug("subcmd: %s", subcmd)
|
||||||
|
|
||||||
# found recursion candidate
|
# found recursion candidate
|
||||||
# copy the event and see if IT has recursion to do
|
# copy the event and see if IT has recursion to do
|
||||||
@ -227,7 +225,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
newevent.arguments[0] = subcmd
|
newevent.arguments[0] = subcmd
|
||||||
newevent._recursing = True
|
newevent._recursing = True
|
||||||
|
|
||||||
log.debug(u"new event copied")
|
log.debug("new event copied")
|
||||||
|
|
||||||
self.try_recursion(connection, newevent)
|
self.try_recursion(connection, newevent)
|
||||||
|
|
||||||
@ -243,7 +241,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
# event's [] section with it.
|
# event's [] section with it.
|
||||||
oldtext = event.arguments[0]
|
oldtext = event.arguments[0]
|
||||||
newtext = oldtext.replace('['+subcmd+']', newevent.arguments[0])
|
newtext = oldtext.replace('['+subcmd+']', newevent.arguments[0])
|
||||||
log.debug(u"oldtext: '%s' newtext: '%s'", oldtext, newtext)
|
log.debug("oldtext: '%s' newtext: '%s'", oldtext, newtext)
|
||||||
event.arguments[0] = newtext
|
event.arguments[0] = newtext
|
||||||
|
|
||||||
# we have now resolved the []. recursion will unfold, replacing
|
# we have now resolved the []. recursion will unfold, replacing
|
||||||
@ -251,9 +249,9 @@ class DrReactor(irc.client.Reactor):
|
|||||||
# original irc event in _handle_event, which will do one
|
# original irc event in _handle_event, which will do one
|
||||||
# last search on the text.
|
# last search on the text.
|
||||||
else:
|
else:
|
||||||
log.debug(u"no more recursion here")
|
log.debug("no more recursion here")
|
||||||
except IndexError:
|
except IndexError:
|
||||||
log.debug(u"no more recursion here")
|
log.debug("no more recursion here")
|
||||||
|
|
||||||
def try_to_replace_event_text_with_module_text(self, connection, event):
|
def try_to_replace_event_text_with_module_text(self, connection, event):
|
||||||
"""Do something very similar to _handle_event, but for recursion.
|
"""Do something very similar to _handle_event, but for recursion.
|
||||||
@ -272,7 +270,7 @@ class DrReactor(irc.client.Reactor):
|
|||||||
# only do aliasing for pubmsg/privmsg
|
# only do aliasing for pubmsg/privmsg
|
||||||
if event.type in ['pubmsg', 'privmsg']:
|
if event.type in ['pubmsg', 'privmsg']:
|
||||||
what = event.arguments[0]
|
what = event.arguments[0]
|
||||||
log.debug(u"checking for (recursion) alias for %s", what)
|
log.debug("checking for (recursion) alias for %s", what)
|
||||||
|
|
||||||
for alias in Alias.objects.all():
|
for alias in Alias.objects.all():
|
||||||
repl = alias.replace(what)
|
repl = alias.replace(what)
|
||||||
@ -282,22 +280,22 @@ class DrReactor(irc.client.Reactor):
|
|||||||
|
|
||||||
with self.mutex:
|
with self.mutex:
|
||||||
# doing regex version first as it has the potential to be more specific
|
# doing regex version first as it has the potential to be more specific
|
||||||
log.debug(u"checking (recursion) regex handlers for %s", event.type)
|
log.debug("checking (recursion) regex handlers for %s", event.type)
|
||||||
matching_handlers = sorted(
|
matching_handlers = sorted(
|
||||||
self.regex_handlers.get("all_events", []) +
|
self.regex_handlers.get("all_events", []) +
|
||||||
self.regex_handlers.get(event.type, [])
|
self.regex_handlers.get(event.type, [])
|
||||||
)
|
)
|
||||||
log.debug(u"got %d", len(matching_handlers))
|
log.debug("got %d", len(matching_handlers))
|
||||||
for handler in matching_handlers:
|
for handler in matching_handlers:
|
||||||
log.debug(u"checking (recursion) %s vs. %s", handler, event.arguments)
|
log.debug("checking (recursion) %s vs. %s", handler, event.arguments)
|
||||||
for line in event.arguments:
|
for line in event.arguments:
|
||||||
match = re.search(handler.regex, line)
|
match = re.search(handler.regex, line)
|
||||||
if match:
|
if match:
|
||||||
log.debug(u"match (recursion)!")
|
log.debug("match (recursion)!")
|
||||||
result = handler.callback(connection, event, match)
|
result = handler.callback(connection, event, match)
|
||||||
log.debug(u"result: %s", result)
|
log.debug("result: %s", result)
|
||||||
if result:
|
if result:
|
||||||
log.debug(u"appending %s to replies", result)
|
log.debug("appending %s to replies", result)
|
||||||
replies.append(result)
|
replies.append(result)
|
||||||
|
|
||||||
matching_handlers = sorted(
|
matching_handlers = sorted(
|
||||||
@ -305,11 +303,11 @@ class DrReactor(irc.client.Reactor):
|
|||||||
self.handlers.get(event.type, [])
|
self.handlers.get(event.type, [])
|
||||||
)
|
)
|
||||||
for handler in matching_handlers:
|
for handler in matching_handlers:
|
||||||
log.debug(u"not-match (recursion)")
|
log.debug("not-match (recursion)")
|
||||||
result = handler.callback(connection, event)
|
result = handler.callback(connection, event)
|
||||||
log.debug(u"result: %s", result)
|
log.debug("result: %s", result)
|
||||||
if result:
|
if result:
|
||||||
log.debug(u"appending %s to replies", result)
|
log.debug("appending %s to replies", result)
|
||||||
replies.append(result)
|
replies.append(result)
|
||||||
|
|
||||||
if len(replies):
|
if len(replies):
|
||||||
@ -364,7 +362,9 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
requestHandler=IrcBotXMLRPCRequestHandler, allow_none=True)
|
requestHandler=IrcBotXMLRPCRequestHandler, allow_none=True)
|
||||||
self.xmlrpc.register_introspection_functions()
|
self.xmlrpc.register_introspection_functions()
|
||||||
|
|
||||||
thread.start_new_thread(self._xmlrpc_listen, ())
|
t = threading.Thread(target=self._xmlrpc_listen, args=())
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
||||||
|
|
||||||
# register XML-RPC stuff
|
# register XML-RPC stuff
|
||||||
self.xmlrpc.register_function(self.privmsg, 'privmsg')
|
self.xmlrpc.register_function(self.privmsg, 'privmsg')
|
||||||
@ -457,7 +457,7 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
def _on_nick(self, c, e):
|
def _on_nick(self, c, e):
|
||||||
before = e.source.nick
|
before = e.source.nick
|
||||||
after = e.target
|
after = e.target
|
||||||
for ch in self.channels.values():
|
for ch in list(self.channels.values()):
|
||||||
if ch.has_user(before):
|
if ch.has_user(before):
|
||||||
ch.change_nick(before, after)
|
ch.change_nick(before, after)
|
||||||
|
|
||||||
@ -472,7 +472,7 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
|
|
||||||
def _on_quit(self, c, e):
|
def _on_quit(self, c, e):
|
||||||
nick = e.source.nick
|
nick = e.source.nick
|
||||||
for ch in self.channels.values():
|
for ch in list(self.channels.values()):
|
||||||
if ch.has_user(nick):
|
if ch.has_user(nick):
|
||||||
ch.remove_user(nick)
|
ch.remove_user(nick)
|
||||||
|
|
||||||
@ -501,11 +501,11 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
time.sleep(settings.IRCBOT_SLEEP_BEFORE_AUTOJOIN_SECONDS)
|
time.sleep(settings.IRCBOT_SLEEP_BEFORE_AUTOJOIN_SECONDS)
|
||||||
|
|
||||||
for chan in IrcChannel.objects.filter(autojoin=True):
|
for chan in IrcChannel.objects.filter(autojoin=True):
|
||||||
log.info(u"autojoining %s", chan.name)
|
log.info("autojoining %s", chan.name)
|
||||||
self.connection.join(chan)
|
self.connection.join(chan)
|
||||||
|
|
||||||
for plugin in IrcPlugin.objects.filter(autoload=True):
|
for plugin in IrcPlugin.objects.filter(autoload=True):
|
||||||
log.info(u"autoloading %s", plugin.path)
|
log.info("autoloading %s", plugin.path)
|
||||||
self._load_plugin(connection, event, plugin.path, feedback=False)
|
self._load_plugin(connection, event, plugin.path, feedback=False)
|
||||||
|
|
||||||
match = re.search(r'(\S+!\S+@\S+)', what)
|
match = re.search(r'(\S+!\S+@\S+)', what)
|
||||||
@ -579,10 +579,10 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
"""Handle IRC requests to load a plugin."""
|
"""Handle IRC requests to load a plugin."""
|
||||||
|
|
||||||
has_perm = ircbotlib.has_permission(event.source, 'ircbot.manage_loaded_plugins')
|
has_perm = ircbotlib.has_permission(event.source, 'ircbot.manage_loaded_plugins')
|
||||||
log.debug(u"has permission to load?: %s", str(has_perm))
|
log.debug("has permission to load?: %s", str(has_perm))
|
||||||
if has_perm:
|
if has_perm:
|
||||||
plugin_path = match.group(1)
|
plugin_path = match.group(1)
|
||||||
log.debug(u"calling _load_plugin on %s", plugin_path)
|
log.debug("calling _load_plugin on %s", plugin_path)
|
||||||
self._load_plugin(connection, event, plugin_path)
|
self._load_plugin(connection, event, plugin_path)
|
||||||
|
|
||||||
def _load_plugin(self, connection, event, plugin_path, feedback=True):
|
def _load_plugin(self, connection, event, plugin_path, feedback=True):
|
||||||
@ -591,7 +591,7 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
The general assumption here is that a plugin's init loads its hooks and handlers.
|
The general assumption here is that a plugin's init loads its hooks and handlers.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log.debug(u"trying to load %s", plugin_path)
|
log.debug("trying to load %s", plugin_path)
|
||||||
|
|
||||||
dest = None
|
dest = None
|
||||||
if feedback:
|
if feedback:
|
||||||
@ -633,16 +633,16 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
"""Handle IRC requests to unload a plugin."""
|
"""Handle IRC requests to unload a plugin."""
|
||||||
|
|
||||||
has_perm = ircbotlib.has_permission(event.source, 'ircbot.manage_loaded_plugins')
|
has_perm = ircbotlib.has_permission(event.source, 'ircbot.manage_loaded_plugins')
|
||||||
log.debug(u"has permission to unload?: %s", str(has_perm))
|
log.debug("has permission to unload?: %s", str(has_perm))
|
||||||
if has_perm:
|
if has_perm:
|
||||||
plugin_path = match.group(1)
|
plugin_path = match.group(1)
|
||||||
log.debug(u"calling _unload_plugin on %s", plugin_path)
|
log.debug("calling _unload_plugin on %s", plugin_path)
|
||||||
self._unload_plugin(connection, event, plugin_path)
|
self._unload_plugin(connection, event, plugin_path)
|
||||||
|
|
||||||
def _unload_plugin(self, connection, event, plugin_path):
|
def _unload_plugin(self, connection, event, plugin_path):
|
||||||
"""Attempt to unload and del a module if it's loaded."""
|
"""Attempt to unload and del a module if it's loaded."""
|
||||||
|
|
||||||
log.debug(u"trying to unload %s", plugin_path)
|
log.debug("trying to unload %s", plugin_path)
|
||||||
|
|
||||||
dest = ircbotlib.reply_destination_for_event(event)
|
dest = ircbotlib.reply_destination_for_event(event)
|
||||||
|
|
||||||
@ -722,9 +722,9 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
"NO MORE" to stop other event handlers from acting.
|
"NO MORE" to stop other event handlers from acting.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log.debug(u"in reply for e[%s] r[%s]", event, replystr)
|
log.debug("in reply for e[%s] r[%s]", event, replystr)
|
||||||
replypath = ircbotlib.reply_destination_for_event(event)
|
replypath = ircbotlib.reply_destination_for_event(event)
|
||||||
log.debug(u"replypath: %s", replypath)
|
log.debug("replypath: %s", replypath)
|
||||||
|
|
||||||
if replystr is not None:
|
if replystr is not None:
|
||||||
recursing = getattr(event, '_recursing', False)
|
recursing = getattr(event, '_recursing', False)
|
||||||
@ -773,9 +773,9 @@ class IRCBot(irc.client.SimpleIRCClient):
|
|||||||
def sigint_handler(self, signal, frame):
|
def sigint_handler(self, signal, frame):
|
||||||
"""Cleanly shutdown on SIGINT."""
|
"""Cleanly shutdown on SIGINT."""
|
||||||
|
|
||||||
log.debug(u"shutting down")
|
log.debug("shutting down")
|
||||||
for path, plugin in self.plugins:
|
for path, plugin in self.plugins:
|
||||||
log.debug(u"trying to shut down %s", path)
|
log.debug("trying to shut down %s", path)
|
||||||
self.plugins.remove((path, plugin))
|
self.plugins.remove((path, plugin))
|
||||||
plugin.stop()
|
plugin.stop()
|
||||||
del plugin
|
del plugin
|
||||||
@ -798,28 +798,28 @@ class Channel(object):
|
|||||||
def users(self):
|
def users(self):
|
||||||
"""Returns an unsorted list of the channel's users."""
|
"""Returns an unsorted list of the channel's users."""
|
||||||
|
|
||||||
return self.userdict.keys()
|
return list(self.userdict.keys())
|
||||||
|
|
||||||
def opers(self):
|
def opers(self):
|
||||||
"""Returns an unsorted list of the channel's operators."""
|
"""Returns an unsorted list of the channel's operators."""
|
||||||
|
|
||||||
return self.operdict.keys()
|
return list(self.operdict.keys())
|
||||||
|
|
||||||
def voiced(self):
|
def voiced(self):
|
||||||
"""Returns an unsorted list of the persons that have voice
|
"""Returns an unsorted list of the persons that have voice
|
||||||
mode set in the channel."""
|
mode set in the channel."""
|
||||||
|
|
||||||
return self.voiceddict.keys()
|
return list(self.voiceddict.keys())
|
||||||
|
|
||||||
def owners(self):
|
def owners(self):
|
||||||
"""Returns an unsorted list of the channel's owners."""
|
"""Returns an unsorted list of the channel's owners."""
|
||||||
|
|
||||||
return self.ownerdict.keys()
|
return list(self.ownerdict.keys())
|
||||||
|
|
||||||
def halfops(self):
|
def halfops(self):
|
||||||
"""Returns an unsorted list of the channel's half-operators."""
|
"""Returns an unsorted list of the channel's half-operators."""
|
||||||
|
|
||||||
return self.halfopdict.keys()
|
return list(self.halfopdict.keys())
|
||||||
|
|
||||||
def has_user(self, nick):
|
def has_user(self, nick):
|
||||||
"""Check whether the channel has a user."""
|
"""Check whether the channel has a user."""
|
||||||
|
@ -39,7 +39,7 @@ class ChannelManagement(Plugin):
|
|||||||
channel = match.group(1)
|
channel = match.group(1)
|
||||||
# put it in the database if it isn't already
|
# put it in the database if it isn't already
|
||||||
chan_mod, c = IrcChannel.objects.get_or_create(name=channel)
|
chan_mod, c = IrcChannel.objects.get_or_create(name=channel)
|
||||||
log.debug(u"joining channel %s", channel)
|
log.debug("joining channel %s", channel)
|
||||||
self.connection.join(channel)
|
self.connection.join(channel)
|
||||||
|
|
||||||
return self.bot.reply(event, "Joined channel {0:s}.".format(channel))
|
return self.bot.reply(event, "Joined channel {0:s}.".format(channel))
|
||||||
@ -51,7 +51,7 @@ class ChannelManagement(Plugin):
|
|||||||
channel = match.group(1)
|
channel = match.group(1)
|
||||||
# put it in the database if it isn't already
|
# put it in the database if it isn't already
|
||||||
chan_mod, c = IrcChannel.objects.get_or_create(name=channel)
|
chan_mod, c = IrcChannel.objects.get_or_create(name=channel)
|
||||||
log.debug(u"parting channel %s", channel)
|
log.debug("parting channel %s", channel)
|
||||||
self.connection.part(channel)
|
self.connection.part(channel)
|
||||||
|
|
||||||
return self.bot.reply(event, "Parted channel {0:s}.".format(channel))
|
return self.bot.reply(event, "Parted channel {0:s}.".format(channel))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from __future__ import unicode_literals
|
"""Watch channel topics for changes and note them."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Library and convenience methods for the IRC bot and plugins."""
|
"""Library and convenience methods for the IRC bot and plugins."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import irc.client
|
import irc.client
|
||||||
@ -25,17 +23,17 @@ class Plugin(object):
|
|||||||
self.connection = connection
|
self.connection = connection
|
||||||
self.event = event
|
self.event = event
|
||||||
|
|
||||||
log.info(u"initialized %s", self.__class__.__name__)
|
log.info("initialized %s", self.__class__.__name__)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
"""Initialization stuff here --- global handlers, configs from database, so on."""
|
"""Initialization stuff here --- global handlers, configs from database, so on."""
|
||||||
|
|
||||||
log.info(u"started %s", self.__class__.__name__)
|
log.info("started %s", self.__class__.__name__)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""Teardown stuff here --- unregister handlers, for example."""
|
"""Teardown stuff here --- unregister handlers, for example."""
|
||||||
|
|
||||||
log.info(u"stopped %s", self.__class__.__name__)
|
log.info("stopped %s", self.__class__.__name__)
|
||||||
|
|
||||||
def _unencode_xml(self, text):
|
def _unencode_xml(self, text):
|
||||||
"""Convert <, >, & to their real entities."""
|
"""Convert <, >, & to their real entities."""
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import django.utils.timezone
|
import django.utils.timezone
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import ircbot.models
|
import ircbot.models
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Track basic IRC settings and similar."""
|
"""Track basic IRC settings and similar."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Karma hooks for the IRC bot."""
|
"""Karma hooks for the IRC bot."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@ -63,7 +61,7 @@ class Karma(Plugin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# check the line for karma
|
# check the line for karma
|
||||||
log.debug(u"searching '%s' for karma", what)
|
log.debug("searching '%s' for karma", what)
|
||||||
matches = re.findall(karma_pattern, what, re.IGNORECASE)
|
matches = re.findall(karma_pattern, what, re.IGNORECASE)
|
||||||
for match in matches:
|
for match in matches:
|
||||||
key = match[0] if match[0] else match[1]
|
key = match[0] if match[0] else match[1]
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Karma logging models."""
|
"""Karma logging models."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import pytz
|
import pytz
|
||||||
|
|
||||||
|
@ -54,11 +54,11 @@ class Markov(Plugin):
|
|||||||
line = match.group(6)
|
line = match.group(6)
|
||||||
topics = [x for x in line.split(' ') if len(x) >= 3]
|
topics = [x for x in line.split(' ') if len(x) >= 3]
|
||||||
|
|
||||||
return self.bot.reply(event, u" ".join(markovlib.generate_line(context, topics=topics,
|
return self.bot.reply(event, " ".join(markovlib.generate_line(context, topics=topics,
|
||||||
min_words=min_size, max_words=max_size,
|
min_words=min_size, max_words=max_size,
|
||||||
max_sentences=1)))
|
max_sentences=1)))
|
||||||
else:
|
else:
|
||||||
return self.bot.reply(event, u" ".join(markovlib.generate_line(context, min_words=min_size,
|
return self.bot.reply(event, " ".join(markovlib.generate_line(context, min_words=min_size,
|
||||||
max_words=max_size,
|
max_words=max_size,
|
||||||
max_sentences=1)))
|
max_sentences=1)))
|
||||||
|
|
||||||
@ -82,11 +82,11 @@ class Markov(Plugin):
|
|||||||
# learn the line
|
# learn the line
|
||||||
recursing = getattr(event, '_recursing', False)
|
recursing = getattr(event, '_recursing', False)
|
||||||
if not recursing:
|
if not recursing:
|
||||||
log.debug(u"learning %s", trimmed_what)
|
log.debug("learning %s", trimmed_what)
|
||||||
context = markovlib.get_or_create_target_context(target)
|
context = markovlib.get_or_create_target_context(target)
|
||||||
markovlib.learn_line(trimmed_what, context)
|
markovlib.learn_line(trimmed_what, context)
|
||||||
|
|
||||||
log.debug(u"searching '%s' for '%s'", what, my_nick)
|
log.debug("searching '%s' for '%s'", what, my_nick)
|
||||||
if re.search(my_nick, what, re.IGNORECASE) is not None:
|
if re.search(my_nick, what, re.IGNORECASE) is not None:
|
||||||
context = markovlib.get_or_create_target_context(target)
|
context = markovlib.get_or_create_target_context(target)
|
||||||
|
|
||||||
@ -97,16 +97,16 @@ class Markov(Plugin):
|
|||||||
# the speaker
|
# the speaker
|
||||||
topics = [x for x in addressed_re.match(what).group(1).split(' ') if len(x) >= 3]
|
topics = [x for x in addressed_re.match(what).group(1).split(' ') if len(x) >= 3]
|
||||||
|
|
||||||
return self.bot.reply(event, u"{0:s}: {1:s}"
|
return self.bot.reply(event, "{0:s}: {1:s}"
|
||||||
u"".format(nick, u" ".join(markovlib.generate_line(context,
|
"".format(nick, " ".join(markovlib.generate_line(context,
|
||||||
topics=topics,
|
topics=topics,
|
||||||
max_sentences=1))))
|
max_sentences=1))))
|
||||||
else:
|
else:
|
||||||
# i wasn't addressed directly, so just respond
|
# i wasn't addressed directly, so just respond
|
||||||
topics = [x for x in what.split(' ') if len(x) >= 3]
|
topics = [x for x in what.split(' ') if len(x) >= 3]
|
||||||
|
|
||||||
return self.bot.reply(event, u"{0:s}"
|
return self.bot.reply(event, "{0:s}"
|
||||||
u"".format(u" ".join(markovlib.generate_line(context,
|
"".format(" ".join(markovlib.generate_line(context,
|
||||||
topics=topics,
|
topics=topics,
|
||||||
max_sentences=1))))
|
max_sentences=1))))
|
||||||
|
|
||||||
|
@ -55,14 +55,14 @@ def generate_sentence(context, topics=None, max_words=30):
|
|||||||
if topics:
|
if topics:
|
||||||
topic_word = random.choice(topics)
|
topic_word = random.choice(topics)
|
||||||
topics.remove(topic_word)
|
topics.remove(topic_word)
|
||||||
log.debug(u"looking for topic '{0:s}'".format(topic_word))
|
log.debug("looking for topic '{0:s}'".format(topic_word))
|
||||||
new_states = MarkovState.objects.filter(context=context, v=topic_word)
|
new_states = MarkovState.objects.filter(context=context, v=topic_word)
|
||||||
|
|
||||||
if len(new_states) > 0:
|
if len(new_states) > 0:
|
||||||
log.debug(u"found '{0:s}', starting backwards".format(topic_word))
|
log.debug("found '{0:s}', starting backwards".format(topic_word))
|
||||||
words.insert(0, topic_word)
|
words.insert(0, topic_word)
|
||||||
while len(words) <= max_words and words[0] != MarkovState._start2:
|
while len(words) <= max_words and words[0] != MarkovState._start2:
|
||||||
log.debug(u"looking backwards for '{0:s}'".format(words[0]))
|
log.debug("looking backwards for '{0:s}'".format(words[0]))
|
||||||
new_states = MarkovState.objects.filter(context=context, v=words[0])
|
new_states = MarkovState.objects.filter(context=context, v=words[0])
|
||||||
words.insert(0, get_word_out_of_states(new_states, backwards=True))
|
words.insert(0, get_word_out_of_states(new_states, backwards=True))
|
||||||
|
|
||||||
@ -72,9 +72,9 @@ def generate_sentence(context, topics=None, max_words=30):
|
|||||||
|
|
||||||
i = len(words)
|
i = len(words)
|
||||||
while len(words) <= max_words and words[-1] != MarkovState._stop:
|
while len(words) <= max_words and words[-1] != MarkovState._stop:
|
||||||
log.debug(u"looking for '{0:s}','{1:s}'".format(words[i-2], words[i-1]))
|
log.debug("looking for '{0:s}','{1:s}'".format(words[i-2], words[i-1]))
|
||||||
new_states = MarkovState.objects.filter(context=context, k1=words[i-2], k2=words[i-1])
|
new_states = MarkovState.objects.filter(context=context, k1=words[i-2], k2=words[i-1])
|
||||||
log.debug(u"states retrieved")
|
log.debug("states retrieved")
|
||||||
words.append(get_word_out_of_states(new_states))
|
words.append(get_word_out_of_states(new_states))
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ def get_word_out_of_states(states, backwards=False):
|
|||||||
count_sum = states.aggregate(Sum('count'))['count__sum']
|
count_sum = states.aggregate(Sum('count'))['count__sum']
|
||||||
hit = random.randint(0, count_sum)
|
hit = random.randint(0, count_sum)
|
||||||
|
|
||||||
log.debug(u"sum: {0:d} hit: {1:d}".format(count_sum, hit))
|
log.debug("sum: {0:d} hit: {1:d}".format(count_sum, hit))
|
||||||
|
|
||||||
states_itr = states.iterator()
|
states_itr = states.iterator()
|
||||||
for state in states_itr:
|
for state in states_itr:
|
||||||
@ -132,14 +132,14 @@ def get_word_out_of_states(states, backwards=False):
|
|||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
log.debug(u"found '{0:s}'".format(new_word))
|
log.debug("found '{0:s}'".format(new_word))
|
||||||
return new_word
|
return new_word
|
||||||
|
|
||||||
|
|
||||||
def learn_line(line, context):
|
def learn_line(line, context):
|
||||||
"""Create a bunch of MarkovStates for a given line of text."""
|
"""Create a bunch of MarkovStates for a given line of text."""
|
||||||
|
|
||||||
log.debug(u"learning %s...", line[:40])
|
log.debug("learning %s...", line[:40])
|
||||||
|
|
||||||
words = line.split()
|
words = line.split()
|
||||||
words = [MarkovState._start1, MarkovState._start2] + words + [MarkovState._stop]
|
words = [MarkovState._start1, MarkovState._start2] + words + [MarkovState._stop]
|
||||||
@ -149,7 +149,7 @@ def learn_line(line, context):
|
|||||||
return
|
return
|
||||||
|
|
||||||
for i, word in enumerate(words):
|
for i, word in enumerate(words):
|
||||||
log.debug(u"'{0:s}','{1:s}' -> '{2:s}'".format(words[i], words[i+1], words[i+2]))
|
log.debug("'{0:s}','{1:s}' -> '{2:s}'".format(words[i], words[i+1], words[i+2]))
|
||||||
state, created = MarkovState.objects.get_or_create(context=context,
|
state, created = MarkovState.objects.get_or_create(context=context,
|
||||||
k1=words[i],
|
k1=words[i],
|
||||||
k2=words[i+1],
|
k2=words[i+1],
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ class MarkovContext(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""String representation."""
|
"""String representation."""
|
||||||
|
|
||||||
return u"{0:s}".format(self.name)
|
return "{0:s}".format(self.name)
|
||||||
|
|
||||||
|
|
||||||
class MarkovTarget(models.Model):
|
class MarkovTarget(models.Model):
|
||||||
@ -35,7 +35,7 @@ class MarkovTarget(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""String representation."""
|
"""String representation."""
|
||||||
|
|
||||||
return u"{0:s} -> {1:s}".format(self.name, self.context.name)
|
return "{0:s} -> {1:s}".format(self.name, self.context.name)
|
||||||
|
|
||||||
|
|
||||||
class MarkovState(models.Model):
|
class MarkovState(models.Model):
|
||||||
@ -67,4 +67,4 @@ class MarkovState(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""String representation."""
|
"""String representation."""
|
||||||
|
|
||||||
return u"{0:s},{1:s} -> {2:s} (count: {3:d})".format(self.k1, self.k2, self.v, self.count)
|
return "{0:s},{1:s} -> {2:s} (count: {3:d})".format(self.k1, self.k2, self.v, self.count)
|
||||||
|
@ -24,7 +24,7 @@ def context_index(request, context_id):
|
|||||||
|
|
||||||
start_t = time.time()
|
start_t = time.time()
|
||||||
context = get_object_or_404(MarkovContext, pk=context_id)
|
context = get_object_or_404(MarkovContext, pk=context_id)
|
||||||
chain = u" ".join(markovlib.generate_line(context))
|
chain = " ".join(markovlib.generate_line(context))
|
||||||
end_t = time.time()
|
end_t = time.time()
|
||||||
|
|
||||||
return render(request, 'context.html', {'chain': chain,
|
return render(request, 'context.html', {'chain': chain,
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Karma logging models."""
|
"""Karma logging models."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
import pytz
|
import pytz
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import django.utils.timezone
|
import django.utils.timezone
|
||||||
|
@ -20,7 +20,7 @@ class Race(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""Text representation of a race."""
|
"""Text representation of a race."""
|
||||||
|
|
||||||
return u"{0:s} ({1:s})".format(self.name, self.key)
|
return "{0:s} ({1:s})".format(self.name, self.key)
|
||||||
|
|
||||||
|
|
||||||
class Racer(models.Model):
|
class Racer(models.Model):
|
||||||
@ -40,7 +40,7 @@ class Racer(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
"""Text representation of a race racer."""
|
"""Text representation of a race racer."""
|
||||||
|
|
||||||
return u"{0:s} in {1:s}".format(self.nick, self.race.name)
|
return "{0:s} in {1:s}".format(self.nick, self.race.name)
|
||||||
|
|
||||||
|
|
||||||
class RaceUpdate(models.Model):
|
class RaceUpdate(models.Model):
|
||||||
@ -59,5 +59,5 @@ class RaceUpdate(models.Model):
|
|||||||
"""Text representation of a race update."""
|
"""Text representation of a race update."""
|
||||||
|
|
||||||
local_time = timezone.localtime(self.event_time)
|
local_time = timezone.localtime(self.event_time)
|
||||||
return u"{0:s} in {1:s} @ {2:s}".format(self.racer.nick, self.race.name,
|
return "{0:s} in {1:s} @ {2:s}".format(self.racer.nick, self.race.name,
|
||||||
local_time.strftime('%Y-%m-%d %H:%M:%S %Z'))
|
local_time.strftime('%Y-%m-%d %H:%M:%S %Z'))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from __future__ import unicode_literals
|
"""Show seen chatter data over IRC."""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import django.utils.timezone
|
import django.utils.timezone
|
||||||
|
@ -21,5 +21,5 @@ class SeenNick(models.Model):
|
|||||||
"""String representation of a seen nick."""
|
"""String representation of a seen nick."""
|
||||||
|
|
||||||
local_time = timezone.localtime(self.seen_time)
|
local_time = timezone.localtime(self.seen_time)
|
||||||
return u"{0:s} seen in {1:s} at {2:s}".format(self.nick, self.channel,
|
return "{0:s} seen in {1:s} at {2:s}".format(self.nick, self.channel,
|
||||||
local_time.strftime('%Y-%m-%d %H:%M:%S %Z'))
|
local_time.strftime('%Y-%m-%d %H:%M:%S %Z'))
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Collaborative nonsense story writing."""
|
"""Collaborative nonsense story writing."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
import datetime
|
import datetime
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Track storycraft games."""
|
"""Track storycraft games."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Assorted text transformations (e.g. rot13)."""
|
"""Assorted text transformations (e.g. rot13)."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
from ircbot.lib import Plugin
|
from ircbot.lib import Plugin
|
||||||
@ -76,7 +74,7 @@ class Transform(Plugin):
|
|||||||
cipher = {'A': 'Y', 'B': 'P', 'C': 'L', 'D': 'T', 'E': 'A', 'F': 'V', 'G': 'K', 'H': 'R', 'I': 'E',
|
cipher = {'A': 'Y', 'B': 'P', 'C': 'L', 'D': 'T', 'E': 'A', 'F': 'V', 'G': 'K', 'H': 'R', 'I': 'E',
|
||||||
'J': 'Z', 'K': 'G', 'L': 'M', 'M': 'S', 'N': 'H', 'O': 'U', 'P': 'B', 'Q': 'X', 'R': 'N',
|
'J': 'Z', 'K': 'G', 'L': 'M', 'M': 'S', 'N': 'H', 'O': 'U', 'P': 'B', 'Q': 'X', 'R': 'N',
|
||||||
'S': 'C', 'T': 'D', 'U': 'I', 'V': 'J', 'W': 'F', 'X': 'Q', 'Y': 'O', 'Z': 'W'}
|
'S': 'C', 'T': 'D', 'U': 'I', 'V': 'J', 'W': 'F', 'X': 'Q', 'Y': 'O', 'Z': 'W'}
|
||||||
decipher = dict([(v, k) for (k, v) in cipher.iteritems()])
|
decipher = dict([(v, k) for (k, v) in list(cipher.items())])
|
||||||
|
|
||||||
if not reverse:
|
if not reverse:
|
||||||
trans = []
|
trans = []
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
"""Access to Twitter through bot commands."""
|
"""Access to Twitter through bot commands."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import thread
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import models, migrations
|
from django.db import models, migrations
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
"""Twitter settings models."""
|
"""Twitter settings models."""
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import urllib2
|
import urllib.request, urllib.error, urllib.parse
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
@ -23,8 +21,8 @@ def get_conditions_for_query(queryitems):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
url = wu_base_url + ('{0:s}/q/{1:s}.json'.format('conditions', query))
|
url = wu_base_url + ('{0:s}/q/{1:s}.json'.format('conditions', query))
|
||||||
log.debug(u"calling %s", url)
|
log.debug("calling %s", url)
|
||||||
json_resp = urllib2.urlopen(url)
|
json_resp = urllib.request.urlopen(url)
|
||||||
condition_data = json.load(json_resp)
|
condition_data = json.load(json_resp)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
log.error("error while making conditions query")
|
log.error("error while making conditions query")
|
||||||
@ -137,7 +135,7 @@ def get_forecast_for_query(queryitems):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
url = wu_base_url + ('{0:s}/q/{1:s}.json'.format('forecast', query))
|
url = wu_base_url + ('{0:s}/q/{1:s}.json'.format('forecast', query))
|
||||||
json_resp = urllib2.urlopen(url)
|
json_resp = urllib.request.urlopen(url)
|
||||||
forecast_data = json.load(json_resp)
|
forecast_data = json.load(json_resp)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
log.error("error while making forecast query")
|
log.error("error while making forecast query")
|
||||||
|
Loading…
Reference in New Issue
Block a user