mirror of
https://gitlab.com/chicken-riders/RcGcDw.git
synced 2025-02-23 00:24:09 +00:00
Added full support for #87 and Fandom specific small technicalities
This commit is contained in:
parent
475a318df8
commit
1d10f77445
28
misc.py
28
misc.py
|
@ -147,34 +147,6 @@ class ContentParser(HTMLParser):
|
||||||
self.current_tag = ""
|
self.current_tag = ""
|
||||||
|
|
||||||
|
|
||||||
class LinkParser(HTMLParser):
|
|
||||||
new_string = ""
|
|
||||||
recent_href = ""
|
|
||||||
|
|
||||||
def handle_starttag(self, tag, attrs):
|
|
||||||
for attr in attrs:
|
|
||||||
if attr[0] == 'href':
|
|
||||||
self.recent_href = attr[1]
|
|
||||||
if self.recent_href.startswith("//"):
|
|
||||||
self.recent_href = "https:{rest}".format(rest=self.recent_href)
|
|
||||||
elif not self.recent_href.startswith("http"):
|
|
||||||
self.recent_href = "https://{wiki}.gamepedia.com".format(wiki=settings["wiki"]) + self.recent_href
|
|
||||||
self.recent_href = self.recent_href.replace(")", "\\)")
|
|
||||||
|
|
||||||
def handle_data(self, data):
|
|
||||||
if self.recent_href:
|
|
||||||
self.new_string = self.new_string + "[{}](<{}>)".format(data, self.recent_href)
|
|
||||||
self.recent_href = ""
|
|
||||||
else:
|
|
||||||
self.new_string = self.new_string + data
|
|
||||||
|
|
||||||
def handle_comment(self, data):
|
|
||||||
self.new_string = self.new_string + data
|
|
||||||
|
|
||||||
def handle_endtag(self, tag):
|
|
||||||
misc_logger.debug(self.new_string)
|
|
||||||
|
|
||||||
|
|
||||||
def safe_read(request, *keys):
|
def safe_read(request, *keys):
|
||||||
if request is None:
|
if request is None:
|
||||||
return None
|
return None
|
||||||
|
|
52
rcgcdw.py
52
rcgcdw.py
|
@ -20,13 +20,15 @@
|
||||||
# WARNING! SHITTY CODE AHEAD. ENTER ONLY IF YOU ARE SURE YOU CAN TAKE IT
|
# WARNING! SHITTY CODE AHEAD. ENTER ONLY IF YOU ARE SURE YOU CAN TAKE IT
|
||||||
# You have been warned
|
# You have been warned
|
||||||
|
|
||||||
import time, logging.config, json, requests, datetime, re, gettext, math, random, os.path, schedule, sys, ipaddress
|
import time, logging.config, json, requests, datetime, re, gettext, math, random, os.path, schedule, sys, ipaddress, base64
|
||||||
|
from html.parser import HTMLParser
|
||||||
|
|
||||||
import misc
|
import misc
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from collections import defaultdict, Counter
|
from collections import defaultdict, Counter
|
||||||
from urllib.parse import quote_plus, urlparse, urlunparse
|
from urllib.parse import quote_plus, urlparse, urlunparse
|
||||||
from configloader import settings
|
from configloader import settings
|
||||||
from misc import link_formatter, LinkParser, ContentParser, safe_read, handle_discord_http, add_to_dict
|
from misc import link_formatter, ContentParser, safe_read, handle_discord_http, add_to_dict, misc_logger
|
||||||
|
|
||||||
if __name__ != "__main__": # return if called as a module
|
if __name__ != "__main__": # return if called as a module
|
||||||
logging.critical("The file is being executed as a module. Please execute the script using the console.")
|
logging.critical("The file is being executed as a module. Please execute the script using the console.")
|
||||||
|
@ -70,6 +72,41 @@ profile_fields = {"profile-location": _("Location"), "profile-aboutme": _("About
|
||||||
WIKI_API_PATH: str = ""
|
WIKI_API_PATH: str = ""
|
||||||
WIKI_ARTICLE_PATH: str = ""
|
WIKI_ARTICLE_PATH: str = ""
|
||||||
WIKI_SCRIPT_PATH: str = ""
|
WIKI_SCRIPT_PATH: str = ""
|
||||||
|
WIKI_JUST_DOMAIN: str = ""
|
||||||
|
|
||||||
|
|
||||||
|
class LinkParser(HTMLParser):
|
||||||
|
new_string = ""
|
||||||
|
recent_href = ""
|
||||||
|
|
||||||
|
def handle_starttag(self, tag, attrs):
|
||||||
|
for attr in attrs:
|
||||||
|
if attr[0] == 'href':
|
||||||
|
self.recent_href = attr[1]
|
||||||
|
if self.recent_href.startswith("//"):
|
||||||
|
self.recent_href = "https:{rest}".format(rest=self.recent_href)
|
||||||
|
elif not self.recent_href.startswith("http"):
|
||||||
|
self.recent_href = WIKI_JUST_DOMAIN + self.recent_href
|
||||||
|
self.recent_href = self.recent_href.replace(")", "\\)")
|
||||||
|
elif attr[0] == 'data-uncrawlable-url':
|
||||||
|
self.recent_href = attr[1].encode('ascii')
|
||||||
|
self.recent_href = base64.b64decode(self.recent_href)
|
||||||
|
self.recent_href = WIKI_JUST_DOMAIN + self.recent_href.decode('ascii')
|
||||||
|
|
||||||
|
def handle_data(self, data):
|
||||||
|
if self.recent_href:
|
||||||
|
self.new_string = self.new_string + "[{}](<{}>)".format(data, self.recent_href)
|
||||||
|
self.recent_href = ""
|
||||||
|
else:
|
||||||
|
self.new_string = self.new_string + data
|
||||||
|
|
||||||
|
def handle_comment(self, data):
|
||||||
|
self.new_string = self.new_string + data
|
||||||
|
|
||||||
|
def handle_endtag(self, tag):
|
||||||
|
logger.debug(self.new_string)
|
||||||
|
|
||||||
|
|
||||||
LinkParser = LinkParser()
|
LinkParser = LinkParser()
|
||||||
|
|
||||||
class MWError(Exception):
|
class MWError(Exception):
|
||||||
|
@ -79,6 +116,7 @@ def prepare_paths():
|
||||||
global WIKI_API_PATH
|
global WIKI_API_PATH
|
||||||
global WIKI_ARTICLE_PATH
|
global WIKI_ARTICLE_PATH
|
||||||
global WIKI_SCRIPT_PATH
|
global WIKI_SCRIPT_PATH
|
||||||
|
global WIKI_JUST_DOMAIN
|
||||||
"""Set the URL paths for article namespace and script namespace
|
"""Set the URL paths for article namespace and script namespace
|
||||||
WIKI_API_PATH will be: WIKI_DOMAIN/api.php
|
WIKI_API_PATH will be: WIKI_DOMAIN/api.php
|
||||||
WIKI_ARTICLE_PATH will be: WIKI_DOMAIN/articlepath/$1 where $1 is the replaced string
|
WIKI_ARTICLE_PATH will be: WIKI_DOMAIN/articlepath/$1 where $1 is the replaced string
|
||||||
|
@ -103,6 +141,7 @@ def prepare_paths():
|
||||||
WIKI_API_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/api.php"
|
WIKI_API_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/api.php"
|
||||||
WIKI_SCRIPT_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/"
|
WIKI_SCRIPT_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/"
|
||||||
WIKI_ARTICLE_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["articlepath"]
|
WIKI_ARTICLE_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["articlepath"]
|
||||||
|
WIKI_JUST_DOMAIN = urlunparse((*parsed_url[0:2], "", "", "", ""))
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
logger.critical("Could not verify wikis paths. Please make sure you have given the proper wiki URL in settings.json.")
|
logger.critical("Could not verify wikis paths. Please make sure you have given the proper wiki URL in settings.json.")
|
||||||
|
@ -536,9 +575,12 @@ def embed_formatter(action, change, parsed_comment, categories):
|
||||||
if urls is not None:
|
if urls is not None:
|
||||||
logger.debug(urls)
|
logger.debug(urls)
|
||||||
if "-1" not in urls: # image still exists and not removed
|
if "-1" not in urls: # image still exists and not removed
|
||||||
img_info = next(iter(urls.values()))["imageinfo"]
|
try:
|
||||||
embed["image"]["url"] = img_info[0]["url"]
|
img_info = next(iter(urls.values()))["imageinfo"]
|
||||||
additional_info_retrieved = True
|
embed["image"]["url"] = img_info[0]["url"]
|
||||||
|
additional_info_retrieved = True
|
||||||
|
except KeyError:
|
||||||
|
logger.warning("Wiki did not respond with extended information about file. The preview will not be shown.")
|
||||||
else:
|
else:
|
||||||
logger.warning("Request for additional image information have failed. The preview will not be shown.")
|
logger.warning("Request for additional image information have failed. The preview will not be shown.")
|
||||||
if action == "upload/overwrite":
|
if action == "upload/overwrite":
|
||||||
|
|
Loading…
Reference in a new issue