From da8cea5e08323ea886d76f1c1c06504427834b2d Mon Sep 17 00:00:00 2001 From: zhengshunjin <2667579369@qq.com> Date: Wed, 13 May 2026 07:04:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor(book=5Fservice):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E8=B7=AF=E5=BE=84=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E9=9D=99=E6=80=81=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除上级目录引用,直接使用项目根目录作为下载路径 - 将create_folder方法改为静态方法以提高代码组织性 - 注释掉备用的文件命名逻辑以简化下载流程 - 更新文件路径构建方式,使用Path对象进行路径拼接 - 添加环境变量调试打印和路径验证输出 - 优化文件下载的目标目录创建逻辑 --- app/services/book_service.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/services/book_service.py b/app/services/book_service.py index 3960223..5e153ef 100644 --- a/app/services/book_service.py +++ b/app/services/book_service.py @@ -1,3 +1,5 @@ +import os + import requests from pathlib import Path from bs4 import BeautifulSoup @@ -22,8 +24,8 @@ class BookService: self.setting["targetDate"] = timestamp_to_datetime(target_ts) app_dir = find_project_root() - print(app_dir) - self.download_path = app_dir.parent / "download" # 下载目录 + self.download_path = app_dir / "download" # 下载目录 + print(self.download_path) self.today_timestamp = get_today_timestamp() self.one_date_loading = False self.session = requests.session() @@ -54,7 +56,8 @@ class BookService: name = name.replace(old, new) return name - def create_folder(self, parent_dir: Path, folder_name: str) -> Path: # 创建文件夹 + @staticmethod + def create_folder(parent_dir: Path, folder_name: str) -> Path: # 创建文件夹 """创建文件夹(如果不存在)并返回路径""" target = parent_dir / folder_name target.mkdir(parents=True, exist_ok=True) @@ -80,6 +83,8 @@ class BookService: return yield from self.download_file(f"{self.setting["baseUrl"]}{i.select_one( 'a')['href']}", name, i.select_one('a').string) + # yield from self.download_file(f"{self.setting["baseUrl"]}{i.select_one( + # 'a')['href']}", name, self.legitimate_naming(i.select_one('a').string)) except RetryError as e: print('重试三次也不成功') @@ -95,7 +100,8 @@ class BookService: yield f"event: mes_error\ndata: {self.setting["targetDate"]} {file_name}\n\n" print("不是可下载文件") return - target_dir = f"download/{self.setting["targetDate"]}/{dir_name}/{file_name}" + target_dir = self.download_path / self.setting["targetDate"] / dir_name / file_name + print(target_dir) with open(target_dir, 'wb') as f: for chunk in response.iter_content(chunk_size=1024): if chunk: @@ -185,6 +191,7 @@ class BookService: return element.select_one(".by em span").string def book_download(self): + print(os.getenv('aa')) self.create_folder(self.download_path, self.setting["targetDate"]) # 创建文件夹 target_page = self.setting["totalPage"] - self.setting["targetCountdownPage"] # 目标页 yield from self.section_page(target_page) # 前往目标页