refactor(book_service): 优化下载路径处理和方法静态化
- 移除上级目录引用,直接使用项目根目录作为下载路径 - 将create_folder方法改为静态方法以提高代码组织性 - 注释掉备用的文件命名逻辑以简化下载流程 - 更新文件路径构建方式,使用Path对象进行路径拼接 - 添加环境变量调试打印和路径验证输出 - 优化文件下载的目标目录创建逻辑
This commit is contained in:
@@ -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) # 前往目标页
|
||||
|
||||
Reference in New Issue
Block a user