diff --git a/app/services/book_service.py b/app/services/book_service.py index a8d9bd8..3439759 100644 --- a/app/services/book_service.py +++ b/app/services/book_service.py @@ -10,7 +10,8 @@ from app.models import Setting class BookService: def __init__(self): self.setting = Setting.query.filter_by(name="book_download").first().to_dict() - self.setting["targetDate"] = timestamp_to_datetime(datetime_to_timestamp(self.setting["targetDate"]) - 24 * 60 * 60) + self.setting["targetDate"] = timestamp_to_datetime( + datetime_to_timestamp(self.setting["targetDate"]) - 24 * 60 * 60) app_dir = os.path.dirname(os.path.dirname(__file__)) self.download_path = os.path.join(os.path.dirname(app_dir), "download") # 下载目录 self.today_timestamp = get_today_timestamp() @@ -40,7 +41,7 @@ class BookService: def isDownloadTarget(self, soup): # 是否是可以下载的文件 return soup.headers.get('Content-Type') in ['"application/octet-stream"', "application/octet-stream", - "text/plain","application/zip"] + "text/plain", "application/zip"] def post_page(self, name, url): # 帖子页面 print(f"详情页面 {self.setting["baseUrl"]}{url}") @@ -98,9 +99,7 @@ class BookService: if total_page_element is not None: # 总页数元素存在 则更新总页数 new_total_page = int(total_page_element.get("totalpage")) # 获取总页数 if self.setting["totalPage"] != new_total_page: # 总页数有更新 - self.setting["totalPage"] = new_total_page # 更新总页数 - Setting.query.filter_by(name="book_download").update({"totalPage": self.setting["totalPage"]}) - db.session.commit() + self._update_setting(totalPage=new_total_page) yield from self.section_page(new_total_page - self.setting["targetCountdownPage"]) # 重新跳转指点版块页面 return None @@ -133,9 +132,7 @@ class BookService: # yield f"data: 目标时间是{post_date}\n\n" yield from self.post_page(self.legitimate_naming(post_element.string), post_element['href']) # 跳转帖子页面 if post_date_timestamp > target_date_timestamp: # 帖子时间大于目标时间并且没有下一天时间 - self.setting["targetDate"] = post_date - Setting.query.filter_by(name="book_download").update({"targetDate": self.setting["targetDate"]}) - db.session.commit() + self._update_setting(targetDate=post_date) print(f"下一天是 {post_date}") # yield f"data: 下一天是 {post_date}\n\n" self.one_date_loading = False @@ -146,11 +143,8 @@ class BookService: "totalPage"] - 1: print("跳转到下一页") # yield f"data: 跳转到下一页\n\n" - self.setting["targetCountdownPage"] = min(self.setting["targetCountdownPage"] + 1, - self.setting["totalPage"] - 1) - Setting.query.filter_by(name="book_download").update( - {"targetCountdownPage": self.setting["targetCountdownPage"]}) - db.session.commit() + self._update_setting( + targetCountdownPage=min(self.setting["targetCountdownPage"] + 1, self.setting["totalPage"] - 1)) yield from self.section_page(self.setting["totalPage"] - self.setting["targetCountdownPage"]) return None @@ -168,3 +162,9 @@ class BookService: target_page = self.setting["totalPage"] - self.setting["targetCountdownPage"] # 目标页 yield from self.section_page(target_page) # 前往目标页 yield f"event: close\ndata: 已完成\n\n" + + def _update_setting(self, **kwargs): + Setting.query.filter_by(name="book_download").update(kwargs) + db.session.commit() + for key, value in kwargs.items(): + self.setting[key] = value