diff --git a/.gitignore b/.gitignore index 0a04256..496cf17 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ chat_bot.db-wal chat_bot.db-shm cloud_music_cookies.cookie chat_history.json -/src/music/qrcode.png +/src/clover_music/qrcode.png /chat.db /chat_bot.db-wal /chat_bot.db-shm diff --git a/README.md b/README.md index b8bdce2..437b238 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ python bot.by #### 📲所有指令 -机器人的指令列表在[src/qq_plugins/check.py](src/qq_plugins/check.py)中,有如下指令: +机器人的指令列表在[src/qq_plugins/check.py](src/plugins/check.py)中,有如下指令: ```python menu = ['/今日运势','/天气','/图','/点歌','/摸摸头','/群老婆','/今日老婆', '/待办', '/test', '我喜欢你', "❤", "/待办查询", "/新建待办", "/删除待办", "/开启ai", "/关闭ai", "/cf", "/管理员确认"] @@ -207,7 +207,7 @@ admin_list group_list ``` -初始化相关脚本存放在 [src/my_sqlite/data_init](src/my_sqlite/data_init) 目录下。 +初始化相关脚本存放在 [src/my_sqlite/data_init](src/clover_sqlite/data_init) 目录下。 每次启动机器人,程序会自动检查上述8张表是否存在,有表缺失则会在数据库中自动创建对应的表。 @@ -221,17 +221,17 @@ group_list 机器人支持[SMMS图床](https://sm.ms/)、[聚合图床](https://www.superbed.cn/)、从**本地**发送图片。 -获取图片的方法统一编写在[src/image/get_image.py](src/image/get_image.py)下。 +获取图片的方法统一编写在[src/image/get_image.py](src/clover_image/get_image.py)下。 ##### 使用: -首先找到[src/image/config/image.yaml](src/image/config/image.yaml) +首先找到[src/image/config/image.yaml](src/clover_image/config/image.yaml) ```yaml image: app_id: "" - image_local_qq_image_path: "src/image/qq_image" - image_local_path: "src/image/MaoYuNa" + image_local_qq_image_path: "src/clover_image/qq_image" + image_local_path: "src/clover_image/MaoYuNa" #SMMS图床相关配置 smms_token: "" # sm.ms图床的token smms_image_upload_history: "https://sm.ms/api/v2/upload_history" # sm.ms图床获取上传图片历史API地址 @@ -242,7 +242,7 @@ image: 将你的机器人app_id,smms图床Token和聚合图床Token替换上述\(可以根据自身需求选填) -之后在[get_image.py](src/image/get_image.py)中找到对应的方法,根据自身需求调用。 +之后在[get_image.py](src/clover_image/get_image.py)中找到对应的方法,根据自身需求调用。
@@ -266,7 +266,7 @@ image: 登录失效,请联系管理员进行登录 ``` -此时会在[src/music](src/music)目录下生成一张qrcode.png,您需要使用手机端网易云音乐**扫码**该二维码,登录您的网易云账号。 +此时会在[src/music](src/clover_music)目录下生成一张qrcode.png,您需要使用手机端网易云音乐**扫码**该二维码,登录您的网易云账号。
@@ -276,7 +276,7 @@ image: #### 💡使用第三方语言模型 -打开[src/ai_chat/config/example.chat_ai.yaml](src/ai_chat/config/chat_ai.yaml) +打开[src/ai_chat/config/example.chat_ai.yaml](src/clover_openai/config/chat_ai.yaml) ```yaml chat_ai: @@ -305,7 +305,7 @@ chat_ai: ###### 1.注册为管理员 -在[src/ai_chat/config/example.chat_ai.yaml](src/ai_chat/config/chat_ai.yaml)内,找到 +在[src/ai_chat/config/example.chat_ai.yaml](src/clover_openai/config/chat_ai.yaml)内,找到 ```yaml admin_password: "" # 设置管理员认证密码 diff --git a/bot.py b/bot.py index c55311b..bdfd08f 100644 --- a/bot.py +++ b/bot.py @@ -9,7 +9,7 @@ driver.register_adapter(QQAdapter) # 注册QQ适配器 nonebot.load_from_toml("pyproject.toml") logger.add("src/resources/log/error.log", level="ERROR", format=default_format, rotation="1 week") -from src.my_sqlite.data_init.db_connect import disconnect, init +from src.clover_sqlite.data_init.db_connect import disconnect, init driver.on_startup(init) driver.on_shutdown(disconnect) diff --git a/pyproject.toml b/pyproject.toml index 0f03a06..982f3e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,5 +10,5 @@ adapters = [ { name = "QQ", module_name = "nonebot.adapters.qq" } ] plugins = [] -plugin_dirs = ["src/qq_plugins"] +plugin_dirs = ["src/plugins"] builtin_plugins = ["echo"] diff --git a/src/image/get_image.py b/src/clover_image/get_image.py similarity index 100% rename from src/image/get_image.py rename to src/clover_image/get_image.py diff --git a/src/music/cloud_music/agent.py b/src/clover_music/cloud_music/agent.py similarity index 93% rename from src/music/cloud_music/agent.py rename to src/clover_music/cloud_music/agent.py index 01d9e6c..28a62b2 100644 --- a/src/music/cloud_music/agent.py +++ b/src/clover_music/cloud_music/agent.py @@ -25,10 +25,10 @@ def djs(js): break return jst def get_login_js(): - return djs('src/music/cloud_music/jsdm.js') + return djs('src/clover_music/cloud_music/jsdm.js') def get_param_js(): - return djs('src/music/cloud_music/param.js') + return djs('src/clover_music/cloud_music/param.js') # 获取ptqrtoken def ptqrtoken(qrsign): diff --git a/src/music/cloud_music/cloud_music.py b/src/clover_music/cloud_music/cloud_music.py similarity index 97% rename from src/music/cloud_music/cloud_music.py rename to src/clover_music/cloud_music/cloud_music.py index 654b875..a9330cb 100644 --- a/src/music/cloud_music/cloud_music.py +++ b/src/clover_music/cloud_music/cloud_music.py @@ -9,7 +9,7 @@ from io import BytesIO from random import Random from Crypto.Cipher import AES from graiax import silkcoder -import src.music.cloud_music.agent as agent +import src.clover_music.cloud_music.agent as agent requests.packages.urllib3.disable_warnings() @@ -60,8 +60,8 @@ def get_music(id): """ 使用二维码登录网易云音乐,需要先获取二维码的key,然后使用该key生成二维码,扫描二维码登录,最后通过登录接口 返回cookie 保存起来 """ -save_path = os.getcwd()+'/src/music/netease_music' -qrcode_path = os.getcwd()+'/src/music' +save_path = os.getcwd()+'/src/clover_music/netease_music' +qrcode_path = os.getcwd()+'/src/clover_music' # 判断cookie是否有效 diff --git a/src/music/cloud_music/jsdm.js b/src/clover_music/cloud_music/jsdm.js similarity index 100% rename from src/music/cloud_music/jsdm.js rename to src/clover_music/cloud_music/jsdm.js diff --git a/src/music/cloud_music/param.js b/src/clover_music/cloud_music/param.js similarity index 100% rename from src/music/cloud_music/param.js rename to src/clover_music/cloud_music/param.js diff --git a/src/ai_chat/ai_chat.py b/src/clover_openai/ai_chat.py similarity index 96% rename from src/ai_chat/ai_chat.py rename to src/clover_openai/ai_chat.py index 9561bbe..9ba43ee 100644 --- a/src/ai_chat/ai_chat.py +++ b/src/clover_openai/ai_chat.py @@ -1,6 +1,6 @@ import openai import requests -from src.my_sqlite.models.chat import GroupChatRole +from src.clover_sqlite.models.chat import GroupChatRole from src.configs.api_config import v3url, v3key, deepseek_url, deepseek_key openai.api_key = deepseek_key diff --git a/src/my_sqlite/data_init/data_init.py b/src/clover_sqlite/data_init/data_init.py similarity index 95% rename from src/my_sqlite/data_init/data_init.py rename to src/clover_sqlite/data_init/data_init.py index bcaae6a..e9f65ae 100644 --- a/src/my_sqlite/data_init/data_init.py +++ b/src/clover_sqlite/data_init/data_init.py @@ -31,7 +31,7 @@ def todo_init(): """ def execute_init_file3(): # 拼接文件的完整路径 - file_path = os.getcwd() + "/src/my_sqlite/data_init/todo_init.py" + file_path = os.getcwd() + "/src/clover_sqlite/data_init/todo_init.py" init_file_path = os.path.join(os.path.dirname(__file__), file_path) try: # 执行初始化文件 diff --git a/src/my_sqlite/data_init/db_connect.py b/src/clover_sqlite/data_init/db_connect.py similarity index 100% rename from src/my_sqlite/data_init/db_connect.py rename to src/clover_sqlite/data_init/db_connect.py diff --git a/src/my_sqlite/models/ban.py b/src/clover_sqlite/models/ban.py similarity index 98% rename from src/my_sqlite/models/ban.py rename to src/clover_sqlite/models/ban.py index 95696a9..1744fa5 100644 --- a/src/my_sqlite/models/ban.py +++ b/src/clover_sqlite/models/ban.py @@ -1,7 +1,7 @@ import time from tortoise import fields from typing_extensions import Self -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class BanConsole(Model): id = fields.IntField(primary_key=True, generated=True, auto_increment=True) diff --git a/src/my_sqlite/models/chat.py b/src/clover_sqlite/models/chat.py similarity index 99% rename from src/my_sqlite/models/chat.py rename to src/clover_sqlite/models/chat.py index f98327c..28e3456 100644 --- a/src/my_sqlite/models/chat.py +++ b/src/clover_sqlite/models/chat.py @@ -2,7 +2,7 @@ from typing import Any from tortoise import fields from typing_extensions import Self from tortoise.fields import JSONField -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class ChatRole(Model): diff --git a/src/my_sqlite/models/fortune.py b/src/clover_sqlite/models/fortune.py similarity index 99% rename from src/my_sqlite/models/fortune.py rename to src/clover_sqlite/models/fortune.py index ff3f164..d647856 100644 --- a/src/my_sqlite/models/fortune.py +++ b/src/clover_sqlite/models/fortune.py @@ -2,7 +2,7 @@ import random from datetime import datetime from tortoise import fields from typing_extensions import Self -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class QrFortune(Model): """ diff --git a/src/my_sqlite/models/tarot.py b/src/clover_sqlite/models/tarot.py similarity index 99% rename from src/my_sqlite/models/tarot.py rename to src/clover_sqlite/models/tarot.py index aacccc6..bff75ee 100644 --- a/src/my_sqlite/models/tarot.py +++ b/src/clover_sqlite/models/tarot.py @@ -3,7 +3,7 @@ import random from datetime import datetime from tortoise import fields from typing_extensions import Self -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model from src.configs.path_config import tarots_img_path @@ -88,7 +88,7 @@ class MajorArcanaLog(Model): 'ints': ints, 'name': model.name, 'meaning': meaning, - 'image': image, + 'clover_image': image, 'create_time':datetime.now().date() } diff --git a/src/my_sqlite/models/to_do.py b/src/clover_sqlite/models/to_do.py similarity index 96% rename from src/my_sqlite/models/to_do.py rename to src/clover_sqlite/models/to_do.py index 58c7cae..76094dc 100644 --- a/src/my_sqlite/models/to_do.py +++ b/src/clover_sqlite/models/to_do.py @@ -1,6 +1,6 @@ from tortoise import fields from typing_extensions import Self -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class ToDoList(Model): diff --git a/src/my_sqlite/models/touch.py b/src/clover_sqlite/models/touch.py similarity index 99% rename from src/my_sqlite/models/touch.py rename to src/clover_sqlite/models/touch.py index edd2cac..0536956 100644 --- a/src/my_sqlite/models/touch.py +++ b/src/clover_sqlite/models/touch.py @@ -2,7 +2,7 @@ from datetime import datetime import random from tortoise import fields from typing_extensions import Self -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class QrTouch(Model): diff --git a/src/my_sqlite/models/user.py b/src/clover_sqlite/models/user.py similarity index 98% rename from src/my_sqlite/models/user.py rename to src/clover_sqlite/models/user.py index eb3e831..e9fa579 100644 --- a/src/my_sqlite/models/user.py +++ b/src/clover_sqlite/models/user.py @@ -1,7 +1,7 @@ from datetime import datetime, timedelta import random from tortoise import fields -from src.my_sqlite.data_init.db_connect import Model +from src.clover_sqlite.data_init.db_connect import Model class UserList(Model): user_id = fields.CharField(max_length=64, description="用户member_openid") diff --git a/src/videos/billibili/biliVideos.py b/src/clover_videos/billibili/biliVideos.py similarity index 100% rename from src/videos/billibili/biliVideos.py rename to src/clover_videos/billibili/biliVideos.py diff --git a/src/configs/api_config_example.py b/src/configs/api_config_example.py index 51420f0..2be9b39 100644 --- a/src/configs/api_config_example.py +++ b/src/configs/api_config_example.py @@ -8,18 +8,18 @@ bot_account= "" # SMMS图床相关配置 smms_token= "" # sm.ms图床的token -smms_image_upload_history= "https=//sm.ms/api/v2/upload_history" # sm.ms图床获取上传图片历史API地址 +smms_image_upload_history= "https://sm.ms/api/v2/upload_history" # sm.ms图床获取上传图片历史API地址 # 聚合图床相关配置 ju_he_token= "" # 聚合图床的token -ju_he_image_list= "https=//api.superbed.cn/timeline" # 聚合图床获取上传图片历史API地址 +ju_he_image_list= "https://api.superbed.cn/timeline" # 聚合图床获取上传图片历史API地址 """ AI """ admin_password= "123456"#默认注册管理员密码 # 图灵机器人相关配置 -v3url= "https=//api.vveai.com/v1/chat/completions" +v3url= "https://api.vveai.com/v1/chat/completions" v3key= "" # DeepSeek相关配置 deepseek_url= "https://api.deepseek.com" diff --git a/src/configs/path_config.py b/src/configs/path_config.py index 7d09456..c173aec 100644 --- a/src/configs/path_config.py +++ b/src/configs/path_config.py @@ -1,7 +1,7 @@ import os from pathlib import Path -path = os.getcwd()+'/src/resources/image' +path = os.getcwd()+'/src/resources/clover_image' #塔罗牌图片路径 @@ -16,7 +16,7 @@ rua_png = path+'/rua/' # 图片路径 -IMAGE_PATH = Path() / "resources" / "image" +IMAGE_PATH = Path() / "resources" / "clover_image" # 语音路径 RECORD_PATH = Path() / "resources" / "record" # 文本路径 diff --git a/src/qq_plugins/bili_vid_search.py b/src/plugins/bili_vid_search.py similarity index 96% rename from src/qq_plugins/bili_vid_search.py rename to src/plugins/bili_vid_search.py index 8e4c413..de345ee 100644 --- a/src/qq_plugins/bili_vid_search.py +++ b/src/plugins/bili_vid_search.py @@ -5,7 +5,7 @@ import nonebot.adapters.qq.exception from nonebot import on_command from nonebot.rule import to_me from nonebot.adapters.qq import MessageSegment,MessageEvent, Message -import src.videos.billibili.biliVideos as biliVideos +import src.clover_videos.billibili.biliVideos as biliVideos bili_vid = on_command("B站搜索",rule=to_me(), priority=10, block=True) @bili_vid.handle() @@ -70,7 +70,7 @@ async def get_video_file(message: MessageEvent): # biliVideos.transcode_video(f"{cid}.mp4",f"{cid}-o.mp4") try: - # await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/videos/file/{cid}.mp4")))) + # await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/clover_videos/file/{cid}.mp4")))) await bili_bv_search.send(MessageSegment.video(video_url)) except nonebot.adapters.qq.exception.ActionFailed as e: print("\033[32m" + str(time.strftime("%m-%d %H:%M:%S")) +"\033[0m [" + "\033[31;1mFAILED\033[0m" + "]" + "\033[31;1m nonebot.adapters.qq.exception.ActionFailed \033[0m" + str(e)) @@ -102,7 +102,7 @@ async def get_video_file(message: MessageEvent): # biliVideos.video_download(video_url, cid) try: - # await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/videos/file/{cid}.mp4")))) + # await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/clover_videos/file/{cid}.mp4")))) await bili_bv_search.send(MessageSegment.video(video_url)) except nonebot.adapters.qq.exception.ActionFailed as e: print("\033[32m" + str(time.strftime("%m-%d %H:%M:%S")) + diff --git a/src/qq_plugins/chat.py b/src/plugins/chat.py similarity index 98% rename from src/qq_plugins/chat.py rename to src/plugins/chat.py index 140a6b5..a4c5a96 100644 --- a/src/qq_plugins/chat.py +++ b/src/plugins/chat.py @@ -2,7 +2,7 @@ import re from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import MessageEvent -from src.my_sqlite.models.chat import ChatRole, GroupChatRole +from src.clover_sqlite.models.chat import ChatRole, GroupChatRole from src.configs.api_config import admin_password diff --git a/src/qq_plugins/check.py b/src/plugins/check.py similarity index 95% rename from src/qq_plugins/check.py rename to src/plugins/check.py index ffa611a..0fcbd2d 100644 --- a/src/qq_plugins/check.py +++ b/src/plugins/check.py @@ -7,9 +7,9 @@ from nonebot.rule import Rule, to_me from nonebot.plugin import on_command, on_keyword from nonebot.adapters.qq import Message, MessageEvent, MessageSegment -from src.ai_chat import ai_chat -from src.my_sqlite.models.chat import GroupChatRole -from src.my_sqlite.models.user import UserList +from src.clover_openai import ai_chat +from src.clover_sqlite.models.chat import GroupChatRole +from src.clover_sqlite.models.user import UserList import platform import psutil import time @@ -87,7 +87,7 @@ async def github_repo(): content = "三叶草bot仓库地址\n一起来搭个机器人吧😆" msg = Message([ - MessageSegment.file_image(Path("src/resources/image/github_repo/SanYeCao-Nonebot3.png")), + MessageSegment.file_image(Path("src/resources/clover_image/github_repo/SanYeCao-Nonebot3.png")), MessageSegment.text(content), ]) await repository.finish(msg) diff --git a/src/qq_plugins/cloudMusic.py b/src/plugins/cloudMusic.py similarity index 95% rename from src/qq_plugins/cloudMusic.py rename to src/plugins/cloudMusic.py index de8f0c4..2561691 100644 --- a/src/qq_plugins/cloudMusic.py +++ b/src/plugins/cloudMusic.py @@ -4,7 +4,7 @@ from pathlib import Path from nonebot import on_command from nonebot.rule import to_me from nonebot.adapters.qq import MessageSegment,MessageEvent -from src.music.cloud_music.cloud_music import * +from src.clover_music.cloud_music.cloud_music import * music = on_command("点歌", rule=to_me(), priority=10, block=True) @music.handle() @@ -28,7 +28,7 @@ async def handle_function(msg: MessageEvent): path = create_qr_code(unikey) """是否要发送到QQ上面登录 """ - # await music.send(MessageSegment.file_image(Path(path))) + # await clover_music.send(MessageSegment.file_image(Path(path))) """是否要发送到QQ上面登录 """ while True: diff --git a/src/qq_plugins/codeforces.py b/src/plugins/codeforces.py similarity index 96% rename from src/qq_plugins/codeforces.py rename to src/plugins/codeforces.py index e22de8d..364f069 100644 --- a/src/qq_plugins/codeforces.py +++ b/src/plugins/codeforces.py @@ -24,7 +24,7 @@ async def get_cf_rounds(): if matches["phase"] == "FINISHED": break - cf_image_path = './src/resources/image/codeforces/cfContestQR.png' + cf_image_path = './src/resources/clover_image/codeforces/cfContestQR.png' msg = Message([ MessageSegment.file_image(Path(cf_image_path)), MessageSegment.text(all_matches), diff --git a/src/qq_plugins/fortune.py b/src/plugins/fortune.py similarity index 92% rename from src/qq_plugins/fortune.py rename to src/plugins/fortune.py index 638bf19..d3685a9 100644 --- a/src/qq_plugins/fortune.py +++ b/src/plugins/fortune.py @@ -3,9 +3,9 @@ from pathlib import Path from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import Message, MessageEvent, MessageSegment,exception -from src.image.get_image import get_image_names -from src.my_sqlite.models.fortune import QrFortune,QrFortuneLog -from src.my_sqlite.models.tarot import MajorArcana +from src.clover_image.get_image import get_image_names +from src.clover_sqlite.models.fortune import QrFortune,QrFortuneLog +from src.clover_sqlite.models.tarot import MajorArcana import time fortune_by_sqlite = on_command("今日运势", rule=to_me(), priority=10, block=True) diff --git a/src/qq_plugins/good_bad_news.py b/src/plugins/good_bad_news.py similarity index 95% rename from src/qq_plugins/good_bad_news.py rename to src/plugins/good_bad_news.py index 0e9e5f1..3b2bf8f 100644 --- a/src/qq_plugins/good_bad_news.py +++ b/src/plugins/good_bad_news.py @@ -30,7 +30,7 @@ async def good_news_img(message: MessageEvent): img_url = response['url'] # try: - # await good_news.finish(MessageSegment.image(img_url)) + # await good_news.finish(MessageSegment.clover_image(img_url)) # except BaseException: # await good_news.finish("出错啦,请重试。") diff --git a/src/qq_plugins/image.py b/src/plugins/image.py similarity index 87% rename from src/qq_plugins/image.py rename to src/plugins/image.py index 9ca0ab8..d4fe6ea 100644 --- a/src/qq_plugins/image.py +++ b/src/plugins/image.py @@ -2,7 +2,7 @@ from pathlib import Path from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import MessageSegment -from src.image.get_image import get_image_names +from src.clover_image.get_image import get_image_names image = on_command("图", rule=to_me(), priority=10, block=True) diff --git a/src/plugins/test/test.py b/src/plugins/test/test.py new file mode 100644 index 0000000..e69de29 diff --git a/src/qq_plugins/to_do.py b/src/plugins/to_do.py similarity index 97% rename from src/qq_plugins/to_do.py rename to src/plugins/to_do.py index b125524..9787b4d 100644 --- a/src/qq_plugins/to_do.py +++ b/src/plugins/to_do.py @@ -1,7 +1,7 @@ from nonebot.adapters.qq import MessageEvent from nonebot.plugin import on_command from nonebot.rule import to_me -from src.my_sqlite.models.to_do import ToDoList +from src.clover_sqlite.models.to_do import ToDoList get_todo_list = on_command("待办查询", rule=to_me(), priority=10, block=True, aliases={"代办", "daiban"}) @get_todo_list.handle() diff --git a/src/qq_plugins/today_wife.py b/src/plugins/today_wife.py similarity index 91% rename from src/qq_plugins/today_wife.py rename to src/plugins/today_wife.py index d1b56c5..f2007ec 100644 --- a/src/qq_plugins/today_wife.py +++ b/src/plugins/today_wife.py @@ -3,8 +3,8 @@ from nonebot.adapters.qq import Message, MessageEvent from nonebot.adapters.qq import MessageSegment from nonebot.plugin import on_command from nonebot.rule import to_me -from src.image.get_image import download_qq_image,qq_image_delete -from src.my_sqlite.models.user import UserList +from src.clover_image.get_image import download_qq_image,qq_image_delete +from src.clover_sqlite.models.user import UserList today_group_wife = on_command("群老婆", rule=to_me(), priority=10, block=True) @today_group_wife.handle() diff --git a/src/qq_plugins/touch.py b/src/plugins/touch.py similarity index 86% rename from src/qq_plugins/touch.py rename to src/plugins/touch.py index 211943b..23ffebd 100644 --- a/src/qq_plugins/touch.py +++ b/src/plugins/touch.py @@ -2,8 +2,8 @@ from pathlib import Path from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import Message, MessageEvent, MessageSegment -from src.my_sqlite.models.touch import QrTouch, QrTouchLog -from src.image.get_image import download_qq_image_by_account, qq_image_delete, rua +from src.clover_sqlite.models.touch import QrTouch, QrTouchLog +from src.clover_image.get_image import download_qq_image_by_account, qq_image_delete, rua to = on_command("摸摸头", rule=to_me(), priority=10, block=True) diff --git a/src/qq_plugins/weather.py b/src/plugins/weather.py similarity index 100% rename from src/qq_plugins/weather.py rename to src/plugins/weather.py diff --git a/src/qq_plugins/test/test.py b/src/qq_plugins/test/test.py deleted file mode 100644 index 66ad4ce..0000000 --- a/src/qq_plugins/test/test.py +++ /dev/null @@ -1,160 +0,0 @@ -import execjs -import requests - - -cookies = { - 'NMTID': '00O8y8Jmz580oVUQEj2u8z-CtjK9TAAAAGT_JaiZQ', - '_ntes_nnid': '70ee9d950560215d692bbd3bac5f7ffd,1735109551078', - '_ntes_nuid': '70ee9d950560215d692bbd3bac5f7ffd', - 'WM_TID': 'xAl%2FSCq1ZGxFEFQBVUOTDr%2F0kj2cJ4CW', - 'WEVNSM': '1.0.0', - 'WNMCID': 'iljzuk.1735109552031.01.0', - 'ntes_utid': 'tid._.MOPuPUX%252FlRRFVlVFAUbTH7v0liiZp44J._.0', - 'sDeviceId': 'YD-FPy2uqtGAzpEVwAFRBeVx3xH8QxWMOBV', - '__snaker__id': 'z682UZpwWWtLZGly', - 'ntes_kaola_ad': '1', - '_iuqxldmzr_': '32', - 'P_INFO': '15902053421|1735930696|1|music|00&99|null&null&null#gud&442000#10#0|&0|null|15902053421', - '__csrf': 'c9c07b72fc20b640171041342a760e81', - 'MUSIC_U': '00B2B1E45F4C7D1F42BAC95F16E5D85EB2BFC68BE1BE7C6823C3C28A6304B1AB2D4A94E1D803311EF54D20985FAA383FC5003E895B02096F81188209A3BEB719E3768B01CFBCF587E947206DAA31320E0647B9475A1BBF856DFD117BAC65DD66D4A4DBC3F539F5EBA4544AECE36E35395EE562053591A64212AC8F37F30E2B8C11AB2C10C7C03AACBD5DA91C35703F339B829ABD1C51216EDDA18E9EF905F83E62BBC19376CFB5B17DF0E189C29BDA895578060D86C43BA75D89D69A4DEF267CCA705DFE2E6CA049310812FB57EDD6E4E68CE36AED458717E67246291193F48AB3E5620004ECC2E2A8D841C65D7C1A93926D80855CC9092B7FD29BFC5CAF154CB51BFA95CE76F24C732D1B7C6CFA9829025AA7478406C3B5DDBA76B0EF77E1C0B9839ED41FAAD8ED873F484158243ACC8DE9EF439FE9B018A08B3267CD8DDF0A7BC75F8D0625AB15C0F710471ACBB75B6B0220F283B168FB97899BA53E0A583378', - 'gdxidpyhxdE': 'dY7CYik9SZysPpbpa%2B9IZ0WkY%2Bf%2BbijCEJvzgRykt3gd21PLr3Ef0Nd7cJ84EZRYl9gaSyIl8MYbGPTbZonYELjmYv%5CiX5Aasgwj92PikIIxp67PCjEU7bIDfjtqO8gYNgmNKUUZfgoi8GSWC2CzIDMuoVeX0aj2E%2Bw3qgPe%2BzIj0gQo%3A1736774883618', - 'WM_NI': 'xxsz9lwGcCulm7plUDTn8EV4tPXXmBnkvNboMiKwOMaO68vvTGh%2B1%2F8geHL3MiaGz4kBNcL80kPI8L3k%2BIL2fR3rUpxQvjfQB14knTh8XpFASriLyzyWugn%2BZ8IrVmVSS3M%3D', - 'WM_NIKE': '9ca17ae2e6ffcda170e2e6eebae25ef3bf85b9f14ab5ac8ab7d44b978f8eadcb6998b9a992b3418caca88ed82af0fea7c3b92abca8bd9bbc68b599ada4f868afe9c08dd85098b2f8a6d540b89098b9f04aaeb5baafe1658fb78598ce47a391fad9f57e9899a8ccb425fcb9aba9cf398fb7afa8f940a99e8284cf34f4b5a0aabb48f1b5e5aacf3aa68efd93d87cbc8fba8be55b82effc8ced60ace89891c54b91aea7adfc72bb89bb88ed219ae88793d567968d9dd4d037e2a3', - 'JSESSIONID-WYYY': 'J1xKzQq7BEfO8faiU7GJrD54bxJC0oUwq8XyduKkEEBj8J8qy2n9Igx5l%2FQsOea4eBHs%2Bph7pHSFbPwTdCK4j6wSqY9BPMeJ828h5SZy4T4Rzx%2FQIrrvZn7ZbvrBwI9eDwd7vo9vOfVY4EIj2TpYdYP%2FTjOf5fzTq%5Ce3gB1a29J0ZyUY%3A1736913831537', - 'playerid': '81625937', -} - -headers = { - 'accept': '*/*', - 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', - 'cache-control': 'no-cache', - # Requests sorts cookies= alphabetically - # 'cookie': 'NMTID=00O8y8Jmz580oVUQEj2u8z-CtjK9TAAAAGT_JaiZQ; _ntes_nnid=70ee9d950560215d692bbd3bac5f7ffd,1735109551078; _ntes_nuid=70ee9d950560215d692bbd3bac5f7ffd; WM_TID=xAl%2FSCq1ZGxFEFQBVUOTDr%2F0kj2cJ4CW; WEVNSM=1.0.0; WNMCID=iljzuk.1735109552031.01.0; ntes_utid=tid._.MOPuPUX%252FlRRFVlVFAUbTH7v0liiZp44J._.0; sDeviceId=YD-FPy2uqtGAzpEVwAFRBeVx3xH8QxWMOBV; __snaker__id=z682UZpwWWtLZGly; ntes_kaola_ad=1; _iuqxldmzr_=32; P_INFO=15902053421|1735930696|1|music|00&99|null&null&null#gud&442000#10#0|&0|null|15902053421; __csrf=c9c07b72fc20b640171041342a760e81; MUSIC_U=00B2B1E45F4C7D1F42BAC95F16E5D85EB2BFC68BE1BE7C6823C3C28A6304B1AB2D4A94E1D803311EF54D20985FAA383FC5003E895B02096F81188209A3BEB719E3768B01CFBCF587E947206DAA31320E0647B9475A1BBF856DFD117BAC65DD66D4A4DBC3F539F5EBA4544AECE36E35395EE562053591A64212AC8F37F30E2B8C11AB2C10C7C03AACBD5DA91C35703F339B829ABD1C51216EDDA18E9EF905F83E62BBC19376CFB5B17DF0E189C29BDA895578060D86C43BA75D89D69A4DEF267CCA705DFE2E6CA049310812FB57EDD6E4E68CE36AED458717E67246291193F48AB3E5620004ECC2E2A8D841C65D7C1A93926D80855CC9092B7FD29BFC5CAF154CB51BFA95CE76F24C732D1B7C6CFA9829025AA7478406C3B5DDBA76B0EF77E1C0B9839ED41FAAD8ED873F484158243ACC8DE9EF439FE9B018A08B3267CD8DDF0A7BC75F8D0625AB15C0F710471ACBB75B6B0220F283B168FB97899BA53E0A583378; gdxidpyhxdE=dY7CYik9SZysPpbpa%2B9IZ0WkY%2Bf%2BbijCEJvzgRykt3gd21PLr3Ef0Nd7cJ84EZRYl9gaSyIl8MYbGPTbZonYELjmYv%5CiX5Aasgwj92PikIIxp67PCjEU7bIDfjtqO8gYNgmNKUUZfgoi8GSWC2CzIDMuoVeX0aj2E%2Bw3qgPe%2BzIj0gQo%3A1736774883618; WM_NI=xxsz9lwGcCulm7plUDTn8EV4tPXXmBnkvNboMiKwOMaO68vvTGh%2B1%2F8geHL3MiaGz4kBNcL80kPI8L3k%2BIL2fR3rUpxQvjfQB14knTh8XpFASriLyzyWugn%2BZ8IrVmVSS3M%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eebae25ef3bf85b9f14ab5ac8ab7d44b978f8eadcb6998b9a992b3418caca88ed82af0fea7c3b92abca8bd9bbc68b599ada4f868afe9c08dd85098b2f8a6d540b89098b9f04aaeb5baafe1658fb78598ce47a391fad9f57e9899a8ccb425fcb9aba9cf398fb7afa8f940a99e8284cf34f4b5a0aabb48f1b5e5aacf3aa68efd93d87cbc8fba8be55b82effc8ced60ace89891c54b91aea7adfc72bb89bb88ed219ae88793d567968d9dd4d037e2a3; JSESSIONID-WYYY=J1xKzQq7BEfO8faiU7GJrD54bxJC0oUwq8XyduKkEEBj8J8qy2n9Igx5l%2FQsOea4eBHs%2Bph7pHSFbPwTdCK4j6wSqY9BPMeJ828h5SZy4T4Rzx%2FQIrrvZn7ZbvrBwI9eDwd7vo9vOfVY4EIj2TpYdYP%2FTjOf5fzTq%5Ce3gB1a29J0ZyUY%3A1736913831537; playerid=81625937', - 'origin': 'https://music.163.com', - 'pragma': 'no-cache', - 'priority': 'u=1, i', - 'referer': 'https://music.163.com/', - 'sec-ch-ua': '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"', - 'sec-ch-ua-mobile': '?0', - 'sec-ch-ua-platform': '"Windows"', - 'sec-fetch-dest': 'empty', - 'sec-fetch-mode': 'cors', - 'sec-fetch-site': 'same-origin', - 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0', -} - -params = { - 'csrf_token': 'c9c07b72fc20b640171041342a760e81', -} - -data = { - 'params': 'nvRE14quU2f1ge3FCmBfGqo3PAkgmLPWQYSjX5TTa6o3CSSvGGdecBNdLzvNymhfUyVDR6ZjboRjxOp0OaqzoXXbJUb085o+yJZWUt/+U7uBLM+zyYaAZBpSJk5wE30wJZ+/Y/NC0BDuN4lB7K+QR6VaUNly7hIk0trvh+DITgsoQqdKDie7C+EqFNEVYan9LoKVikJjaPFJAxBGtDZWrQ==', - 'encSecKey': '27dba2f08b7025a9f62b326292dfc4975cb5d1c46d524ae2bd7a0f4e47ff60acdc5f22a99cab75a2a38083fa264b618ebdcded209c1f8d167d4e62205795bb4fb367db862644489bdef6266508a6c285b2e793968e02c856a13285c7ec7d7a8c2984ae70257ec721aa674a6c64f62cbb17535c07b4378dc2a95f7e48553e8db7', -} - -f = open('../../music/cloud_music/param.js', 'r', encoding='utf-8').read() -ctx = execjs.compile(f) -result = ctx.call('get_music', '1357375695') -print(result) - -data = { - 'params': result['encText'], - 'encSecKey': result['encSecKey'], -} - -response = requests.post('https://music.163.com/weapi/song/enhance/player/url/v1', params=params, cookies=cookies, headers=headers, - data=data) -print(response.text) - - - - -""" - -# 判断cookie是否有效 -def netease_cloud_music_is_login(session): - try: - session.cookies.load(ignore_discard=True) - except Exception: - pass - csrf_token = session.cookies.get('__csrf') - c = str({'csrf_token': csrf_token}) - try: - loginurl = session.post( - 'https://music.163.com/weapi/w/nuser/account/get?csrf_token={}'.format(csrf_token), - data={ - 'params': AES_aes(AES_aes(c,g,iv),i,iv), - 'encSecKey': encSecKey()}, - headers=headers).json() - if '200' in str(loginurl['code']): - print('Cookies值有效:', loginurl['profile']['nickname'], ',已登录!') - return session, True - else: - print('Cookies值已经失效,请重新扫码登录!') - return session, False - except BaseException: - print('Cookies值已经失效,请重新扫码登录!') - return session, False - - -# 登录扫码保存cookie -def netease_cloud_music_login(): - # 写入 - session = requests.session() - if not os.path.exists('cloud_music_cookies.cookie'): - with open('cloud_music_cookies.cookie', 'wb') as f: - pickle.dump(session.cookies, f) - # 读取 - session.cookies = pickle.load(open('cloud_music_cookies.cookie', 'rb')) - session, status = netease_cloud_music_is_login(session) - if not status: - getlogin = session.post( 'https://music.163.com/weapi/login/qrcode/unikey?csrf_token=', - data={ - 'params': params(None), - 'encSecKey': encSecKey() - }, - headers=headers).json() - pngurl = 'https://music.163.com/login?codekey=' + getlogin['unikey'] + '&refer=scan' - - qr = qrcode.QRCode() - qr.add_data(pngurl) - img = qr.make_image() - a = BytesIO() - img.save(a, 'png') - png = a.getvalue() - a.close() - # 打开二维码进行扫码操作 - t = showpng(png) - t.start() - - tokenurl = 'https://music.163.com/weapi/login/qrcode/client/login?csrf_token=' - while True: - u = str({'key': getlogin['unikey'], 'type': "1", 'csrf_token': ""}) - qrcodedata = session.post( - tokenurl, - data={ - 'params': params(u), - 'encSecKey': encSecKey() - }, - headers=headers).json() - if '801' in str(qrcodedata['code']): - print('二维码未失效,请扫码!') - elif '802' in str(qrcodedata['code']): - print('已扫码,请确认!') - elif '803' in str(qrcodedata['code']): - print('已确认,登入成功!') - break - else: - print('其他:', qrcodedata) - time.sleep(2) - with open('cloud_music_cookies.cookie', 'wb') as f: - pickle.dump(session.cookies, f) - return session - - - - -if __name__ == '__main__': - netease_cloud_music_login() - -""" \ No newline at end of file diff --git a/src/resources/temp/temp b/src/resources/temp/temp new file mode 100644 index 0000000..e69de29