Added updates

This commit is contained in:
Frisk 2021-01-20 16:45:17 +01:00
parent 4e1aad4025
commit 0459e3fd68
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
2 changed files with 53 additions and 0 deletions

View file

@ -18,6 +18,7 @@ from src.queue_handler import DBHandler
from src.wiki import Wiki, process_cats, process_mwmsgs, essential_info, essential_feeds from src.wiki import Wiki, process_cats, process_mwmsgs, essential_info, essential_feeds
from src.discord import DiscordMessage, generic_msg_sender_exception_logger, stack_message_list from src.discord import DiscordMessage, generic_msg_sender_exception_logger, stack_message_list
from src.wiki_ratelimiter import RateLimiter from src.wiki_ratelimiter import RateLimiter
from src.irc_feed import AioIRCCat
logging.config.dictConfig(settings["logging"]) logging.config.dictConfig(settings["logging"])
@ -64,6 +65,11 @@ class RcQueue:
async def start_group(self, group, initial_wikis): async def start_group(self, group, initial_wikis):
"""Starts a task for given domain group""" """Starts a task for given domain group"""
if group not in self.domain_list: if group not in self.domain_list:
if group in settings["irc_servers"]:
irc_connection = AioIRCCat(settings["irc_servers"]["group"]["irc_channel_mapping"], all_wikis)
irc_connection.connect(settings["irc_servers"][group]["irc_host"], settings["irc_servers"][group]["irc_port"], "RcGcDb")
else:
irc_connection = None
self.domain_list[group] = {"task": asyncio.create_task(scan_group(group)), "last_rowid": 0, "query": LimitedList(initial_wikis), "rate_limiter": RateLimiter()} self.domain_list[group] = {"task": asyncio.create_task(scan_group(group)), "last_rowid": 0, "query": LimitedList(initial_wikis), "rate_limiter": RateLimiter()}
logger.debug(self.domain_list[group]) logger.debug(self.domain_list[group])
else: else:

47
src/irc_feed.py Normal file
View file

@ -0,0 +1,47 @@
import irc.client_aio
from urllib.parse import urlparse, quote
class AioIRCCat(irc.client_aio.AioSimpleIRCClient):
def __init__(self, targets, all_wikis):
irc.client.SimpleIRCClient.__init__(self)
self.targets = targets
self.updated = [] # Storage for edited wikis
self.wikis = all_wikis
def on_welcome(self, connection, event): # Join IRC channels
for channel in self.targets.values():
connection.join(channel)
def on_pubmsg(self, channel, event):
def on_nicknameinuse(self, c, e):
c.nick(c.get_nickname() + "_")
async def parse_fandom_message(self, message):
raw_msg = message
message = message.split("\x035*\x03")
try:
user = message[1][4:].strip().strip(chr(3))
except IndexError:
return
# print(asyncio.all_tasks())
half = message[0].find("\x0302http")
if half == -1:
return
message = message[0][half + 3:].strip()
# print(message)
url = urlparse(message)
full_url = url.netloc + recognize_langs(url.path)
if full_url in self.wikis:
self.updated.append(full_url)
def recognize_langs(path):
lang = ""
new_path = path.split("/")
if len(new_path)>2:
if new_path[1] != "wiki":
lang = "/"+new_path[1]
return lang