update
This commit is contained in:
parent
4c255ece7a
commit
c4e166bd8c
10 changed files with 249 additions and 111 deletions
|
@ -13,6 +13,6 @@ dc_token =
|
|||
base_superuser = QQ|2596322644
|
||||
Check_accessKeyId =
|
||||
Check_accessKeySecret =
|
||||
infobox_render =
|
||||
web_render =
|
||||
arcapi_url =
|
||||
tg_token =
|
|
@ -5,7 +5,6 @@ import traceback
|
|||
from typing import Dict, Union, List, Set
|
||||
|
||||
from core.elements import Command, Option, Schedule, RegexCommand, StartUp, PrivateAssets
|
||||
from core.elements.module.meta import Meta
|
||||
from core.logger import Logger
|
||||
|
||||
load_dir_path = os.path.abspath('./modules/')
|
||||
|
@ -105,12 +104,12 @@ class ModulesManager:
|
|||
if isinstance(x, (tuple, list)):
|
||||
for y in x:
|
||||
if isinstance(y, str):
|
||||
alias_list[module.bind_prefix].append(x)
|
||||
alias_list[module.bind_prefix].append(y)
|
||||
if isinstance(y, dict):
|
||||
for z in y:
|
||||
if z not in alias_list:
|
||||
alias_list.update({z: []})
|
||||
alias_list[z].append(y[z])
|
||||
if y[z] not in alias_list:
|
||||
alias_list.update({y[z]: []})
|
||||
alias_list[y[z]].append(z)
|
||||
return alias_list
|
||||
|
||||
@staticmethod
|
||||
|
|
|
@ -80,7 +80,7 @@ class CommandParser:
|
|||
if match_detail_help:
|
||||
x = f'{match_detail_help.group(1)}- {match_detail_help.group(2)}'
|
||||
arglst.append(x)
|
||||
args = f'用法:\n ' + '\n '.join(y for y in arglst)
|
||||
args = '\n'.join(y for y in arglst)
|
||||
else:
|
||||
raise InvalidHelpDocTypeError
|
||||
return args
|
||||
|
|
69
core/utils/image_table.py
Normal file
69
core/utils/image_table.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
import os
|
||||
import traceback
|
||||
import uuid
|
||||
import re
|
||||
from typing import List, Union
|
||||
|
||||
import ujson as json
|
||||
|
||||
import aiohttp
|
||||
from tabulate import tabulate
|
||||
|
||||
from config import Config
|
||||
|
||||
web_render = Config('web_render')
|
||||
|
||||
|
||||
class ImageTable:
|
||||
def __init__(self, data, headers):
|
||||
self.data = data
|
||||
self.headers = headers
|
||||
|
||||
|
||||
async def image_table_render(table: Union[ImageTable, List[ImageTable]]):
|
||||
if not web_render:
|
||||
return False
|
||||
try:
|
||||
tblst = []
|
||||
if isinstance(table, ImageTable):
|
||||
table = [table]
|
||||
max_width = 500
|
||||
for tbl in table:
|
||||
d = []
|
||||
for row in tbl.data:
|
||||
cs = []
|
||||
for c in row:
|
||||
cs.append(re.sub(r'\n', '<br>', c))
|
||||
d.append(cs)
|
||||
w = len(tbl.headers) * 500
|
||||
if w > max_width:
|
||||
max_width = w
|
||||
tblst.append(re.sub(r'<table>|</table>', '', tabulate(d, tbl.headers, tablefmt='unsafehtml')))
|
||||
tblst = '<table>' + '\n'.join(tblst) + '</table>'
|
||||
css = """
|
||||
<style>table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table, th, td {
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
th, td {
|
||||
padding: 15px;
|
||||
text-align: left;
|
||||
}</style>"""
|
||||
html = {'content': tblst + css, 'width': w}
|
||||
picname = os.path.abspath(f'./cache/{str(uuid.uuid4())}.jpg')
|
||||
if os.path.exists(picname):
|
||||
os.remove(picname)
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(web_render, headers={
|
||||
'Content-Type': 'application/json',
|
||||
}, data=json.dumps(html)) as resp:
|
||||
with open(picname, 'wb+') as jpg:
|
||||
jpg.write(await resp.read())
|
||||
return picname
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return False
|
|
@ -6,9 +6,10 @@ import time
|
|||
import psutil
|
||||
import ujson as json
|
||||
|
||||
from core.elements import MessageSession, Command, PrivateAssets
|
||||
from core.elements import MessageSession, Command, PrivateAssets, Image, Plain
|
||||
from core.loader import ModulesManager
|
||||
from core.component import on_command
|
||||
from core.utils.image_table import ImageTable, image_table_render, web_render
|
||||
from core.parser.command import CommandParser, InvalidHelpDocTypeError
|
||||
from database import BotDBUtil
|
||||
|
||||
|
@ -148,30 +149,86 @@ async def bot_help(msg: MessageSession):
|
|||
else:
|
||||
await msg.sendMessage('此模块可能不存在,请检查输入。')
|
||||
|
||||
|
||||
@hlp.handle()
|
||||
async def _(msg: MessageSession):
|
||||
module_list = ModulesManager.return_modules_list_as_dict()
|
||||
target_enabled_list = BotDBUtil.Module(msg).check_target_enabled_module_list()
|
||||
developers = ModulesManager.return_modules_developers_map()
|
||||
alias = ModulesManager.return_modules_alias_map()
|
||||
help_msg = ['基础命令:']
|
||||
essential = []
|
||||
for x in module_list:
|
||||
if isinstance(module_list[x], Command) and module_list[x].base:
|
||||
essential.append(module_list[x].bind_prefix)
|
||||
help_msg.append(' | '.join(essential))
|
||||
help_msg.append('模块扩展命令:')
|
||||
module_ = []
|
||||
for x in module_list:
|
||||
if x in BotDBUtil.Module(msg).check_target_enabled_module_list():
|
||||
module_.append(x)
|
||||
help_msg.append(' | '.join(module_))
|
||||
print(help_msg)
|
||||
help_msg.append(
|
||||
'使用~help <对应模块名>查看详细信息。\n使用~modules查看所有的可用模块。\n你也可以通过查阅文档获取帮助:\nhttps://bot.teahou.se/wiki/')
|
||||
help_msg.append('[本消息将在一分钟后撤回]')
|
||||
send = await msg.sendMessage('\n'.join(help_msg))
|
||||
await msg.sleep(60)
|
||||
await send.delete()
|
||||
legacy_help = False
|
||||
if web_render and msg.Feature.image:
|
||||
tables = []
|
||||
essential = []
|
||||
m = []
|
||||
for x in module_list:
|
||||
module_ = module_list[x]
|
||||
appends = [module_.bind_prefix]
|
||||
help_ = CommandParser(module_)
|
||||
doc_ = []
|
||||
if module_.desc is not None:
|
||||
doc_.append(module_.desc)
|
||||
if help_.args is not None:
|
||||
doc_.append(help_.return_formatted_help_doc())
|
||||
doc = '\n'.join(doc_)
|
||||
appends.append(doc)
|
||||
module_alias = ModulesManager.return_module_alias(module_.bind_prefix)
|
||||
malias = []
|
||||
for a in module_alias:
|
||||
for b in module_alias[a]:
|
||||
malias.append(f'{b} -> {a}')
|
||||
if malias:
|
||||
appends.append('\n'.join(malias))
|
||||
else:
|
||||
appends.append('')
|
||||
if x in developers:
|
||||
dev_list = developers[x]
|
||||
if isinstance(dev_list, (list, tuple)):
|
||||
devs = '、'.join(developers[x]) if developers[x] is not None else ''
|
||||
elif isinstance(dev_list, str):
|
||||
devs = dev_list
|
||||
else:
|
||||
devs = '<数据类型错误,请联系开发者解决>'
|
||||
else:
|
||||
devs = ''
|
||||
appends.append(devs)
|
||||
if isinstance(module_, Command) and module_.base:
|
||||
essential.append(appends)
|
||||
if x in target_enabled_list:
|
||||
m.append(appends)
|
||||
if essential:
|
||||
tables.append(ImageTable(essential, ['基础模块列表', '帮助信息', '命令别名', '作者']))
|
||||
if m:
|
||||
tables.append(ImageTable(m, ['扩展模块列表', '帮助信息', '命令别名', '作者']))
|
||||
if tables:
|
||||
render = await image_table_render(tables)
|
||||
if render:
|
||||
await msg.sendMessage([Image(render),
|
||||
Plain('使用~modules查看所有的可用模块。'
|
||||
'\n你也可以通过查阅文档获取帮助:\nhttps://bot.teahou.se/wiki/')])
|
||||
else:
|
||||
legacy_help = True
|
||||
else:
|
||||
legacy_help = True
|
||||
if legacy_help:
|
||||
help_msg = ['基础命令:']
|
||||
essential = []
|
||||
for x in module_list:
|
||||
if isinstance(module_list[x], Command) and module_list[x].base:
|
||||
essential.append(module_list[x].bind_prefix)
|
||||
help_msg.append(' | '.join(essential))
|
||||
help_msg.append('模块扩展命令:')
|
||||
module_ = []
|
||||
for x in module_list:
|
||||
if x in target_enabled_list:
|
||||
module_.append(x)
|
||||
help_msg.append(' | '.join(module_))
|
||||
print(help_msg)
|
||||
help_msg.append(
|
||||
'使用~help <对应模块名>查看详细信息。\n使用~modules查看所有的可用模块。\n你也可以通过查阅文档获取帮助:\nhttps://bot.teahou.se/wiki/')
|
||||
help_msg.append('[本消息将在一分钟后撤回]')
|
||||
send = await msg.sendMessage('\n'.join(help_msg))
|
||||
await msg.sleep(60)
|
||||
await send.delete()
|
||||
|
||||
|
||||
modules = on_command('modules',
|
||||
|
@ -184,22 +241,77 @@ modules = on_command('modules',
|
|||
@modules.handle()
|
||||
async def modules_help(msg: MessageSession):
|
||||
module_list = ModulesManager.return_modules_list_as_dict()
|
||||
help_msg = ['当前可用的模块有:']
|
||||
module_ = []
|
||||
for x in module_list:
|
||||
if x[0] == '_':
|
||||
continue
|
||||
if isinstance(module_list[x], Command) and module_list[x].base and module_list[x]\
|
||||
.required_superuser:
|
||||
continue
|
||||
module_.append(module_list[x].bind_prefix)
|
||||
help_msg.append(' | '.join(module_))
|
||||
help_msg.append(
|
||||
'使用~help <模块名>查看详细信息。\n你也可以通过查阅文档获取帮助:\nhttps://bot.teahou.se/wiki/')
|
||||
help_msg.append('[本消息将在一分钟后撤回]')
|
||||
send = await msg.sendMessage('\n'.join(help_msg))
|
||||
await msg.sleep(60)
|
||||
await send.delete()
|
||||
target_enabled_list = BotDBUtil.Module(msg).check_target_enabled_module_list()
|
||||
developers = ModulesManager.return_modules_developers_map()
|
||||
legacy_help = False
|
||||
if web_render and msg.Feature.image:
|
||||
tables = []
|
||||
m = []
|
||||
for x in module_list:
|
||||
module_ = module_list[x]
|
||||
if x[0] == '_':
|
||||
continue
|
||||
if isinstance(module_, Command) and module_.base and module_ \
|
||||
.required_superuser:
|
||||
continue
|
||||
appends = [module_.bind_prefix]
|
||||
help_ = CommandParser(module_)
|
||||
doc_ = []
|
||||
if module_.desc is not None:
|
||||
doc_.append(module_.desc)
|
||||
if help_.args is not None:
|
||||
doc_.append(help_.return_formatted_help_doc())
|
||||
doc = '\n'.join(doc_)
|
||||
appends.append(doc)
|
||||
module_alias = ModulesManager.return_module_alias(module_.bind_prefix)
|
||||
malias = []
|
||||
for a in module_alias:
|
||||
for b in module_alias[a]:
|
||||
malias.append(f'{b} -> {a}')
|
||||
if malias:
|
||||
appends.append('\n'.join(malias))
|
||||
else:
|
||||
appends.append('')
|
||||
if x in developers:
|
||||
dev_list = developers[x]
|
||||
if isinstance(dev_list, (list, tuple)):
|
||||
devs = '、'.join(developers[x]) if developers[x] is not None else ''
|
||||
elif isinstance(dev_list, str):
|
||||
devs = dev_list
|
||||
else:
|
||||
devs = '<数据类型错误,请联系开发者解决>'
|
||||
else:
|
||||
devs = ''
|
||||
appends.append(devs)
|
||||
if x in target_enabled_list:
|
||||
m.append(appends)
|
||||
if m:
|
||||
tables.append(ImageTable(m, ['扩展模块列表', '帮助信息', '命令别名', '作者']))
|
||||
if tables:
|
||||
render = await image_table_render(tables)
|
||||
if render:
|
||||
await msg.sendMessage([Image(render)])
|
||||
else:
|
||||
legacy_help = True
|
||||
else:
|
||||
legacy_help = True
|
||||
if legacy_help:
|
||||
help_msg = ['当前可用的模块有:']
|
||||
module_ = []
|
||||
for x in module_list:
|
||||
if x[0] == '_':
|
||||
continue
|
||||
if isinstance(module_list[x], Command) and module_list[x].base and module_list[x] \
|
||||
.required_superuser:
|
||||
continue
|
||||
module_.append(module_list[x].bind_prefix)
|
||||
help_msg.append(' | '.join(module_))
|
||||
help_msg.append(
|
||||
'使用~help <模块名>查看详细信息。\n你也可以通过查阅文档获取帮助:\nhttps://bot.teahou.se/wiki/')
|
||||
help_msg.append('[本消息将在一分钟后撤回]')
|
||||
send = await msg.sendMessage('\n'.join(help_msg))
|
||||
await msg.sleep(60)
|
||||
await send.delete()
|
||||
|
||||
|
||||
version = on_command('version',
|
||||
|
|
|
@ -30,7 +30,7 @@ def inner_level_q(ds1, ds2=None):
|
|||
return result_set
|
||||
|
||||
|
||||
innlevel = on_command('maimai_inner_level', alias=['定数查歌'])
|
||||
innlevel = on_command('maimai_inner_level', alias=['定数查歌'], developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@innlevel.handle(['~maimai_inner_level <定数>',
|
||||
|
@ -49,7 +49,7 @@ async def _(msg: MessageSession):
|
|||
|
||||
|
||||
mrgex1 = on_regex('maimai_random_music_regex1',
|
||||
desc='随个[dx/标准][绿黄红紫白]<难度> 随机一首指定条件的乐曲')
|
||||
desc='随个[dx/标准][绿黄红紫白]<难度> 随机一首指定条件的乐曲', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@mrgex1.handle(r"随个((?:dx|sd|标准))?([绿黄红紫白]?)([0-9]+\+?)")
|
||||
|
@ -78,7 +78,7 @@ async def _(msg: MessageSession):
|
|||
await msg.sendMessage("随机命令错误,请检查语法")
|
||||
|
||||
|
||||
mrgex2 = on_regex('maimai_random_music_regex2', desc='XXXmaimaiXXX什么 随机一首歌')
|
||||
mrgex2 = on_regex('maimai_random_music_regex2', desc='XXXmaimaiXXX什么 随机一首歌', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@mrgex2.handle(r".*maimai.*什么", )
|
||||
|
@ -86,7 +86,7 @@ async def _(msg: MessageSession):
|
|||
await msg.sendMessage(song_txt(total_list.random()))
|
||||
|
||||
|
||||
msrgex = on_regex('maimai_search_music_regex', desc='查歌<乐曲标题的一部分> 查询符合条件的乐曲')
|
||||
msrgex = on_regex('maimai_search_music_regex', desc='查歌<乐曲标题的一部分> 查询符合条件的乐曲', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@msrgex.handle(r"查歌(.+)")
|
||||
|
@ -107,7 +107,7 @@ async def _(msg: MessageSession):
|
|||
|
||||
|
||||
mqrgex = on_regex('maimai_query_chart_regex',
|
||||
desc='[绿黄红紫白]id<歌曲编号> 查询乐曲信息或谱面信息')
|
||||
desc='[绿黄红紫白]id<歌曲编号> 查询乐曲信息或谱面信息', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@msrgex.handle(r"([绿黄红紫白]?)id([0-9]+)")
|
||||
|
@ -160,7 +160,7 @@ BREAK: {chart['notes'][4]}
|
|||
|
||||
wm_list = ['拼机', '推分', '越级', '下埋', '夜勤', '练底力', '练手法', '打旧框', '干饭', '抓绝赞', '收歌']
|
||||
|
||||
today = on_command('maimai_today', alias=['今日舞萌', '今日mai'], desc='查看今天的舞萌运势')
|
||||
today = on_command('maimai_today', alias=['今日舞萌', '今日mai'], desc='查看今天的舞萌运势', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@today.handle()
|
||||
|
@ -193,7 +193,7 @@ for t in tmp:
|
|||
if arr[i] != "":
|
||||
music_aliases[arr[i].lower()].append(arr[0])
|
||||
|
||||
mfsrgx = on_regex('maimai_find_song_regex', desc='<歌曲别名>是什么歌 查询乐曲别名对应的乐曲')
|
||||
mfsrgx = on_regex('maimai_find_song_regex', desc='<歌曲别名>是什么歌 查询乐曲别名对应的乐曲', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@mfsrgx.handle(r"(.+)是什么歌")
|
||||
|
@ -211,7 +211,7 @@ async def _(msg: MessageSession):
|
|||
await msg.sendMessage(f"您要找的可能是以下歌曲中的其中一首:\n{s}")
|
||||
|
||||
|
||||
sline = on_command('maimai_scoreline', alias='分数线')
|
||||
sline = on_command('maimai_scoreline', alias='分数线', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@sline.handle(['<难度+歌曲id> <分数线>', '帮助'])
|
||||
|
@ -261,7 +261,7 @@ BREAK 50落(一共{brk}个)等价于 {(break_50_reduce / 100):.3f} 个 TAP GREAT
|
|||
await msg.sendMessage("格式错误,输入“分数线 帮助”以查看帮助信息")
|
||||
|
||||
|
||||
b40 = on_command('maimai_b40')
|
||||
b40 = on_command('maimai_b40', developers=['mai-bot', 'OasisAkari'])
|
||||
|
||||
|
||||
@b40.handle('<username>')
|
||||
|
|
|
@ -29,7 +29,7 @@ async def start_check_news(bot: FetchTarget):
|
|||
file_ = os.path.abspath(f'{PrivateAssets.path}/mcnews.txt')
|
||||
baseurl = 'https://www.minecraft.net'
|
||||
url = quote('https://www.minecraft.net/content/minecraft-net/_jcr_content.articles.grid?tileselection=auto&tagsPath=minecraft:article/news,minecraft:article/insider,minecraft:article/culture,minecraft:article/merch,minecraft:stockholm/news,minecraft:stockholm/guides,minecraft:stockholm/deep-dives,minecraft:stockholm/merch,minecraft:stockholm/events,minecraft:stockholm/minecraft-builds,minecraft:stockholm/marketplace&offset=0&pageSize=10')
|
||||
webrender = Config('infobox_render')
|
||||
webrender = Config('web_render')
|
||||
get = webrender + 'source?url=' + url
|
||||
if not webrender:
|
||||
return
|
||||
|
|
|
@ -10,13 +10,13 @@ import ujson as json
|
|||
from core.elements import MessageSession, Plain, Image, Voice
|
||||
from core.component import on_command, on_regex, on_option
|
||||
from core.utils import download_to_cache
|
||||
from core.utils.image_table import image_table_render, ImageTable
|
||||
from core.exceptions import AbuseWarning
|
||||
from database import BotDBUtil
|
||||
from .dbutils import WikiTargetInfo
|
||||
from .wikilib_v2 import WikiLib, WhatAreUDoingError, PageInfo
|
||||
from .getinfobox import get_infobox_pic
|
||||
from .audit import WikiWhitelistError, audit_allow, audit_remove, audit_list, audit_query
|
||||
from .htmltable import image_table_render
|
||||
|
||||
wiki = on_command('wiki',
|
||||
alias={'wiki_start_site': 'wiki set', 'interwiki': 'wiki iw'},
|
||||
|
@ -67,13 +67,17 @@ async def _(msg: MessageSession):
|
|||
await msg.sendMessage(f'成功:删除自定义Interwiki“{msg.parsed_msg["<Interwiki>"]}”')
|
||||
|
||||
|
||||
@wiki.handle(['iw list {展示当前设置的Interwiki}', 'iw show {iw list的别名}'])
|
||||
@wiki.handle(['iw list {展示当前设置的Interwiki}', 'iw show {iw list的别名}',
|
||||
'iw (list|show) legacy {展示当前设置的Interwiki(旧版)}'])
|
||||
async def _(msg: MessageSession):
|
||||
target = WikiTargetInfo(msg)
|
||||
query = target.get_interwikis()
|
||||
if query != {}:
|
||||
columns = [[x, query[x]] for x in query]
|
||||
img = await image_table_render(columns, headers=['Interwiki', 'Url'])
|
||||
if not msg.parsed_msg['legacy'] and msg.Feature.image:
|
||||
columns = [[x, query[x]] for x in query]
|
||||
img = await image_table_render(ImageTable(columns, ['Interwiki', 'Url']))
|
||||
else:
|
||||
img = False
|
||||
if img:
|
||||
await msg.sendMessage([Image(img), Plain(f'使用~wiki iw get <Interwiki> 可以获取interwiki对应的链接。')])
|
||||
else:
|
||||
|
@ -278,7 +282,7 @@ async def query_pages(msg: MessageSession, title: Union[str, list, tuple],
|
|||
msg_list = []
|
||||
wait_msg_list = []
|
||||
wait_list = []
|
||||
infobox_render_list = []
|
||||
web_render_list = []
|
||||
for q in query_task:
|
||||
current_task = query_task[q]
|
||||
ready_for_query_pages = current_task['query']
|
||||
|
@ -327,7 +331,7 @@ async def query_pages(msg: MessageSession, title: Union[str, list, tuple],
|
|||
msg_list.append(Voice(dl))
|
||||
else:
|
||||
if msg.Feature.image and r.link is not None:
|
||||
infobox_render_list.append({r.link: r.info.realurl})
|
||||
web_render_list.append({r.link: r.info.realurl})
|
||||
else:
|
||||
plain_slice = []
|
||||
wait_plain_slice = []
|
||||
|
@ -350,9 +354,9 @@ async def query_pages(msg: MessageSession, title: Union[str, list, tuple],
|
|||
traceback.print_exc()
|
||||
if msg_list:
|
||||
await msg.sendMessage(msg_list)
|
||||
if infobox_render_list:
|
||||
if web_render_list and msg.Feature.image:
|
||||
infobox_msg_list = []
|
||||
for i in infobox_render_list:
|
||||
for i in web_render_list:
|
||||
for ii in i:
|
||||
get_infobox = await get_infobox_pic(i[ii], ii, headers)
|
||||
if get_infobox:
|
||||
|
|
|
@ -12,11 +12,11 @@ from bs4 import BeautifulSoup
|
|||
from config import Config
|
||||
from core.logger import Logger
|
||||
|
||||
infobox_render = Config('infobox_render')
|
||||
web_render = Config('web_render')
|
||||
|
||||
|
||||
async def get_infobox_pic(link, page_link, headers) -> Union[str, bool]:
|
||||
if not infobox_render or page_link == 'https://wdf.ink/6OUp':
|
||||
if not web_render or page_link == 'https://wdf.ink/6OUp':
|
||||
return False
|
||||
try:
|
||||
Logger.info('Starting find infobox..')
|
||||
|
@ -126,7 +126,7 @@ a .heimu,\
|
|||
if os.path.exists(picname):
|
||||
os.remove(picname)
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(infobox_render, headers={
|
||||
async with session.post(web_render, headers={
|
||||
'Content-Type': 'application/json',
|
||||
}, data=json.dumps(html)) as resp:
|
||||
with open(picname, 'wb+') as jpg:
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
import os
|
||||
import traceback
|
||||
import uuid
|
||||
|
||||
import ujson as json
|
||||
|
||||
import aiohttp
|
||||
from tabulate import tabulate
|
||||
|
||||
from config import Config
|
||||
|
||||
infobox_render = Config('infobox_render')
|
||||
|
||||
|
||||
async def image_table_render(table, headers=None):
|
||||
if not infobox_render:
|
||||
return False
|
||||
try:
|
||||
convert_to_html = tabulate(table, headers, tablefmt="html")
|
||||
css = """
|
||||
<style>table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table, th, td {
|
||||
border: 1px solid black;
|
||||
}
|
||||
th, td {
|
||||
padding: 15px;
|
||||
text-align: left;
|
||||
}
|
||||
tr:nth-child(even) {background-color: #f2f2f2;}</style>"""
|
||||
html = {'content': convert_to_html + css}
|
||||
picname = os.path.abspath(f'./cache/{str(uuid.uuid4())}.jpg')
|
||||
if os.path.exists(picname):
|
||||
os.remove(picname)
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(infobox_render, headers={
|
||||
'Content-Type': 'application/json',
|
||||
}, data=json.dumps(html)) as resp:
|
||||
with open(picname, 'wb+') as jpg:
|
||||
jpg.write(await resp.read())
|
||||
return picname
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return False
|
Reference in a new issue