diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/.env.windows b/.env.windows new file mode 100644 index 0000000..262b58f --- /dev/null +++ b/.env.windows @@ -0,0 +1 @@ +aa=9999999 diff --git a/app/services/book_service.py b/app/services/book_service.py index 5e153ef..6b478da 100644 --- a/app/services/book_service.py +++ b/app/services/book_service.py @@ -91,8 +91,11 @@ class BookService: @retry(stop=stop_after_attempt(3)) def download_file(self, file_url: str, dir_name: str, file_name: str): # 下载文件 try: - response = self.session.get(file_url, stream=True) - response.raise_for_status() + response = self.session.get(file_url, stream=True, allow_redirects=False) + if response.status_code in (301, 302, 307, 308): # 非200状态码,重新请求 + file_url = response.headers["location"] + print(f'跳转页面了:{file_url}') + response = self.session.get(file_url, headers={"referer": file_url}, stream=True) print(f"下载状态码:{response.status_code} {file_url}") print(dir_name + "/" + file_name) content_type = response.headers.get('Content-Type', '')