X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/cf400e0917f9b214cd7642e410ac0a13a9a8c726..79519d5abd251267436256b6cc41f36872f39dbe:/modules/nitterize.py diff --git a/modules/nitterize.py b/modules/nitterize.py index 2b4251f..8a8b095 100644 --- a/modules/nitterize.py +++ b/modules/nitterize.py @@ -1,8 +1,6 @@ # Erebus IRC bot - Author: Erebus Team # vim: fileencoding=utf-8 -# module for 's/regex/replacement/' style correction -# warning: arbitrary regex's are generally capable of various DoS attacks on CPU/memory usage. use with caution. -# see for usage examples: https://github.com/zonidjan/erebus/commit/d7e9802778477f1faa26a03078cb1b3c018a5e5c +# nitterize twitter links # This file is released into the public domain; see http://unlicense.org/ # module info @@ -10,7 +8,7 @@ modinfo = { 'author': 'Erebus Team', 'license': 'public domain', 'compatible': [0], # compatible module API versions - 'depends': [], # other modules required to work properly? + 'depends': ['urls'], # other modules required to work properly? 'softdeps': [], # modules which are preferred but not required } @@ -22,16 +20,28 @@ modstop = lib.modstop # module code import re -from collections import namedtuple -re_findtwitter = re.compile(r"""https?://(?:www\.)?(?:twitter|x)\.com/([-.a-z0-9/]+)""", re.I) +re_findtwitter = re.compile(r"""https?://(?:www\.)?(?:twitter|x)\.com/([-./_a-z0-9]+)""", re.I) @lib.hooknum("PRIVMSG") def privmsg_hook(bot, line): pieces = line.split(None, 3) chan = pieces[2] + if chan[0] != "#": return msg = pieces[3][1:] + replaced = "" for mo in re_findtwitter.finditer(msg): - replaced += re_findtwitter.sub(r"https://nitter.projectsegfau.lt/\1", mo.group(0)) + " " + replaced += re_findtwitter.sub(bot.parent.cfg.get('nitterize', 'instance', 'https://nitter.net') + r"\1", mo.group(0)) + " " if replaced: - bot.msg(chan, "%s" % (replaced)) + bot.msg(chan, replaced) + titles = lib.mod('urls').process_line(replaced) + lib.mod('urls').send_response(bot, chan, titles) + +@lib.hook(glevel=lib.STAFF, needchan=False) +@lib.argsEQ(1) +def setnitter(bot, user, chan, realtarget, *args): + newnitter = args[0] + if newnitter[-1] != "/": + newnitter += "/" + bot.parent.cfg.set('nitterize', 'instance', newnitter) + return 'Done'