From 2e6ba61a4ff3a31f42b7a21b0ce81ba65258c677 Mon Sep 17 00:00:00 2001 From: ClovertaTheTrilobita Date: Mon, 3 Feb 2025 18:40:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=9B=E5=87=BA=E8=A7=86=E9=A2=91=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=92=AD=E6=94=BE=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/qq_plugins/bili_vid_search.py | 19 +++++++++++++++++-- src/videos/billibili/biliVideos.py | 20 ++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/qq_plugins/bili_vid_search.py b/src/qq_plugins/bili_vid_search.py index 163b5f8..b062127 100644 --- a/src/qq_plugins/bili_vid_search.py +++ b/src/qq_plugins/bili_vid_search.py @@ -2,6 +2,8 @@ import time from pathlib import Path + +import nonebot.adapters.qq.exception import requests from nonebot import on_command from nonebot.rule import to_me @@ -69,7 +71,13 @@ async def get_video_file(message: MessageEvent): video_url = biliVideos.get_video_file_url(keyword[0], cid) biliVideos.video_download(video_url, cid) # biliVideos.transcode_video(f"{cid}.mp4",f"{cid}-o.mp4") - await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"{cid}.mp4")))) + + try: + await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/videos/file/{cid}.mp4")))) + except nonebot.adapters.qq.exception.ActionFailed: + await bili_bv_search.finish("发送失败惹,可能是视频过长,请尽量搜索1分钟以内的视频吧。") + + biliVideos.delete_video(cid) elif len(keyword) >= 2: @@ -94,4 +102,11 @@ async def get_video_file(message: MessageEvent): video_url = biliVideos.get_video_file_url(keyword[0], cid) biliVideos.video_download(video_url, cid) - await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"{cid}.mp4")))) + try: + await bili_bv_search.send(Message(MessageSegment.file_video(Path(f"./src/videos/file/{cid}.mp4")))) + except nonebot.adapters.qq.exception.ActionFailed: + await bili_bv_search.finish("发送失败惹,可能是视频过长,请尽量搜索1分钟以内的视频吧。") + + biliVideos.delete_video(cid) + + await bili_bv_search.finish() diff --git a/src/videos/billibili/biliVideos.py b/src/videos/billibili/biliVideos.py index 3d3ea6d..76199a5 100644 --- a/src/videos/billibili/biliVideos.py +++ b/src/videos/billibili/biliVideos.py @@ -100,7 +100,7 @@ def get_video_file_url(bvid, cid): params = { 'bvid': bvid, 'cid': cid, - 'qn': '16', + 'qn': '64', 'platform': 'html5' } @@ -121,7 +121,7 @@ def video_download(file_url, cid): # 检查请求是否成功 if response.status_code == 200: # 将视频保存到本地文件 - with open(f'{cid}.mp4', 'wb') as file: + with open(f'./src/videos/file/{cid}.mp4', 'wb') as file: for chunk in response.iter_content(chunk_size=1024): if chunk: file.write(chunk) @@ -129,6 +129,18 @@ def video_download(file_url, cid): else: print(f"下载失败,状态码:{response.status_code}") +def delete_video(cid): + # 指定要删除的文件路径 + file_path = f"src/videos/file/{cid}.mp4" + + # 检查文件是否存在 + if os.path.exists(file_path): + # 删除文件 + os.remove(file_path) + print(f"文件 {file_path} 已被删除。") + else: + print(f"文件 {file_path} 不存在。") + def transcode_video(input_file, output_file): try: # 转码视频为 H.264 编码 @@ -143,6 +155,6 @@ def transcode_video(input_file, output_file): if __name__ == "__main__": print(get_video_info('海南某211台风过后现状111')) - print(get_video_file_url('BV1y7411Q7Eq', '171776208')) + print(get_video_file_url('BV1p2PDeEENs', '28194047730')) - print(get_video_pages_info('BV1y7411Q7Eq')) + print(get_video_pages_info('BV1p2PDeEENs'))