Skip to content

技术细节文档

gfhdhytghd edited this page Sep 24, 2024 · 8 revisions

简介

本文档会简单介绍系统架构和各功能实现方式

文件夹结构

cache:消息记录及稿件缓存 getmsgserv:与消息处理有关的所有文件(从原始消息json到jpg)

  • LMwork:对原始消息进行简化,然后发给LM进行分段,判断要不要匿名,能不能过审核
    • face:qq表情文件夹
    • progress-lite-json.sh:精简原始消息记录,删除非必要信息与不支持的信息,下载所有图片并把原url替换成file://,合并message,将cq face转为文本混排图片。
    • sendtoLM.py大模型处理脚本
  • HTMLwork:把LM输出的json转成HTML再打印成PDF,再渲染成jpg
    • gotohtml.py 把LM输出的json转成html
  • all:全部消息记录
  • serv.py:消息接受服务器
  • preprocess.sh:集成处理 消息记录->图片
  • command.sh:全局指令执行器
  • processsend.sh:审核指令执行器和稿件发送控制 qqBot:qq机器人功能
  • QChatGPT :QChatGPT子项目文件夹
  • likeveryday.py: 从好友列表挑500个人,每人发送20个好友赞

SendQzone: QQ空间工具包

  • chromed.py:selenium的守护程序
  • qzone-serv-test.py:qzone提供API的qzone发送服务(暂时没有使用)
  • send.py:一次性执行的qzone发送脚本
  • qzonerenewcookies.py:通过qq快捷登陆来获取qzone的cookies
  • qzonrenewcookies-selenium.py:通过sleenium利用qq快捷登陆来获取qzone的cookies
  • qzonegettag-headless.py:通过selenium登陆qq空间,获取上一条发出去的说说的外部编号和cookies

venv:python虚拟环境 .gitxxx git相关文件
AcountGroupcfg.json:账户组配置文件
oqqwall.config:系统配置文件
cookies-xxxx.json:账号的qzone cookies
xxx_numfinal.txt:账户组的外部编号
numb.txt:内部编号
main.sh:投稿处理主进程

投稿处理流程

Onebot-http-post->serv.py-rawpost文件夹->main.sh-->processsend-post-stepx->send.py $$ \text{main.sh工作流:} \begin{cases} \text{检查配置文件是否正确配置}\ \text{初始化目录和文件}\ \text{启动serv.py和qq}\ \end{cases} $$

$$ \text{serv.py工作流} \begin{cases} \text{接收onebot的httppost}\\ \text{存入OQQWall.db}\\ \text{分类,是私信还是群消息,或者是notice}\\ \text{私信-->存入OQQWall.db}\\ \text{如果db中无此人消息记录-->调起preprocess.sh}\\ \text{群消息-->如果是管理群-->如果是管理员发的-->调起command.sh}\\ \text{notoce-->如果是消息撤回-->查询消息id,从OQQWall.db中删掉这条消息} \end{cases} $$

$$ \text{prepross工作流} \begin{cases} \text{progress-lite-json.sh-->sendtoLM-->存入OQQWall.db}\\ \text{gotohtml.sh-->chrome --print-to-pdf-->Magick convert-->jpg}\\ \text{发送渲染好的图片到审核群中} \end{cases} $$

$$ \text{command.sh工作流} \begin{cases} \text{判断全局指令还是审核指令}\\ \text{全局指令-->执行} \text{审核指令-->鉴权-->调起processsend.sh} \end{cases} $$

$$ \text{processsend.sh指令工作流} \begin{cases} \text{case审核指令}\\ \text{执行}\\ \end{cases} $$

$$ \text{processsend.sh发送工作流} \begin{cases} \text{读取图片}\\ \text{获取匿名信息和"评论"信息,构建说说文本}\\ \text{通过管道调用qzone-serv-pipe发送}\\ \text{发送成功,删除/cache/prepost下的图片文件夹} \text{发送失败,如果是cookies问题,更新cookies,否则往群里发出宝座信息,cookies更新超过max_attemp也往群中发出报错信息}\\ \text{检查新信息是否有更新,有则执行preprocess,没有则删除OQQWall.db中此人的消息记录}\\ \end{cases} $$

更多内容请直接查看代码