✍️ 热爱计算机科学和IT互联网事业!
Strive to improve my coding level on the way of learning in the future.
在未来学习路上努力提升自己编码水平。
💪 正在学习:
🧠 计划学习:
🧰 常用的工具:
High-speed downloader for multiple platforms
Home Page: https://johnserf-seed.github.io/f2/
License: Apache License 2.0
问题描述
如题
其他细节
因为我不想下载重复的内容,所以把f2的下载文件夹合并到TikTokDownloadTools里面了。
虽然'{create}'
在两个程序内的参数是一样的,但是我不知道如何更改默认分离符号。
请看下方文件命名(截图/代码示例);
f2的后半部分的日期是由 "."分离的。
而TikTokDownloadTools是由 ”-“分离的。
导致当使用同一个参数 '{create}'
时,依然会出现相同的文件内容重复下载。
截图/代码示例
f2:
2021-08-30 14.01.12_video.mp4
TikTokDownloadTools:
2021-08-30 14-01-12_video.mp4
期望的支持
如何更改文件命名规则的默认分离符号 (特别是后半部分)
设置interval之后有的时候找不到对应的作品
例如设置 interval为 2022-01-01|2023-01-01
在这个url运行就找不到作品
https://www.douyin.com/user/MS4wLjABAAAA6Y_2dEfQL7RUr6515qVJXINmruMWlL99pxhdMVjJfqs
设置 interval为 "all"就能找到。
log:
INFO 筛选日期区间:2022-01-01 00:00:00 至 2023-01-01 23:59:59
WARNING 作品发布时间不在指定区间内:2024-03-01 10-44-38
....
WARNING 没有找到符合条件的作品
详细描述错误
之前遇到的问题:
我重装了 f2
这个项目在本地。
第一次时,使用函数 f2 dy -c app.yaml --auto-cookie chrome
函数很顺利。
可以在 app.yaml
文件中写入 cookie
值。
当尝试运行程序时,例如:
$ f2 dy -c f2/conf/app.yaml
会提示 tuple index out of range
。
程序无法实现下载功能。
在卸载所有依赖及 f2
后,重新使用 pip install f2
重新下载所有依赖及 f2
。
程序执行成功。
函数 f2 dy --init-config dy.yaml
运行成功.。
使用函数 f2 dy -c app.yaml --auto-cookie chrome
更新cookie,
发生错误:
请前往QA文档 https://johnserf-seed.github.io/f2/question-answer/qa.html 查看相关帮助
ERROR 自动获取Cookie失败: tuple index out of range
自动获取Cookie失败: tuple index out of range
Aborted!
目前遇到的问题:
配置文件路径不存在
在使用f2 -d DEBUG dy -c app.yaml -u https://xxx
后,提示错误:
FileNotFound
详细traceback请看
系统平台
A:
错误重现
之前遇到的问题:
A:
f2 dy -c app.yaml --auto-cookie chrome
后报错Q: 请添加调试命令f2 -d DEBUG
重新运行出错的命令并提供日志目录下的日志文件。
目前遇到的问题:
A:
f2 -d DEBUG -c app.yaml -u https://xxx
后报错Q: 请添加调试命令f2 -d DEBUG
重新运行出错的命令并提供日志目录下的日志文件。
A:
2024-03-31-00-50-22.log
其实这个log啥也没有。。但是在输出终端里有对应部分程序的报错。如上图
预期行为
之前的问题:
现在的问题:
不应该出现错误啊?配置文件搁f2\conf
里躺的好好的呢,不会找不到的啊?
屏幕截图
之前的问题:
其他
之前的问题:
测试代码执行位置:f2/i18n/translator.py
,将语言设置为en_US
...
def gettext(self, message):
_ = self.load_translations("en_US")
if _:
return _(message)
return message
_ = TranslationManager.get_instance().gettext
print(_(
"未在响应的地址中找到sec_user_id, 检查链接是否为用户主页类名: {0}".format(
"cls.__name__"
)
))
在调用gettext函数之前对占位符进行格式化,会导致字符串找不到翻译而输出原文,输出结果:
未在响应的地址中找到sec_user_id, 检查链接是否为用户主页类名: cls.__name__
应该修改为下方代码,在调用gettext函数获取翻译后,再对占位符进行格式化。
...
def gettext(self, message):
_ = self.load_translations("en_US")
if _:
return _(message)
return message
_ = TranslationManager.get_instance().gettext
print(_(
"未在响应的地址中找到sec_user_id, 检查链接是否为用户主页类名: {0}").format("cls.__name__"
))
输入结果:
Not found sec_user_id in the response, check if the link is to the user's homepage class name: cls.__name__
我在 常见的问题与解决办法 中找不到我的问题。
你的问题是公开的,请注意删除个人敏感内容再上传
不按照模板填写的问题将不会得到优先的处理。
如果错误问题是可视化的,请在屏幕截图贴截图。如果你是开发者请在错误重现提供一个最小的代码示例来演示该问题。
相同的问题将会被标记重复(duplicate)
,如果你的问题被标记为已确认(confirmed)
则会在后续的推送中修复,请时刻留意。
退订邮件提醒请点击邮件的底部unsubscribe
。
详细描述错误
与#41 一样的问题,postman post没问题
查看了文档,更换过cookie,更换过账号,一个老号三个新号,换过代理,
app,conf两个文件都配置了代理
proxies: http: http:127.0.0.1:7890 https: http:127.0.0.1:7890
系统平台
A:
错误重现
A: f2 tk -u https://www.tiktok.com/@i_am_young22 -p D:\TKDL\
Q: 请添加调试命令f2 -d DEBUG
重新运行出错的命令并提供日志目录下的日志文件。
A:
DEBUG 主配置参数:{'cookie': 'tt_csrf_token=39COEPWt-onK_pR474A8NLwU4ZAxFlQzNG-Q;
ak_bmsc=2FC6152435EA4CF02CFC567518E8C719000000000000000000000000000000YAAQVfrOF2sZtT+OAQAA5pGyQRcGZYebc5Gi3yv
Ph8ECeaj2tDsFCUlYUfdWydd75auBWIWNzEJRYNaMx9UiesjzQ442euVmljZQUXYaFOdC2DzpVH18fipppOWOwixJdiFM0LcZ+l4VnZwlR28Lh3
/S560OmpHbb8J+C7OTHVq2sDKkqVAx2OumDUwgjh81ibPUc2U3g8lDGSUYCLoF15367V9g61pdvah8xrGKb1Gu+CShDiaCnbaZGTPhDl5nQJORc
X5CAWjQCLHlTkYncDG9crkjlH3MDbkEBt1P2CZnIfMLCxytpmN3zGNqQ1a5KltsoPzZE9p3ikeMZqhgS7AX24XJBnr/pVhK+npuMNLS51tNVJc5
pJGOIcz0l8BbjElTT5jdiH7i; tt_chain_token=E6g2XDIGiGIPbx3J+F6Myw==; tiktok_webapp_theme=light;
odin_tt=4d1d245964f190da892332152aea32cf8d923bda18d5cb8770fa2b0d77c9a5b3a78ae7147d8054a28101f1b4f0493c60ff90abb
f374b18619b54298c7f78a1b836c03bc9e6ea1b18d4dd24e59f22cca7;
passport_csrf_token=2cf8cd16a31d90600bd6848861556528;
passport_csrf_token_default=2cf8cd16a31d90600bd6848861556528;
perf_feed_cache={%22expireTimestamp%22:1710669600000%2C%22itemIds%22:[%227322872697187290401%22%2C%227342139813
170007314%22%2C%227337841795700739360%22]}; s_v_web_id=verify_ltsj2jib_rXxraYyI_Kmn6_40XV_8IV5_Wxh3UskvrpWK;
multi_sids=6898153841922393093%3Ac74e00b7d30145b18dc15ea298590a73;
cmpl_token=AgQQAPOuF-RO0o-FxPiB9R08_5W8QaOT_4MhYNCYVA;
uid_tt=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
uid_tt_ss=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
sid_tt=c74e00b7d30145b18dc15ea298590a73; sessionid=c74e00b7d30145b18dc15ea298590a73;
sessionid_ss=c74e00b7d30145b18dc15ea298590a73; store-idc=useast5; store-country-code=us;
store-country-code-src=uid; tt-target-idc=useast8;
tt-target-idc-sign=XWbhqpmkjG0LeQ63okMfoozjbi0_0BniHv8oOH9XgvgNAXO7KJhFQ6WkJ3M_Hsqtcw93n7sZ-PrrhBfnAkc3MPWGnqZk
GxFk5Hc_7UG0yJ5dKZcDNaPnU-Iy9oP32fttztPzz-R3zCnvRdhj3r9Ok0zNbscJdFyrsi6j_VyaU0hynYyxxoDJiUdVRqrkVd4pOdULlJOVtFd
-6Con1K_QwFkEcr-ARf_xdV6Rwwj3wNvSIHY7FIslVSHODXWGBNNS6gtfcU8qChEL-T1L0nb6T9Y9qYam682egmgF8v7rQ1xB0GE3j-fe_SzKWB
LR_jOv_vZ8oYlCfkbFWxpfy0pvbATZRmcTOhZHjdpd4z6znaLligb0XwOEZ2WWUpSkfGlIfjZaG_CJIaIRB-F-3eDGeKUReNT5zTXXzmteFUwhx
JlZSq6rmwh0zdwWGV2SDX1nQgG6PSn9c78PRPssgBGOebR12SlBiwF69AT6Y7itVxBE4PNAgR3KoEk0G4c7b-F0;
last_login_method=handle; passport_fe_beating_status=true;
sid_guard=c74e00b7d30145b18dc15ea298590a73%7C1710499225%7C15551993%7CWed%2C+11-Sep-2024+10%3A40%3A18+GMT;
sid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEGg
d1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ssid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEG
gd1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ttwid=1%7CsoAyXFVQvGh8-gKdOfWXNlIz4wvNbDDe0G808ci-GkM%7C1710499225%7C7ba57974e6b4e8259520fb3cd0994188650543938a
abcd7119dda36cb3646ad4;
bm_sv=213CAEEBD1F9AC7442F23AD66067900AYAAQVfrOFz4atT+OAQAAvOeyQRcSZu2+LHMWmpKZtrpwXr7uwOJ24jnadhceN7fpdtdqm3aZ1;
voPf0UqiXclGIDgDXm7NYljbsQzX/i0u6GNspO2BFXl5XUqxGMzz9qWf7T3Ji47I6A3510meYQfoFwYPKV12PCKkWUPVOldXl3pXQBMZylFrM0O
meBCDRRlO3fORoy/LDHU7wd3cJME0TGTCX5+5vcL1XacJdv0bFp/z/gYk4la07ruZrKLKfqGW
msToken=ewGH7q9FoakLYaZfcHvrcTRusZuL-EnPyoWsnbpoZ6dAgMU8BUP7HchdMVtzxeZmQrKuCSMlxslo9InJTgZY6FaNFzY1qhgdTNXbnv2
s7y5MidTUgzCIh5BUHx2It2oK_IEXdunpIh5Lpc4R2Q==;
msToken=8_YzLMQ1rEOGn-6_tYDqKMcG8e7F4ORosZxo_fiydYOUrHW0I7BlsKVT2c3rpuhLYVd5zwkciMmX4M3KsXc4oZIiuUtbldKYJrPr1lU
xRk3-u_W0OAUGw7Yjcj6LCO1S40OaQjJMOlVK6rmFtVk=', 'cover': True, 'desc': True, 'folderize': True, 'music': True,
'naming': '{create}{desc}', 'path': 'Download', 'mode': 'post', 'url': '', 'interval': 'all', 'timeout': 10,
'max_retries': 5, 'max_connections': 5, 'max_tasks': 5, 'page_counts': 5, 'max_counts': 0, 'proxies': {'http':
'http:127.0.0.1:7890', 'https': 'http:127.0.0.1:7890'}, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT
10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36', 'Referer':
'https://www.tiktok.com/'}, 'msToken': {'url':
'https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6j50L8AaXLAd2aWTdoJCYLfX_67rVQFE4U
wwHVHmyG_NfIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7MquA==', 'magic': 538969122,
'version': 1, 'dataType': 8, 'strData':
'3BvqYbNXLLOcZehvxZVbjpAu7vq82RoWmFSJHLFwzDwJIZevE0AeilQfP55LridxmdGGjknoksqIsLqlMHMif0IFK/Br7JWqxOHnYuMwVCnttF
c0Y4MFvdVWM5FECiEulJC0Dc+eeVsNSrFnAc9K7fazqdglyJgGLSfXIJmgyCvvQ4pg0u5HBVVugLSWs242X42fjoWymaUCLZJQo6vi6WLyuV7l5
IC3Mg+lelr5xBQD6Q7hBIFEw8zzxJ1n2DyA4xLbOHTQdKvEtsK7XzyWwjpRnojPTbBl69Zosnuru+lOBIl+tFu/+hCQ1m0jYZwTP4rVE75L3Du6
+KZ5v/9TyFYjq7y3y9bGLP4d7yQueJbF90G1yrZ6htElrZ2vqZKDrIqBVbmOZr/nph12k2JKrITtN0R/pMsp0sJ4gesQnXxcD/pLOFAINHk7umg
be6LzJ7+TLUdGuO4M7xiEg/jCqhjgJX1izZ4NPoBDp35zRxj6Y6OrcstlTN/cv5sz663+Nco/mEwhGq2VwrL4gAIAPycndIsb48dPdtngmLqNDN
N0ZyVRjgqVIDXXrxigXCkR9CH89Dlrrb7QQqWVgRXz9/k5ihEM43BR3sd3mMU/XgFLN1Aoxf6GzzdxP2QPBI75/ZoHoAmu54v8gTmA3ntCGlEF0
zgaFGTdpkGdb+oZgyQM4pw1aAyxmFINXkpD3IKKoGev9kD9gTFnhiQMGCMemhZS7ZYdbuGu0Cb+lQKaL/QTt80FMyGmW8kzVy9xW/ja9BcdEJYR
oaufuFRkBFG5ay8x4WHLR6hEapXqQial/cREbLL4sQytpjtmnndFqvT7xN5DhgsLY2Z7451MJhD6NJXKNrMafGZSbItzQWY=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/119.0.0.0 Safari/537.36'}, 'ttwid': {'url': 'https://www.tiktok.com/ttwid/check/', 'data':
'{"aid":1988,"service":"www.tiktok.com","union":false,"unionHost":"","needFid":false,"fid":"","migrate_priority
":0}', 'cookie':
'ttwid=1%7CovVQu2St-HXSHAdEfZ7tljPe151SZ88AbrlTirlaC6w%7C1701072604%7C49b17849da69bafc3638e794f3f26b30fe9677c52
53e65a2a5f615489846ce02'}, 'odin_tt': {'url':
'https://www.tiktok.com/passport/web/account/info/?aid=1459&app_language=zh-Hans&app_name=tiktok_web&browser_la
nguage=zh-CN&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%2
0NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F119.0.0.0%2
0Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&device_id=7306060721837852167&root_referer=https%3A%2F%
2Fwww.tiktok.com%2Flogin%2F'}}
DEBUG 自定义配置参数:{'cookie': 'tt_csrf_token=39COEPWt-onK_pR474A8NLwU4ZAxFlQzNG-Q;
ak_bmsc=2FC6152435EA4CF02CFC567518E8C719000000000000000000000000000000YAAQVfrOF2sZtT+OAQAA5pGyQRcGZYebc5Gi3yv
Ph8ECeaj2tDsFCUlYUfdWydd75auBWIWNzEJRYNaMx9UiesjzQ442euVmljZQUXYaFOdC2DzpVH18fipppOWOwixJdiFM0LcZ+l4VnZwlR28Lh3
/S560OmpHbb8J+C7OTHVq2sDKkqVAx2OumDUwgjh81ibPUc2U3g8lDGSUYCLoF15367V9g61pdvah8xrGKb1Gu+CShDiaCnbaZGTPhDl5nQJORc
X5CAWjQCLHlTkYncDG9crkjlH3MDbkEBt1P2CZnIfMLCxytpmN3zGNqQ1a5KltsoPzZE9p3ikeMZqhgS7AX24XJBnr/pVhK+npuMNLS51tNVJc5
pJGOIcz0l8BbjElTT5jdiH7i; tt_chain_token=E6g2XDIGiGIPbx3J+F6Myw==; tiktok_webapp_theme=light;
odin_tt=4d1d245964f190da892332152aea32cf8d923bda18d5cb8770fa2b0d77c9a5b3a78ae7147d8054a28101f1b4f0493c60ff90abb
f374b18619b54298c7f78a1b836c03bc9e6ea1b18d4dd24e59f22cca7;
passport_csrf_token=2cf8cd16a31d90600bd6848861556528;
passport_csrf_token_default=2cf8cd16a31d90600bd6848861556528;
perf_feed_cache={%22expireTimestamp%22:1710669600000%2C%22itemIds%22:[%227322872697187290401%22%2C%227342139813
170007314%22%2C%227337841795700739360%22]}; s_v_web_id=verify_ltsj2jib_rXxraYyI_Kmn6_40XV_8IV5_Wxh3UskvrpWK;
multi_sids=6898153841922393093%3Ac74e00b7d30145b18dc15ea298590a73;
cmpl_token=AgQQAPOuF-RO0o-FxPiB9R08_5W8QaOT_4MhYNCYVA;
uid_tt=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
uid_tt_ss=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
sid_tt=c74e00b7d30145b18dc15ea298590a73; sessionid=c74e00b7d30145b18dc15ea298590a73;
sessionid_ss=c74e00b7d30145b18dc15ea298590a73; store-idc=useast5; store-country-code=us;
store-country-code-src=uid; tt-target-idc=useast8;
tt-target-idc-sign=XWbhqpmkjG0LeQ63okMfoozjbi0_0BniHv8oOH9XgvgNAXO7KJhFQ6WkJ3M_Hsqtcw93n7sZ-PrrhBfnAkc3MPWGnqZk
GxFk5Hc_7UG0yJ5dKZcDNaPnU-Iy9oP32fttztPzz-R3zCnvRdhj3r9Ok0zNbscJdFyrsi6j_VyaU0hynYyxxoDJiUdVRqrkVd4pOdULlJOVtFd
-6Con1K_QwFkEcr-ARf_xdV6Rwwj3wNvSIHY7FIslVSHODXWGBNNS6gtfcU8qChEL-T1L0nb6T9Y9qYam682egmgF8v7rQ1xB0GE3j-fe_SzKWB
LR_jOv_vZ8oYlCfkbFWxpfy0pvbATZRmcTOhZHjdpd4z6znaLligb0XwOEZ2WWUpSkfGlIfjZaG_CJIaIRB-F-3eDGeKUReNT5zTXXzmteFUwhx
JlZSq6rmwh0zdwWGV2SDX1nQgG6PSn9c78PRPssgBGOebR12SlBiwF69AT6Y7itVxBE4PNAgR3KoEk0G4c7b-F0;
last_login_method=handle; passport_fe_beating_status=true;
sid_guard=c74e00b7d30145b18dc15ea298590a73%7C1710499225%7C15551993%7CWed%2C+11-Sep-2024+10%3A40%3A18+GMT;
sid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEGg
d1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ssid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEG
gd1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ttwid=1%7CsoAyXFVQvGh8-gKdOfWXNlIz4wvNbDDe0G808ci-GkM%7C1710499225%7C7ba57974e6b4e8259520fb3cd0994188650543938a
abcd7119dda36cb3646ad4;
bm_sv=213CAEEBD1F9AC7442F23AD66067900AYAAQVfrOFz4atT+OAQAAvOeyQRcSZu2+LHMWmpKZtrpwXr7uwOJ24jnadhceN7fpdtdqm3aZ1;
voPf0UqiXclGIDgDXm7NYljbsQzX/i0u6GNspO2BFXl5XUqxGMzz9qWf7T3Ji47I6A3510meYQfoFwYPKV12PCKkWUPVOldXl3pXQBMZylFrM0O
meBCDRRlO3fORoy/LDHU7wd3cJME0TGTCX5+5vcL1XacJdv0bFp/z/gYk4la07ruZrKLKfqGW
msToken=ewGH7q9FoakLYaZfcHvrcTRusZuL-EnPyoWsnbpoZ6dAgMU8BUP7HchdMVtzxeZmQrKuCSMlxslo9InJTgZY6FaNFzY1qhgdTNXbnv2
s7y5MidTUgzCIh5BUHx2It2oK_IEXdunpIh5Lpc4R2Q==;
msToken=8_YzLMQ1rEOGn-6_tYDqKMcG8e7F4ORosZxo_fiydYOUrHW0I7BlsKVT2c3rpuhLYVd5zwkciMmX4M3KsXc4oZIiuUtbldKYJrPr1lU
xRk3-u_W0OAUGw7Yjcj6LCO1S40OaQjJMOlVK6rmFtVk=', 'cover': True, 'desc': True, 'folderize': True, 'music': True,
'naming': '{create}{desc}', 'path': 'Download', 'mode': 'post', 'url': '', 'interval': 'all', 'timeout': 10,
'max_retries': 5, 'max_connections': 5, 'max_tasks': 5, 'page_counts': 5, 'max_counts': 0, 'proxies': {'http':
'http:127.0.0.1:7890', 'https': 'http:127.0.0.1:7890'}, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT
10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36', 'Referer':
'https://www.tiktok.com/'}, 'msToken': {'url':
'https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6j50L8AaXLAd2aWTdoJCYLfX_67rVQFE4U
wwHVHmyG_NfIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7MquA==', 'magic': 538969122,
'version': 1, 'dataType': 8, 'strData':
'3BvqYbNXLLOcZehvxZVbjpAu7vq82RoWmFSJHLFwzDwJIZevE0AeilQfP55LridxmdGGjknoksqIsLqlMHMif0IFK/Br7JWqxOHnYuMwVCnttF
c0Y4MFvdVWM5FECiEulJC0Dc+eeVsNSrFnAc9K7fazqdglyJgGLSfXIJmgyCvvQ4pg0u5HBVVugLSWs242X42fjoWymaUCLZJQo6vi6WLyuV7l5
IC3Mg+lelr5xBQD6Q7hBIFEw8zzxJ1n2DyA4xLbOHTQdKvEtsK7XzyWwjpRnojPTbBl69Zosnuru+lOBIl+tFu/+hCQ1m0jYZwTP4rVE75L3Du6
+KZ5v/9TyFYjq7y3y9bGLP4d7yQueJbF90G1yrZ6htElrZ2vqZKDrIqBVbmOZr/nph12k2JKrITtN0R/pMsp0sJ4gesQnXxcD/pLOFAINHk7umg
be6LzJ7+TLUdGuO4M7xiEg/jCqhjgJX1izZ4NPoBDp35zRxj6Y6OrcstlTN/cv5sz663+Nco/mEwhGq2VwrL4gAIAPycndIsb48dPdtngmLqNDN
N0ZyVRjgqVIDXXrxigXCkR9CH89Dlrrb7QQqWVgRXz9/k5ihEM43BR3sd3mMU/XgFLN1Aoxf6GzzdxP2QPBI75/ZoHoAmu54v8gTmA3ntCGlEF0
zgaFGTdpkGdb+oZgyQM4pw1aAyxmFINXkpD3IKKoGev9kD9gTFnhiQMGCMemhZS7ZYdbuGu0Cb+lQKaL/QTt80FMyGmW8kzVy9xW/ja9BcdEJYR
oaufuFRkBFG5ay8x4WHLR6hEapXqQial/cREbLL4sQytpjtmnndFqvT7xN5DhgsLY2Z7451MJhD6NJXKNrMafGZSbItzQWY=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/119.0.0.0 Safari/537.36'}, 'ttwid': {'url': 'https://www.tiktok.com/ttwid/check/', 'data':
'{"aid":1988,"service":"www.tiktok.com","union":false,"unionHost":"","needFid":false,"fid":"","migrate_priority
":0}', 'cookie':
'ttwid=1%7CovVQu2St-HXSHAdEfZ7tljPe151SZ88AbrlTirlaC6w%7C1701072604%7C49b17849da69bafc3638e794f3f26b30fe9677c52
53e65a2a5f615489846ce02'}, 'odin_tt': {'url':
'https://www.tiktok.com/passport/web/account/info/?aid=1459&app_language=zh-Hans&app_name=tiktok_web&browser_la
nguage=zh-CN&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%2
0NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F119.0.0.0%2
0Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&device_id=7306060721837852167&root_referer=https%3A%2F%
2Fwww.tiktok.com%2Flogin%2F'}}
DEBUG CLI参数:{'cookie': 'tt_csrf_token=39COEPWt-onK_pR474A8NLwU4ZAxFlQzNG-Q;
ak_bmsc=2FC6152435EA4CF02CFC567518E8C719000000000000000000000000000000YAAQVfrOF2sZtT+OAQAA5pGyQRcGZYebc5Gi3yv
Ph8ECeaj2tDsFCUlYUfdWydd75auBWIWNzEJRYNaMx9UiesjzQ442euVmljZQUXYaFOdC2DzpVH18fipppOWOwixJdiFM0LcZ+l4VnZwlR28Lh3
/S560OmpHbb8J+C7OTHVq2sDKkqVAx2OumDUwgjh81ibPUc2U3g8lDGSUYCLoF15367V9g61pdvah8xrGKb1Gu+CShDiaCnbaZGTPhDl5nQJORc
X5CAWjQCLHlTkYncDG9crkjlH3MDbkEBt1P2CZnIfMLCxytpmN3zGNqQ1a5KltsoPzZE9p3ikeMZqhgS7AX24XJBnr/pVhK+npuMNLS51tNVJc5
pJGOIcz0l8BbjElTT5jdiH7i; tt_chain_token=E6g2XDIGiGIPbx3J+F6Myw==; tiktok_webapp_theme=light;
odin_tt=4d1d245964f190da892332152aea32cf8d923bda18d5cb8770fa2b0d77c9a5b3a78ae7147d8054a28101f1b4f0493c60ff90abb
f374b18619b54298c7f78a1b836c03bc9e6ea1b18d4dd24e59f22cca7;
passport_csrf_token=2cf8cd16a31d90600bd6848861556528;
passport_csrf_token_default=2cf8cd16a31d90600bd6848861556528;
perf_feed_cache={%22expireTimestamp%22:1710669600000%2C%22itemIds%22:[%227322872697187290401%22%2C%227342139813
170007314%22%2C%227337841795700739360%22]}; s_v_web_id=verify_ltsj2jib_rXxraYyI_Kmn6_40XV_8IV5_Wxh3UskvrpWK;
multi_sids=6898153841922393093%3Ac74e00b7d30145b18dc15ea298590a73;
cmpl_token=AgQQAPOuF-RO0o-FxPiB9R08_5W8QaOT_4MhYNCYVA;
uid_tt=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
uid_tt_ss=c588c030521147f6212b6f368f657fa67779a18aad2e46fe30895f0e53a24ba7;
sid_tt=c74e00b7d30145b18dc15ea298590a73; sessionid=c74e00b7d30145b18dc15ea298590a73;
sessionid_ss=c74e00b7d30145b18dc15ea298590a73; store-idc=useast5; store-country-code=us;
store-country-code-src=uid; tt-target-idc=useast8;
tt-target-idc-sign=XWbhqpmkjG0LeQ63okMfoozjbi0_0BniHv8oOH9XgvgNAXO7KJhFQ6WkJ3M_Hsqtcw93n7sZ-PrrhBfnAkc3MPWGnqZk
GxFk5Hc_7UG0yJ5dKZcDNaPnU-Iy9oP32fttztPzz-R3zCnvRdhj3r9Ok0zNbscJdFyrsi6j_VyaU0hynYyxxoDJiUdVRqrkVd4pOdULlJOVtFd
-6Con1K_QwFkEcr-ARf_xdV6Rwwj3wNvSIHY7FIslVSHODXWGBNNS6gtfcU8qChEL-T1L0nb6T9Y9qYam682egmgF8v7rQ1xB0GE3j-fe_SzKWB
LR_jOv_vZ8oYlCfkbFWxpfy0pvbATZRmcTOhZHjdpd4z6znaLligb0XwOEZ2WWUpSkfGlIfjZaG_CJIaIRB-F-3eDGeKUReNT5zTXXzmteFUwhx
JlZSq6rmwh0zdwWGV2SDX1nQgG6PSn9c78PRPssgBGOebR12SlBiwF69AT6Y7itVxBE4PNAgR3KoEk0G4c7b-F0;
last_login_method=handle; passport_fe_beating_status=true;
sid_guard=c74e00b7d30145b18dc15ea298590a73%7C1710499225%7C15551993%7CWed%2C+11-Sep-2024+10%3A40%3A18+GMT;
sid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEGg
d1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ssid_ucp_v1=1.0.0-KDFjZjcxYjQyMjBiYmQxMjA0ZTExYTRmMGFhYzM0NzEwOTA2YTM2MzkKGAiFiJ_O8MvK3V8QmcvQrwYYsws4BEDqBxAEG
gd1c2Vhc3Q4IiBjNzRlMDBiN2QzMDE0NWIxOGRjMTVlYTI5ODU5MGE3Mw;
ttwid=1%7CsoAyXFVQvGh8-gKdOfWXNlIz4wvNbDDe0G808ci-GkM%7C1710499225%7C7ba57974e6b4e8259520fb3cd0994188650543938a
abcd7119dda36cb3646ad4;
bm_sv=213CAEEBD1F9AC7442F23AD66067900AYAAQVfrOFz4atT+OAQAAvOeyQRcSZu2+LHMWmpKZtrpwXr7uwOJ24jnadhceN7fpdtdqm3aZ1;
voPf0UqiXclGIDgDXm7NYljbsQzX/i0u6GNspO2BFXl5XUqxGMzz9qWf7T3Ji47I6A3510meYQfoFwYPKV12PCKkWUPVOldXl3pXQBMZylFrM0O
meBCDRRlO3fORoy/LDHU7wd3cJME0TGTCX5+5vcL1XacJdv0bFp/z/gYk4la07ruZrKLKfqGW
msToken=ewGH7q9FoakLYaZfcHvrcTRusZuL-EnPyoWsnbpoZ6dAgMU8BUP7HchdMVtzxeZmQrKuCSMlxslo9InJTgZY6FaNFzY1qhgdTNXbnv2
s7y5MidTUgzCIh5BUHx2It2oK_IEXdunpIh5Lpc4R2Q==;
msToken=8_YzLMQ1rEOGn-6_tYDqKMcG8e7F4ORosZxo_fiydYOUrHW0I7BlsKVT2c3rpuhLYVd5zwkciMmX4M3KsXc4oZIiuUtbldKYJrPr1lU
xRk3-u_W0OAUGw7Yjcj6LCO1S40OaQjJMOlVK6rmFtVk=', 'cover': True, 'desc': True, 'folderize': True, 'music': True,
'naming': '{create}_{desc}', 'path': 'D:\TKDL\', 'mode': 'post', 'url':
'https://www.tiktok.com/@i_am_young22', 'interval': 'all', 'timeout': 10, 'max_retries': 5, 'max_connections':
5, 'max_tasks': 5, 'page_counts': 5, 'max_counts': 0, 'proxies': {'http': 'http:127.0.0.1:7890', 'https':
'http:127.0.0.1:7890'}, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36', 'Referer': 'https://www.tiktok.com/'}, 'msToken': {'url':
'https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6j50L8AaXLAd2aWTdoJCYLfX_67rVQFE4U
wwHVHmyG_NfIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7MquA==', 'magic': 538969122,
'version': 1, 'dataType': 8, 'strData':
'3BvqYbNXLLOcZehvxZVbjpAu7vq82RoWmFSJHLFwzDwJIZevE0AeilQfP55LridxmdGGjknoksqIsLqlMHMif0IFK/Br7JWqxOHnYuMwVCnttF
c0Y4MFvdVWM5FECiEulJC0Dc+eeVsNSrFnAc9K7fazqdglyJgGLSfXIJmgyCvvQ4pg0u5HBVVugLSWs242X42fjoWymaUCLZJQo6vi6WLyuV7l5
IC3Mg+lelr5xBQD6Q7hBIFEw8zzxJ1n2DyA4xLbOHTQdKvEtsK7XzyWwjpRnojPTbBl69Zosnuru+lOBIl+tFu/+hCQ1m0jYZwTP4rVE75L3Du6
+KZ5v/9TyFYjq7y3y9bGLP4d7yQueJbF90G1yrZ6htElrZ2vqZKDrIqBVbmOZr/nph12k2JKrITtN0R/pMsp0sJ4gesQnXxcD/pLOFAINHk7umg
be6LzJ7+TLUdGuO4M7xiEg/jCqhjgJX1izZ4NPoBDp35zRxj6Y6OrcstlTN/cv5sz663+Nco/mEwhGq2VwrL4gAIAPycndIsb48dPdtngmLqNDN
N0ZyVRjgqVIDXXrxigXCkR9CH89Dlrrb7QQqWVgRXz9/k5ihEM43BR3sd3mMU/XgFLN1Aoxf6GzzdxP2QPBI75/ZoHoAmu54v8gTmA3ntCGlEF0
zgaFGTdpkGdb+oZgyQM4pw1aAyxmFINXkpD3IKKoGev9kD9gTFnhiQMGCMemhZS7ZYdbuGu0Cb+lQKaL/QTt80FMyGmW8kzVy9xW/ja9BcdEJYR
oaufuFRkBFG5ay8x4WHLR6hEapXqQial/cREbLL4sQytpjtmnndFqvT7xN5DhgsLY2Z7451MJhD6NJXKNrMafGZSbItzQWY=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/119.0.0.0 Safari/537.36'}, 'ttwid': {'url': 'https://www.tiktok.com/ttwid/check/', 'data':
'{"aid":1988,"service":"www.tiktok.com","union":false,"unionHost":"","needFid":false,"fid":"","migrate_priority
":0}', 'cookie':
'ttwid=1%7CovVQu2St-HXSHAdEfZ7tljPe151SZ88AbrlTirlaC6w%7C1701072604%7C49b17849da69bafc3638e794f3f26b30fe9677c52
53e65a2a5f615489846ce02'}, 'odin_tt': {'url':
'https://www.tiktok.com/passport/web/account/info/?aid=1459&app_language=zh-Hans&app_name=tiktok_web&browser_la
nguage=zh-CN&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%2
0NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F119.0.0.0%2
0Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&device_id=7306060721837852167&root_referer=https%3A%2F%
2Fwww.tiktok.com%2Flogin%2F'}, 'languages': 'zh_CN', 'auto_cookie': None}
请前往QA文档 https://johnserf-seed.github.io/f2/question-answer/qa.html 查看相关帮助
ERROR API Connection Error:
连接端点失败,检查网络环境或代理:https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6
JCYLfX_67rVQFE4UwwHVHmyG_NfIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7Mqu
A== 代理:{'http://': 'http:127.0.0.1:7890', 'https://': 'http:127.0.0.1:7890'} 类名:TokenManager.
Q: 如果是开发者请提供最小的代码示例
A:
预期行为
希望帮忙排除下问题
屏幕截图
请添加截图以帮助解释你的问题。
日志文件
请添加调试日志文件以帮助解释你的问题。
其他
如有,可以添加有关问题的其他信息。
PS F:\Tiktok Downloads> f2 tk -c tk.yaml
INFO App: tiktok
INFO 主配置: conf/app.yaml
INFO 自定义配置: tk.yaml
请前往QA文档 https://johnserf-seed.github.io/f2/question-answer/qa.html 查看相关帮助
Error: 连接端点失败,检查网络环境或代理:
https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6j50L8AaXLAd2aWTdoJCYLfX_67rVQFE4UwwHVHmyG_N
fIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7MquA== 代理:{'http://': 'http://127.0.0.1:10809',
'https://': 'http://127.0.0.1:10809'}.
ERROR Error: 连接端点失败,检查网络环境或代理:
https://mssdk-sg.tiktok.com/web/common?msToken=1Ab-7YxR9lUHSem0PraI_XzdKmpHb6j50L8AaXLAd2aWTdoJCYLfX_67rVQFE4Uw
wHVHmyG_NfIipqrlLT3kCXps-5PYlNAqtdwEg7TrDyTAfCKyBrOLmhMUjB55oW8SPZ4_EkNxNFUdV7MquA== 代理:{'http://':
'http://127.0.0.1:10809', 'https://': 'http://127.0.0.1:10809'}.
代码就是文档上获取用户信息的官方示例:
import asyncio
from f2.apps.douyin.handler import DouyinHandler
kwargs = {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
"Referer": "https://www.douyin.com/",
},
"proxies": {"http": None, "https": None},
"cookie": "YOUR_COOKIE_HERE",
}
async def main():
sec_user_id = "MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE"
print(await DouyinHandler(kwargs).handler_user_profile(sec_user_id=sec_user_id))
if __name__ == "__main__":
asyncio.run(main())
表现:第n次响应为空
系统:
复现步骤:连续请求上万次,期间用无痕模式换了10次左右的游客cookie, 然后无论如何换cooklie都报错第5次响应为空
分析:
感觉应该是抖音的什么风控导致的,但是具体不太清楚为什么。而且我从浏览器F12拷贝出来的curl请求,发现鉴权都是使用的a_bonus,不知道是否有关系
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Scripts\f2.exe_main.py", line 7, in
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1686, in invoke
sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 943, in make_context
self.parse_args(ctx, args)
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1408, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 2400, in handle_parse_result
value = self.process_value(ctx, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 2362, in process_value
value = self.callback(ctx, self, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\f2\apps\douyin\cli.py", line 205, in handler_sso_login
is_login, login_cookie = asyncio.run(handle_sso_login())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\f2\apps\douyin\handler.py", line 855, in handle_sso_login
return await get_qrcode()
^^^^^^^^^^^^^^^^^^
File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\site-packages\f2\apps\douyin\handler.py", line 763, in get_qrcode
response = await crawler.fetch_login_qrcode(params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'fetch_login_qrcode'
系统:MacOS
问题:
自定义配置文件是先初始化生成的,再修改其中的配置;
path 设置了绝对路径,执行命令 f2 dy -c <自定义配置文件> ,会在运行该命令的当前目录下创建Download文件夹,配置文件中的path无法生效。
问题描述
简要描述你想要获取支持或询问的内容。
其他细节
提供任何相关的细节或背景信息,例如你要询问的函数或与项目相关的具体内容。
截图/代码示例
如果有必要,可以提供截图或代码示例以更好地说明问题或询问的内容。
期望的支持
简要说明你期望从社区或项目维护者那里得到的支持或回答。
其他
如果有其他需要补充的内容,请在此处添加。
作者大佬,希望后续可以增加 dy 下载原声对应视频列表的功能:
比如以下链接:
https://www.douyin.com/music/7310077578461678374
对应的视频列表。
D:\go_project\src\f2>f2 dy -c D:\go_project\src\f2\huawei.yaml
INFO App: douyin
INFO 主配置路径: D:\go_project\src\f2\f2\conf\app.yaml
INFO 自定义配置路径: D:\go_project\src\f2\huawei.yaml
WARNING 没有找到符合条件的作品
已经导入了cookies
huawei.yaml
douyin:
mode: post
详细描述错误
使用api的方式调用TiktokHandler(kwargs).fetch_user_post_videos方法时,使用正常登录并且可以正常使用的账号的cookie,无法获取到数据
pyhton版本为3.11
linux和mac都有这种情况
存在某些cookie可以获取成功,但是大部分无法获取,麻烦老哥帮忙看下哈
刚刚学习 不太懂 我学习安装whl文件后 不知道在终端窗口怎么调用F2
WINDOW
python3.11.3
[ 已检查] 我在 常见的问题与解决办法 中找不到我的问题。
[已检查 ] 你的问题是公开的,请注意删除个人敏感内容再上传
[ 已检查] 不按照模板填写的问题将不会得到优先的处理。
如果错误问题是可视化的,请在屏幕截图贴截图。如果你是开发者请在错误重现提供一个最小的代码示例来演示该问题。
相同的问题将会被标记重复(duplicate)
,如果你的问题被标记为已确认(confirmed)
则会在后续的推送中修复,请时刻留意。
退订邮件提醒请点击邮件的底部unsubscribe
。
详细描述错误
简明扼要地描述遇到的错误。
系统平台
A:
错误重现
A:
Q: 请添加调试命令f2 -d DEBUG
重新运行出错的命令并提供日志目录下的日志文件。
A:
Q: 如果是开发者请提供最小的代码示例
A:
预期行为
简明扼要地描述期望发生的事情。
屏幕截图
请添加截图以帮助解释你的问题。
日志文件
请添加调试日志文件以帮助解释你的问题。
其他
如有,可以添加有关问题的其他信息。
作品链接:https://www.douyin.com/note/7350121602706689291
命令:f2 dy -M one -i all -d y -u https://www.douyin.com/note/7350121602706689291
请大佬帮忙查看下是什么原因导致的,谢谢
封面 文案 音频都能下载,经过代理下载,页面MP4哪一行显示丢失?
在提出功能请求之前,请考虑在 https://github.com/Johnserf-Seed/f2/discussions 上发布反馈或在Discord中讨论。
Q: 你有检查过类似建议的问题吗?
在所有的问题列表里检查是否有类似的建议。
没有docker
Q: 它能为你解决什么问题?
该功能能解决你的什么问题?我也许可以建议一种现有的解决方法。
A: 计划安装到ubuntu20.04上面,查看系统3.8,所以需要升级,升级后,无法安装f2,各种报错;
希望打包好为docker,路径映射好,直接使用,
没必要为安装环境费时间,
谢谢
问题描述
原来的TikTokTool,文件名模板我一直使用{create}{id}{desc},现在使用f2报错:KeyError: "文件名模板字段 'id' 不存在,请检查",在各种介绍和文档网站中均未找到说明是否f2仅支持{create}_{desc}模式。
期望的支持
请告知是否f2仅支持{create}_{desc}模式。
大佬,您的下载方式应该是从最新的开始下载对吧
能否加个判断或参数,当程序比对文件已存在,跳过N个时,即停止下载
这样既节省时间,也能降低抖音服务器负载?(可能比较大概率不会又改接口啥的?)
f2 dy -u https://v.douyin.com/iNYAxD1o/
如题
初次尝试 f2,遇到了几个小问题,不知能否解答一下:
之前版本可以直接识别此类直播链接:https://live.douyin.com/330680364443?enter_from_merge=web_homepage_follow&enter_method=web_live_cover&room_id=7321922315113036210&action_type=click&group_id=undefined&request_id=undefined&is_livehead_preview_mini_window_show=undefined&enter_method_temai=undefined
而在 f2 下,会报错:
必须删减掉后面的?以后的字串。能不能后续改进直播链接识别?
(疑问)已经从浏览器导入 cookie,并且似乎使用 --init-config dy.yaml 的时候,创建的文件也已经包含了导入的 cookie,可是 AppData\Local\Programs\Python\Python311\Lib\site-packages\f2\conf\app.yaml 里面貌似并没有 cookie 信息?(或者被加密了?)
https://johnserf-seed.github.io/f2/site-config.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6 自定义配置文件下的多用户配置,创建了一个如下文件:
douyin:
# 醒子8ke
url: https://live.douyin.com/775841227732
# 直播模式
mode: live
在 Terminal 里面执行 f2 -d dy -c C:\Users\o\Desktop\f2\C.yaml
会报错提示ERROR 未在响应的地址中找到sec_user_id, 检查链接是否为用户主页
我的疑问是,这是 bug 还是... ?此配置文件是不是不能写这么简单,要使用初始化的带有 cookie 信息的 yaml 作为模板,在其中添加用户信息?如果需要这样添加,能不能改进说明文档,并告知如何添加?
那么这样一来,多用户配置一多起来的话,万一 cookie 需要更新,工作量会很大?
The tool ask the url, i try to put my account url but it not work. Thanks
已经在yaml中配置了:
desc: false
folderize: false
music: false
但是下载后仍然将下载的作品保存到单独的文件夹,并下载了音乐、文本、封面等文件
[咨询]请问一下作者大佬, 批量下载能不能一条命令传入多个配置文件
同时传入多个配置文件,或者一个配置文件夹?
或者在url里面传入多个地址?目前有多个链接想下载,采用的方法是多个配置文件挨个下载,不知道有没有更好用的方法
我在 常见的问题与解决办法 中找不到我的问题。
你的问题是公开的,请注意删除个人敏感内容再上传
不按照模板填写的问题将不会得到优先的处理。
如果错误问题是可视化的,请在屏幕截图贴截图。如果你是开发者请在错误重现提供一个最小的代码示例来演示该问题。
相同的问题将会被标记重复(duplicate)
,如果你的问题被标记为已确认(confirmed)
则会在后续的推送中修复,请时刻留意。
退订邮件提醒请点击邮件的底部unsubscribe
。
详细描述错误
简明扼要地描述遇到的错误。
系统平台
A:
错误重现
A:
Q: 请添加调试命令f2 -d DEBUG
重新运行出错的命令并提供日志目录下的日志文件。
(douyin) user@ubuntu: f2 -d DEBUG dy --init-config dy.yaml
DEBUG 开启调试模式 (Debug mode on)
INFO App: douyin
INFO douyin 应用配置文件生成成功,保存至 /home/user/f2/dy.yaml
INFO 主配置路径:/home/user/f2/f2/conf/app.yaml
INFO 自定义配置路径:/home/user/f2/f2/conf/app.yaml
DEBUG 主配置参数:{'cookie': None, 'max_connections': 5, 'max_counts': 0, 'max_retries': 5, 'max_tasks': 5, 'naming': '{create}_{desc}', 'page_counts': 5,
'path': 'Download', 'timeout': 10, 'proxies': {'http': None, 'https': None}}
DEBUG 自定义配置参数:{'cookie': None, 'max_connections': 5, 'max_counts': 0, 'max_retries': 5, 'max_tasks': 5, 'naming': '{create}_{desc}', 'page_counts':
5, 'path': 'Download', 'timeout': 10, 'proxies': {'http': None, 'https': None}}
DEBUG CLI参数:{'cookie': None, 'max_connections': 5, 'max_counts': 0, 'max_retries': 5, 'max_tasks': 5, 'naming': '{create}_{desc}', 'page_counts': 5,
'path': 'Download', 'timeout': 10, 'proxies': {'http': None, 'https': None}, 'url': None, 'music': None, 'cover': None, 'desc': None, 'folderize':
None, 'mode': None, 'interval': None, 'languages': 'zh_CN', 'lyric': None, 'auto_cookie': None, 'sso_login': None, 'headers': {'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36', 'Referer':
'https://www.douyin.com/'}}
ERROR 缺乏URL参数,详情看命令帮助
Q: 如果是开发者请提供最小的代码示例
A:
预期行为
简明扼要地描述期望发生的事情。
屏幕截图
请添加截图以帮助解释你的问题。
日志文件
请添加调试日志文件以帮助解释你的问题。
其他
如有,可以添加有关问题的其他信息。
C:\Users\ASUS>f2 -d tk -c C:\Users\ASUS\tk.yaml
DEBUG 开启调试模式 (Debug on)
INFO App: tiktok
INFO 主配置: conf/app.yaml
INFO 自定义配置: C:\Users\ASUS\tk.yaml
DEBUG CLI参数:{'url': 'https://www.tiktok.com/@celeste_36_', 'music': True, 'cover': True, 'desc': True, 'path': 'Download', 'folderize': True,
'mode': 'post', 'naming': '{create}_{desc}', 'cookie': 'tiktok_webapp_theme=light; passport_csrf_token=22b1d34f1ca1b6d3c7831f253d960abb;
passport_csrf_token_default=22b1d34f1ca1b6d3c7831f253d960abb;
cookie-consent={%22ga%22:true%2C%22af%22:true%2C%22fbp%22:true%2C%22lip%22:true%2C%22bing%22:true%2C%22ttads%22:true%2C%22reddit%22:true%2C%2 2hubspot%22:true%2C%22version%22:%22v10%22}; multi_sids=7311222714382730273%3A523ad60041020d0ec49721b6a4f6367b;
cmpl_token=AgQQAPOYF-RO0rVIQPX0vh0Y_xc3W4JUP6ITYNN38A;
sid_guard=523ad60041020d0ec49721b6a4f6367b%7C1702364425%7C15552000%7CSun%2C+09-Jun-2024+07%3A00%3A25+GMT;
uid_tt=d258b96d187e6a85d2215e4d271bb298a1521be400a78c0aa649ab584215d72b;
uid_tt_ss=d258b96d187e6a85d2215e4d271bb298a1521be400a78c0aa649ab584215d72b; sid_tt=523ad60041020d0ec49721b6a4f6367b;
sessionid=523ad60041020d0ec49721b6a4f6367b; sessionid_ss=523ad60041020d0ec49721b6a4f6367b;
sid_ucp_v1=1.0.0-KDNmOTRmMjcwYTQwZTdmYzVmZGNkMWI3NjlkNTk3YjE0MzYyMjRlODUKHwihiLPkp8qru2UQiYrgqwYYswsgDDD73NqrBjgIQBIQAxoIdXNlYXN0MmEiIDUyM2Fk NjAwNDEwMjBkMGVjNDk3MjFiNmE0ZjYzNjdi;
ssid_ucp_v1=1.0.0-KDNmOTRmMjcwYTQwZTdmYzVmZGNkMWI3NjlkNTk3YjE0MzYyMjRlODUKHwihiLPkp8qru2UQiYrgqwYYswsgDDD73NqrBjgIQBIQAxoIdXNlYXN0MmEiIDUyM2F kNjAwNDEwMjBkMGVjNDk3MjFiNmE0ZjYzNjdi; store-idc=useast2a; store-country-code=gb; store-country-code-src=uid; tt-target-idc=useast2a;
tt-target-idc-sign=s9WnkyP5hSrb3ZngmqhglNx0fzt5cdtxZCdOECruFRADYWlpOZgNNIzp2DGXGYA13z9cREqSvm1mMBY7Y8qBl5vzpUM0JtfASYGvNnhitj5FJNSpXOegGahW-T pR1KBDLylIFJVqg10FLi6C9lq2CYqIveZ8eosDRzYwGsNALiUTBxs7lb2Hy3dmBMxiyGuwLnEYy_M0t1PT1Cp-ho5HQUhcM0eP4PsO3XC3Djib3grCZBBoB9-y9DVppDNLuAq4sys_pvs 793WVta5gPqqvkBRUOxNXqh4XXo33aP2OakQewfRPCJNLMdG-aaNupvFhUjrpp1thoWbgts0y2g_FuST2KpiXHAIjwYKoZpCAhtFh7QKvNYaTSG-E1AyAH-3-YTWXdV8WrBMe-_Qv1csE 4xgRRGV_j-_AnCTc6WA4vuGjoN8vwSE9F0xsmiI6Y-zsSHOsouQBmu1XhB6V4IFyumLIi1beLFO2JylJmsLCrLv-Ehuh5obD3biKojGD_BHb; living_user_id=708405523788;
_ga=GA1.1.2083641405.1703815519; passport_auth_status_ads=1c4f653fe32fb77d04ca746733655b44%2C;
passport_auth_status_ss_ads=1c4f653fe32fb77d04ca746733655b44%2C;
sso_uid_tt_ads=15d87b691644a489823e8e8b1898e86252e57b897e0e9bcdcafbc303c55e2517;
sso_uid_tt_ss_ads=15d87b691644a489823e8e8b1898e86252e57b897e0e9bcdcafbc303c55e2517; sso_user_ads=48ba7fa55f2a66a4eb6c809acce8a76d;
sso_user_ss_ads=48ba7fa55f2a66a4eb6c809acce8a76d;
sid_ucp_sso_v1_ads=1.0.0-KDM4ZTE4YWYzZDY2OGIxODU3YmZiZDY0OTZlYWU5ZDU0ODlmZGZkN2IKHwiCiKmQ2Kehx2UQ3Iq6rAYYzCQgDDDairqsBjgIQBIQAxoDc2cxIiA0OGJh N2ZhNTVmMmE2NmE0ZWI2YzgwOWFjY2U4YTc2ZA;
ssid_ucp_sso_v1_ads=1.0.0-KDM4ZTE4YWYzZDY2OGIxODU3YmZiZDY0OTZlYWU5ZDU0ODlmZGZkN2IKHwiCiKmQ2Kehx2UQ3Iq6rAYYzCQgDDDairqsBjgIQBIQAxoDc2cxIiA0OGJ hN2ZhNTVmMmE2NmE0ZWI2YzgwOWFjY2U4YTc2ZA;
sid_guard_ads=7887b2ac79f73ad4abdae2ee4c5d206d%7C1703839069%7C5183999%7CTue%2C+27-Feb-2024+08%3A37%3A48+GMT;
uid_tt_ads=173f2350d411a4df6f06109b21f7489bd5d0899906e3ba060b7c8be9c0b5f447;
uid_tt_ss_ads=173f2350d411a4df6f06109b21f7489bd5d0899906e3ba060b7c8be9c0b5f447; sid_tt_ads=7887b2ac79f73ad4abdae2ee4c5d206d;
sessionid_ads=7887b2ac79f73ad4abdae2ee4c5d206d; sessionid_ss_ads=7887b2ac79f73ad4abdae2ee4c5d206d;
sid_ucp_v1_ads=1.0.0-KDg2N2I3ZjZlODk2ZTkyZjQ4OTdjMWVmYmNhOTMxNmM2YzU4Yjk3MzUKGQiCiKmQ2Kehx2UQ3Yq6rAYYzCQgDDgIQBIQAxoDc2cxIiA3ODg3YjJhYzc5Zjcz YWQ0YWJkYWUyZWU0YzVkMjA2ZA;
ssid_ucp_v1_ads=1.0.0-KDg2N2I3ZjZlODk2ZTkyZjQ4OTdjMWVmYmNhOTMxNmM2YzU4Yjk3MzUKGQiCiKmQ2Kehx2UQ3Yq6rAYYzCQgDDgIQBIQAxoDc2cxIiA3ODg3YjJhYzc5Zjc zYWQ0YWJkYWUyZWU0YzVkMjA2ZA;
perf_feed_cache={%22expireTimestamp%22:1704963600000%2C%22itemIds%22:[%227304846564432858374%22%2C%227321142012583972103%22]};
ga_QQM0HPKD40=GS1.1.1704812599.12.0.1704812601.58.0.0; tt_csrf_token=S0vpYWYT-mz31g1P11OZkoyPjMNQvZn3eSYE;
tt_chain_token=Ia7/U//VflAGCUYpWOp0dg==;
ttwid=1%7ClkAAoD6j_TDamhVVYVzInm-ZWBFJX-R33KAUjzcJlsI%7C1705044747%7Cb33ea7ec68ba19f4d305d5957594fd259783d5dce2671e65b2adc1ce27fb38d5;
odin_tt=119432de45cf038a41977123a702067ba1745e1c84b447586cfc075567aa6dff73acd4b79718d2d90b6421549b5e36aa746f0b73aa0fa92c7a07efc7e55b27ca8bdfc b1eb40a97b3d0447daf2c521a19;
msToken=hUunV8PvrWhMtZI7D_MB1AGW-ky5tTcdVUDMJg1RnLHN0XrakLGPv2qD4YnfxECAuxNw4gyviNeoB41ZXoPEV87lMu14VvFC5Y2Q65FpDFMSHwNNN8vP_7AU4WLWXO0K4zL2d 3djsL5EocD;
msToken=N5bKdw1Wg4xOTLSfTU605oj1lQVUHnCu4J7DjexwJfuKr1Zpe7-QsjfR2q-QxzH4mvO1Z5gOtcXfURPi6G0h0bI2kkkbrf6ccNC6L8SWAizaIUNysM8UIQhjHjbpPSzLZcDh0 49pVvdQxoZ4; passport_fe_beating_status=true', 'interval': 'all', 'timeout': 10, 'max_retries': 5, 'max_connections': 5, 'max_tasks': 10,
'max_counts': 0, 'page_counts': 20, 'languages': 'zh_CN', 'proxies': {'http': 'http://127.0.0.1:10809', 'https': 'https://127.0.0.1:10809'},
'auto_cookie': None, 'headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/104.0.0.0 Safari/537.36', 'Referer': 'https://www.tiktok.com/'}}
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\runpy.py:196 in _run_module_as_main │
│ │
│ 193 │ main_globals = sys.modules["main"].dict │
│ 194 │ if alter_argv: │
│ 195 │ │ sys.argv[0] = mod_spec.origin │
│ ❱ 196 │ return _run_code(code, main_globals, None, │
│ 197 │ │ │ │ │ "main", mod_spec) │
│ 198 │
│ 199 def run_module(mod_name, init_globals=None, │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\runpy.py:86 in _run_code │
│ │
│ 83 │ │ │ │ │ loader = loader, │
│ 84 │ │ │ │ │ package = pkg_name, │
│ 85 │ │ │ │ │ spec = mod_spec) │
│ ❱ 86 │ exec(code, run_globals) │
│ 87 │ return run_globals │
│ 88 │
│ 89 def _run_module_code(code, init_globals=None, │
│ │
│ in :7 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:1157 in │
│ call │
│ │
│ 1154 │ │
│ 1155 │ def call(self, *args: t.Any, **kwargs: t.Any) -> t.Any: │
│ 1156 │ │ """Alias for :meth:main
.""" │
│ ❱ 1157 │ │ return self.main(*args, **kwargs) │
│ 1158 │
│ 1159 │
│ 1160 class Command(BaseCommand): │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:1078 in │
│ main │
│ │
│ 1075 │ │ try: │
│ 1076 │ │ │ try: │
│ 1077 │ │ │ │ with self.make_context(prog_name, args, **extra) as ctx: │
│ ❱ 1078 │ │ │ │ │ rv = self.invoke(ctx) │
│ 1079 │ │ │ │ │ if not standalone_mode: │
│ 1080 │ │ │ │ │ │ return rv │
│ 1081 │ │ │ │ │ # it's not safe to ctx.exit(rv)
here! │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:1688 in │
│ invoke │
│ │
│ 1685 │ │ │ │ super().invoke(ctx) │
│ 1686 │ │ │ │ sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) │
│ 1687 │ │ │ │ with sub_ctx: │
│ ❱ 1688 │ │ │ │ │ return _process_result(sub_ctx.command.invoke(sub_ctx)) │
│ 1689 │ │ │
│ 1690 │ │ # In chain mode we create the contexts step by step, but after the │
│ 1691 │ │ # base command has been invoked. Because at that point we do not │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:1434 in │
│ invoke │
│ │
│ 1431 │ │ │ echo(style(message, fg="red"), err=True) │
│ 1432 │ │ │
│ 1433 │ │ if self.callback is not None: │
│ ❱ 1434 │ │ │ return ctx.invoke(self.callback, **ctx.params) │
│ 1435 │ │
│ 1436 │ def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: │
│ 1437 │ │ """Return a list of completions for the incomplete value. Looks │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:783 in │
│ invoke │
│ │
│ 780 │ │ │
│ 781 │ │ with augment_usage_errors(__self): │
│ 782 │ │ │ with ctx: │
│ ❱ 783 │ │ │ │ return __callback(*args, **kwargs) │
│ 784 │ │
│ 785 │ def forward( │
│ 786 │ │ __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\decorators.py:33 │
│ in new_func │
│ │
│ 30 │ """ │
│ 31 │ │
│ 32 │ def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": │
│ ❱ 33 │ │ return f(get_current_context(), *args, **kwargs) │
│ 34 │ │
│ 35 │ return update_wrapper(new_func, f) │
│ 36 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\cli.py:38 │
│ 5 in tiktok │
│ │
│ 382 │ │
│ 383 │ # 添加app_name到kwargs │
│ 384 │ kwargs["app_name"] = "tiktok" │
│ ❱ 385 │ ctx.invoke(set_cli_config, **kwargs) │
│ 386 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py:783 in │
│ invoke │
│ │
│ 780 │ │ │
│ 781 │ │ with augment_usage_errors(__self): │
│ 782 │ │ │ with ctx: │
│ ❱ 783 │ │ │ │ return __callback(*args, **kwargs) │
│ 784 │ │
│ 785 │ def forward( │
│ 786 │ │ __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\click\decorators.py:33 │
│ in new_func │
│ │
│ 30 │ """ │
│ 31 │ │
│ 32 │ def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": │
│ ❱ 33 │ │ return f(get_current_context(), *args, **kwargs) │
│ 34 │ │
│ 35 │ return update_wrapper(new_func, f) │
│ 36 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\cli\cli_commands.py:1 │
│ 34 in set_cli_config │
│ │
│ 131 │ │
│ 132 │ with RichConsoleManager().progress: │
│ 133 │ │ try: │
│ ❱ 134 │ │ │ asyncio.run(run_app(kwargs)) │
│ 135 │ │ except APIError as e: │
│ 136 │ │ │ logger.error(e.display_error()) │
│ 137 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py:44 in run │
│ │
│ 41 │ │ events.set_event_loop(loop) │
│ 42 │ │ if debug is not None: │
│ 43 │ │ │ loop.set_debug(debug) │
│ ❱ 44 │ │ return loop.run_until_complete(main) │
│ 45 │ finally: │
│ 46 │ │ try: │
│ 47 │ │ │ cancel_all_tasks(loop) │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py:646 in │
│ run_until_complete │
│ │
│ 643 │ │ if not future.done(): │
│ 644 │ │ │ raise RuntimeError('Event loop stopped before Future completed.') │
│ 645 │ │ │
│ ❱ 646 │ │ return future.result() │
│ 647 │ │
│ 648 │ def stop(self): │
│ 649 │ │ """Stop running the event loop. │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\cli\cli_commands.py:1 │
│ 41 in run_app │
│ │
│ 138 │
│ 139 async def run_app(kwargs): │
│ 140 │ app_name = kwargs["app_name"] │
│ ❱ 141 │ app_module = importlib.import_module(f"f2.apps.{app_name}.handler") │
│ 142 │ await app_module.main(kwargs) │
│ 143 │
│ 144 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\importlib_init.py:126 in │
│ import_module │
│ │
│ 123 │ │ │ if character != '.': │
│ 124 │ │ │ │ break │
│ 125 │ │ │ level += 1 │
│ ❱ 126 │ return _bootstrap._gcd_import(name[level:], package, level) │
│ 127 │
│ 128 │
│ 129 _RELOADING = {} │
│ in _gcd_import:1050 │
│ in _find_and_load:1027 │
│ in _find_and_load_unlocked:1006 │
│ in _load_unlocked:688 │
│ in exec_module:883 │
│ in _call_with_frames_removed:241 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\handler.p │
│ y:10 in │
│ │
│ 7 from f2.log.logger import logger │
│ 8 from f2.utils.mode_handler import mode_handler, mode_function_map │
│ 9 from f2.apps.tiktok.db import AsyncUserDB, AsyncVideoDB │
│ ❱ 10 from f2.apps.tiktok.crawler import TiktokCrawler │
│ 11 from f2.apps.tiktok.dl import TiktokDownloader │
│ 12 from f2.apps.tiktok.model import ( │
│ 13 │ UserProfile, │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\crawler.p │
│ y:10 in │
│ │
│ 7 from f2.utils.conf_manager import ConfigManager │
│ 8 from f2.crawlers.base_crawler import BaseCrawler │
│ 9 from f2.apps.tiktok.api import TiktokAPIEndpoints as tkendpoint │
│ ❱ 10 from f2.apps.tiktok.model import ( │
│ 11 │ UserProfile, │
│ 12 │ UserPost, │
│ 13 │ UserLike, │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\model.py: │
│ 7 in │
│ │
│ 4 from pydantic import BaseModel │
│ 5 from urllib.parse import quote, unquote │
│ 6 │
│ ❱ 7 from f2.apps.tiktok.utils import TokenManager │
│ 8 from f2.utils.utils import get_timestamp │
│ 9 │
│ 10 │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\utils.py: │
│ 30 in │
│ │
│ 27 ) │
│ 28 │
│ 29 │
│ ❱ 30 class TokenManager: │
│ 31 │ tk_manager = ConfigManager(f2.APP_CONFIG_FILE_PATH) │
│ 32 │ token_conf = tk_manager.get_config("tiktok").get("msToken", None) │
│ 33 │ ttwid_conf = tk_manager.get_config("tiktok").get("ttwid", None) │
│ │
│ C:\Users\ASUS\AppData\Local\Programs\Python\Python310\lib\site-packages\f2\apps\tiktok\utils.py: │
│ 37 in TokenManager │
│ │
│ 34 │ odin_tt_conf = tk_manager.get_config("tiktok").get("odin_tt", None) │
│ 35 │ proxies_conf = tk_manager.get_config("tiktok").get("proxies", None) │
│ 36 │ proxies = { │
│ ❱ 37 │ │ "http://": proxies_conf.get("http"), │
│ 38 │ │ "https://": proxies_conf.get("https"), │
│ 39 │ } │
│ 40 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: 'str' object has no attribute 'get'
f2 tk -M one -u https://www.tiktok.com/@vietwhhore/video/7220605899159784747 -c tk.yaml
报错
app_module = importlib.import_module(f"f2.apps.{app_name}.handler")
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.10/dist-packages/f2/apps/tiktok/handler.py", line 10, in <module>
from f2.apps.tiktok.crawler import TiktokCrawler
File "/usr/local/lib/python3.10/dist-packages/f2/apps/tiktok/crawler.py", line 10, in <module>
from f2.apps.tiktok.model import (
File "/usr/local/lib/python3.10/dist-packages/f2/apps/tiktok/model.py", line 7, in <module>
from f2.apps.douyin.utils import VerifyFpManager
File "/usr/local/lib/python3.10/dist-packages/f2/apps/douyin/utils.py", line 36, in <module>
class TokenManager:
File "/usr/local/lib/python3.10/dist-packages/f2/apps/douyin/utils.py", line 38, in TokenManager
token_conf = dy_manager.get_config("douyin").get("msToken", None)
AttributeError: 'NoneType' object has no attribute 'get'
➜ ~ f2 tk --init-config tk.yaml
tiktok 应用配置文件生成成功,保存至 /root/tk.yaml 配置文件已经生成完毕,但是一直报错提示sec_uid获取失败。
求助
本地跑一切正常,上传到服务器状态一直是200 就是没数据
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in run_code
File "E:\3other\Anaconda3\envs\my11\Scripts\f2.exe_main.py", line 7, in
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\f2\apps\douyin\cli.py", line 429, in douyin
ctx.invoke(set_cli_config, **kwargs)
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\click\decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\f2\cli\cli_commands.py", line 134, in set_cli_config
asyncio.run(run_app(kwargs))
File "E:\3other\Anaconda3\envs\my11\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\f2\cli\cli_commands.py", line 142, in run_app
await app_module.main(kwargs)
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\f2\apps\douyin\handler.py", line 865, in main
await mode_function_mapmode
File "E:\3other\Anaconda3\envs\my11\Lib\site-packages\f2\apps\douyin\handler.py", line 408, in handle_user_collect
user_path, user_data = await get_or_add_user_data(kwargs, sec_user_id, db)
^^^^^^^^^^^^^^^^^^^^
TypeError: cannot unpack non-iterable WindowsPath object
f2 dy -c dy.yaml -M collect -u xxx 这个报上面的错误
f2 dy -c dy.yaml -M like -u xxx 这个正常下载
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.