Skip to content

Commit c705b02

Browse files
committed
fix: 修复下载私密账号作品时出现 404 响应码的问题
BREAKING CHANGE: 下载作品文件时将携带 Cookie
1 parent 6a12b08 commit c705b02

File tree

2 files changed

+53
-32
lines changed

2 files changed

+53
-32
lines changed

docs/Release_Notes.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
**更新内容:**
22

3-
1. 修复 API 模式直播接口获取原始数据报错的问题
4-
2. 优化 API 模式搜索接口的响应提示
5-
3. 修复 MacOS 下载直播报错的问题
6-
4. 搜索数据为空时不再保存至文件
7-
5. 支持设置直播下载的默认清晰度
8-
6. 重构复制粘贴写入 Cookie 功能
9-
7. 重构调用 ffmpeg 下载直播功能
10-
8. 优化提取链接的正则表达式
11-
9. 优化配置文件参数容错机制
12-
10. 恢复数据请求延时机制
13-
11. 优化程序运行提示
14-
12. 其他细节优化
3+
1. 修复下载私密账号作品时出现 `404` 响应码的问题
4+
2. 修复 API 模式直播接口获取原始数据报错的问题
5+
3. 优化 API 模式搜索接口的响应提示
6+
4. 修复 MacOS 下载直播报错的问题
7+
5. 搜索数据为空时不再保存至文件
8+
6. 支持设置直播下载的默认清晰度
9+
7. 重构复制粘贴写入 Cookie 功能
10+
8. 重构调用 ffmpeg 下载直播功能
11+
9. 优化提取链接的正则表达式
12+
10. 优化配置文件参数容错机制
13+
11. 恢复数据请求延时机制
14+
12. 优化程序运行提示
15+
13. 其他细节优化
1516

1617
<p><strong>更新公告:本项目名称由 <code>TikTokDownloader</code> 变更为 <code>DouK-Downloader</code></strong></p>

src/config/parameter.py

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from ..module import FFMPEG
2525
from ..record import BaseLogger, LoggerManager
2626
from ..storage import RecordManager
27-
from ..tools import Cleaner, cookie_dict_to_str, create_client
27+
from ..tools import Cleaner, cookie_dict_to_str, create_client, DownloaderError
2828
from ..translation import _
2929

3030
if TYPE_CHECKING:
@@ -139,7 +139,7 @@ def __init__(
139139
self.cookie_state: bool = self.__check_cookie_state()
140140
self.cookie_tiktok_state: bool = self.__check_cookie_state(True)
141141
self.set_uif_id()
142-
self.set_download_headers()
142+
# self.set_download_headers()
143143

144144
self.root = self.__check_root(root)
145145
self.folder_name = self.__check_folder_name(folder_name)
@@ -290,7 +290,7 @@ def __get_cookie_tiktok_cache(
290290
) -> str:
291291
return self.__check_cookie_tiktok(cookie)[1]
292292

293-
async def __add_cookie(
293+
def __add_cookie(
294294
self,
295295
parameters: tuple[dict, ...],
296296
cookie: dict | str,
@@ -303,6 +303,7 @@ async def __add_cookie(
303303
False,
304304
)
305305
cookie |= i
306+
return None
306307
elif isinstance(cookie, str):
307308
for i in parameters:
308309
if i:
@@ -312,6 +313,7 @@ async def __add_cookie(
312313
)
313314
cookie += f"; {cookie_dict_to_str(i)}"
314315
return cookie
316+
raise DownloaderError
315317

316318
async def __get_tt_wid_params(self) -> dict:
317319
if tt_wid := await TtWid.get_tt_wid(
@@ -569,7 +571,10 @@ async def update_params(self) -> None:
569571
ms_token,
570572
tt_wid,
571573
),
572-
self.headers,
574+
(
575+
self.headers,
576+
self.headers_download,
577+
),
573578
self.cookie_dict,
574579
self.cookie_str,
575580
)
@@ -598,7 +603,10 @@ async def update_params(self) -> None:
598603
ms_token,
599604
tt_wid,
600605
),
601-
self.headers_tiktok,
606+
(
607+
self.headers_tiktok,
608+
self.headers_download_tiktok,
609+
),
602610
self.cookie_dict_tiktok,
603611
self.cookie_str_tiktok,
604612
)
@@ -627,7 +635,10 @@ async def update_params_offline(self) -> None:
627635
API.params["msToken"] = ms_token
628636
await self.__update_cookie(
629637
({MsToken.NAME: ms_token},),
630-
self.headers,
638+
(
639+
self.headers,
640+
self.headers_download,
641+
),
631642
self.cookie_dict,
632643
self.cookie_str,
633644
)
@@ -646,7 +657,10 @@ async def update_params_offline(self) -> None:
646657
APITikTok.params["msToken"] = ms_token.get(MsTokenTikTok.NAME, "")
647658
await self.__update_cookie(
648659
(ms_token,),
649-
self.headers_tiktok,
660+
(
661+
self.headers_tiktok,
662+
self.headers_download_tiktok,
663+
),
650664
self.cookie_dict_tiktok,
651665
self.cookie_str_tiktok,
652666
)
@@ -660,30 +674,36 @@ async def update_params_offline(self) -> None:
660674
async def __update_cookie(
661675
self,
662676
parameters: tuple[dict, ...],
663-
headers: dict,
664-
cookie: dict,
665-
cache: str,
677+
headers: tuple[dict, ...],
678+
cookie_dict: dict,
679+
cookie_str: str,
666680
) -> None:
667-
if cookie:
668-
await self.__add_cookie(
669-
parameters,
670-
cookie,
671-
)
672-
headers["Cookie"] = cookie_dict_to_str(cookie)
673-
elif cache:
674-
headers["Cookie"] = await self.__add_cookie(parameters, cache)
681+
cookie = self.__add_cookie(
682+
parameters,
683+
cookie_dict or cookie_str,
684+
)
685+
if not isinstance(cookie, str):
686+
cookie = cookie_dict_to_str(cookie_dict)
687+
for i in headers:
688+
i["Cookie"] = cookie
675689

676690
def set_headers_cookie(
677691
self,
678692
) -> None:
679693
if self.cookie_dict:
680-
self.headers["Cookie"] = cookie_dict_to_str(self.cookie_dict)
694+
cookie = cookie_dict_to_str(self.cookie_dict)
695+
self.headers["Cookie"] = cookie
696+
self.headers_download["Cookie"] = cookie
681697
elif self.cookie_str:
682698
self.headers["Cookie"] = self.cookie_str
699+
self.headers_download["Cookie"] = self.cookie_str
683700
if self.cookie_dict_tiktok:
684-
self.headers_tiktok["Cookie"] = cookie_dict_to_str(self.cookie_dict_tiktok)
701+
cookie = cookie_dict_to_str(self.cookie_dict_tiktok)
702+
self.headers_tiktok["Cookie"] = cookie
703+
self.headers_download_tiktok["Cookie"] = cookie
685704
elif self.cookie_str_tiktok:
686705
self.headers_tiktok["Cookie"] = self.cookie_str_tiktok
706+
self.headers_download_tiktok["Cookie"] = self.cookie_str_tiktok
687707

688708
def set_download_headers(self) -> None:
689709
self.__update_download_headers()

0 commit comments

Comments
 (0)