🚀Asynchronous based full-platform download tool
Project description
F2
是一个 Python
库,提供多平台的作品下载与接口数据处理。支持抖音
、TikTok
、Twitter
、Instagram
等平台,且方便适配更多平台。
🚀 快速开始
⚙️ 安装
⚡ 快速使用
📋 配置文件
💻 命令行
📘 开发指南
🧩 调用示例
✨ 新变化
当下载或升级到F2
的不同版本时,请注意以下关键的版本更新。
📡 v0.0.1.6-pw2
- 配置文件格式已经更新,如果你使用了旧的配置文件,请注意迁移。
- 所有时间戳的默认时区为(
UTC/GMT+08:00
)。 douyin
直播流文件名调整为flv
,图集调整回webp
。tiktok
视频地址403
的错误已经修复。TikTok视频地址403解决办法- 现在
douyin
默认会使用ab
算法来请求。(满血版ab算法待时开源)。 - 更多变化查看ChangeLog。
📡 v0.0.1.5-pw2
📑 文档
F2
的目标是提供一个简单易用的接口,让用户可以快速获取作品数据。
在preview
版本中很多功能没有完善,如果你发现了问题,请在F2
项目中提交issue
。项目文档还在完善中,存在滞后的情况,请保持关注。
🛠️ Q&A
🗓️ Todo
- 将在
0.0.1.7
版本中添加本地转发功能。 - 将在
0.0.1.7
版本中添加更多douyin
,tiktok
,weibo
,x
的接口。 - 将在
0.0.1.7
版本中修复x
已知的问题。
🐛 更新
💡 应用&功能
功能状态:🟢代表已经实现,🟡代表正在实现,🟤代表暂时不实现,🔵代表未来实现,🔴代表将会弃用。 账号状态:⚪代表未知,🟣代表需要登录(无视自己账号隐私设置),⚫代表不需要登录(游客状态能看到的)。
🎶 DouYin
- 🟣 表示需要登录才可以下载仅自己可见的作品、收藏作品、收藏夹作品或点赞作品等。(登录后无视自己的私密设置、可获取个性化内容)
- ⚫ 表示不需要登录下载公开的作品、收藏夹作品、点赞作品等。(仅下载他人公开可见作品与页面)
功能 | 账号状态 | 接口 | 功能状态 |
---|---|---|---|
用户信息 | 🟣⚫ | fetch_user_profile |
🟢 |
单个作品(视频、图集、日常) | 🟣⚫ | fetch_one_video |
🟢 |
主页作品 | 🟣⚫ | fetch_user_post_videos |
🟢 |
点赞作品 | 🟣⚫ | fetch_user_like_videos |
🟢 |
收藏夹作品 | 🟣⚫ | fetch_user_collects_videos |
🟢 |
收藏作品 | 🟣 | fetch_user_collection_videos |
🟢 |
收藏原声 | 🟣 | fetch_user_music_collection |
🟢 |
收藏合集 | 🟣 | fetch_user_mix_collection |
🔵 |
收藏短剧 | 🟣 | fetch_user_series_collection |
🟤 |
合集作品 | ⚫ | fetch_user_mix_videos |
🟢 |
首页推荐作品 | 🟣⚫ | fetch_user_feed_videos |
🟢 |
相似推荐作品 | ⚫ | fetch_related_videos |
🟢 |
直播间信息(流下载) | ⚫ | fetch_user_live_videos 、fetch_user_live_videos_by_room_id |
🟢 |
直播间弹幕负载 | ⚫ | fetch_live_im |
🟢 |
直播间弹幕 | ⚫ | fetch_user_live_danmu |
🟢 |
关注用户开播 | 🟣⚫ | fetch_user_following_lives |
🟢 |
关注用户信息 | 🟣⚫ | fetch_user_following |
🟢 |
粉丝用户信息 | 🟣⚫ | fetch_user_follower |
🟢 |
关注用户作品 | 🟣⚫ | fetch_user_following_videos |
🟤 |
粉丝用户作品 | 🟣⚫ | fetch_user_follower_videos |
🟤 |
朋友作品 | 🟣 | fetch_friend_feed_videos |
🟢 |
搜索视频 | ⚫ | fetch_search_videos |
🔵 |
搜索用户 | ⚫ | fetch_search_users |
🔵 |
搜索直播 | ⚫ | fetch_search_lives |
🔵 |
猜你想搜(相关搜索) | ⚫ | fetch_search_suggest |
🟤 |
抖音热点 | ⚫ | fetch_hot_search |
🟤 |
作品评论 | 🟣⚫ | fetch_video_comments |
🔵 |
观看历史 | 🟣 | fetch_user_history_read |
🟤 |
稍后再看 | 🟣 | fetch_user_watch_later |
🟤 |
... | ... | ... | ... |
工具类 | 类名 | 接口 | 功能状态 |
---|---|---|---|
管理客户端配置 | ClientConfManager |
🟢 | |
生成真实msToken | TokenManager |
gen_real_msToken |
🟢 |
生成虚假msToken | TokenManager |
gen_false_msToken |
🟢 |
生成ttwid | TokenManager |
gen_ttwid |
🟢 |
生成webid | TokenManager |
gen_webid |
🟢 |
生成verify_fp | VerifyFpManager |
gen_verify_fp |
🟢 |
生成s_v_web_id | VerifyFpManager |
gen_s_v_web_id |
🟢 |
生成直播signature | DouyinWebcastSignature |
get_signature |
🟢 |
使用接口模型生成直播wss签名参数 | WebcastSignatureManager |
model_2_endpoint |
🟢 |
使用接口地址生成Xb参数 | XBogusManager |
str_2_endpoint |
🟢 |
使用接口模型生成Xb参数 | XBogusManager |
model_2_endpoint |
🟢 |
使用接口地址生成Ab参数 | ABogusManager |
str_2_endpoint |
🟢 |
使用接口模型生成Ab参数 | ABogusManager |
model_2_endpoint |
🟢 |
提取单个用户id | SecUserIdFetcher |
get_sec_user_id |
🟢 |
提取列表用户id | SecUserIdFetcher |
get_all_sec_user_id |
🟢 |
提取单个作品id | AwemeIdFetcher |
get_aweme_id |
🟢 |
提取列表作品id | AwemeIdFetcher |
get_all_aweme_id |
🟢 |
提取单个合集id | MixIdFetcher |
get_mix_id |
🟢 |
提取列表合集id | MixIdFetcher |
get_all_mix_id |
🟢 |
提取单个直播间号 | WebCastIdFetcher |
get_webcast_id |
🟢 |
提取列表直播间号 | WebCastIdFetcher |
get_all_webcast_id |
🟢 |
🎶 TikTok
- 🟣 表示需要登录才可以下载仅自己可见的作品、收藏作品、收藏夹作品或点赞作品等。(登录后无视自己的私密设置、可获取个性化内容)
- ⚫ 表示不需要登录下载公开的作品、收藏夹作品、点赞作品等。(仅下载他人公开可见作品与页面)
功能 | 账号状态 | 接口 | 功能状态 |
---|---|---|---|
用户信息 | 🟣⚫ | fetch_user_profile |
🟢 |
单个作品 | 🟣⚫ | fetch_one_video |
🟢 |
主页作品 | 🟣⚫ | fetch_user_post_videos |
🟢 |
点赞作品 | 🟣⚫ | fetch_user_like_videos |
🟢 |
收藏作品 | 🟣⚫ | fetch_user_collect_videos |
🟢 |
播放列表 | 🟣⚫ | fetch_play_list |
🟢 |
播放列表作品 | 🟣⚫ | fetch_user_mix_videos |
🟢 |
作品搜索 | 🟣⚫ | fetch_search_videos |
🟢 |
直播间信息(流下载) | ⚫ | fetch_user_live_videos |
🟢 |
检查开播 | 🟣⚫ | fetch_check_live_alive |
🟢 |
... | ... | ... | ... |
📸 截图
🎬 DouYin
抖音单个作品
抖音主页作品
抖音点赞作品
抖音收藏作品
抖音收藏夹作品
抖音收藏原声
抖音合集作品
支持合集里任意作品链接解析
合集链接解析
抖音直播录制
抖音相关推荐
抖音好友作品
抖音直播弹幕
https://github.com/Johnserf-Seed/f2/assets/40727745/500d1eaf-59ba-44ba-849b-666c0ddf8469
🎬 TikTok
TikTok单个作品
TikTok主页作品
TikTok点赞作品
TikTok收藏作品
TikTok播放列表作品
TikTok作品搜索
📦 结构
📁 项目目录
.
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── LICENSE
├── README.en.md
├── README.md
├── SECURITY.md
├── babel.cfg
├── coverage.xml
├── docs
│ ├── advance-guide.md
│ ├── cli.md
│ ├── en
│ │ ├── advance-guide.md
│ │ ├── api-examples.md
│ │ ├── cli.md
│ │ ├── guide
│ │ │ └── what-is-f2.md
│ │ ├── index.md
│ │ ├── install.md
│ │ ├── markdown-examples.md
│ │ ├── quick-start.md
│ │ └── site-config.md
│ ├── guide
│ │ ├── api-examples.md
│ │ ├── apps
│ │ │ ├── douyin
│ │ │ │ └── index.md
│ │ │ ├── tiktok
│ │ │ │ └── index.md
│ │ │ ├── weibo
│ │ │ │ └── index.md
│ │ │ └── x
│ │ │ └── index.md
│ │ └── what-is-f2.md
│ ├── index.md
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── douyin
│ │ │ ├── cli-start-2.png
│ │ │ ├── cli-start.png
│ │ │ ├── code-start-2.png
│ │ │ ├── code-start.png
│ │ │ ├── log-2-console.png
│ │ │ ├── pytest-ok.png
│ │ │ └── set-debug.png
│ │ ├── f2-help.png
│ │ ├── f2-logo-with-no-shadow.png
│ │ ├── f2-logo-with-shadow-mini.png
│ │ ├── f2-logo-with-shadow-svg@0.25x.svg
│ │ ├── f2-logo-with-shadow-svg@0.5x.svg
│ │ ├── f2-logo-with-shadow-svg@0.75x.svg
│ │ ├── f2-logo-with-shadow-svg@1.0x.svg
│ │ ├── f2-logo-with-shadow-svg@1.5x.svg
│ │ ├── f2-logo-with-shadow-svg@2.0x.svg
│ │ ├── f2-logo-with-shadow.png
│ │ └── f2-logo.ico
│ ├── question-answer
│ │ └── qa.md
│ ├── quick-start.md
│ ├── reference
│ │ └── runtime-api.md
│ ├── site-config.md
│ ├── snippets
│ │ ├── QA.md
│ │ ├── douyin
│ │ │ ├── abogus.py
│ │ │ ├── aweme-id.py
│ │ │ ├── aweme-related.py
│ │ │ ├── client-config.py
│ │ │ ├── format-file-name.py
│ │ │ ├── json-2-lrc.py
│ │ │ ├── mix-id.py
│ │ │ ├── mstoken-false.py
│ │ │ ├── mstoken-real.py
│ │ │ ├── one-video.py
│ │ │ ├── query-user.py
│ │ │ ├── s_v_web_id.py
│ │ │ ├── sec-user-id.py
│ │ │ ├── show-qrcode.py
│ │ │ ├── sso-login.py
│ │ │ ├── support-link.md
│ │ │ ├── ttwid.py
│ │ │ ├── user-collection.py
│ │ │ ├── user-collects.py
│ │ │ ├── user-feed.py
│ │ │ ├── user-folder.py
│ │ │ ├── user-follow-live.py
│ │ │ ├── user-follower.py
│ │ │ ├── user-following.py
│ │ │ ├── user-friend.py
│ │ │ ├── user-get-add.py
│ │ │ ├── user-like.py
│ │ │ ├── user-live-im-fetch.py
│ │ │ ├── user-live-room-id.py
│ │ │ ├── user-live.py
│ │ │ ├── user-mix.py
│ │ │ ├── user-post.py
│ │ │ ├── user-profile.py
│ │ │ ├── verify_fp.py
│ │ │ ├── video-get-add.py
│ │ │ ├── webcast-id.py
│ │ │ ├── webcast-signature.py
│ │ │ ├── webid.py
│ │ │ └── xbogus.py
│ │ ├── set-debug.py
│ │ ├── tiktok
│ │ │ ├── aweme-id.py
│ │ │ ├── check-live-alive.py
│ │ │ ├── client-config.py
│ │ │ ├── device-id.py
│ │ │ ├── format-file-name.py
│ │ │ ├── one-video.py
│ │ │ ├── sec-uid.py
│ │ │ ├── support-link.md
│ │ │ ├── token-manager.py
│ │ │ ├── unique-id.py
│ │ │ ├── user-collect.py
│ │ │ ├── user-folder.py
│ │ │ ├── user-get-add.py
│ │ │ ├── user-like.py
│ │ │ ├── user-mix.py
│ │ │ ├── user-playlist.py
│ │ │ ├── user-post.py
│ │ │ ├── user-profile.py
│ │ │ ├── video-get-add.py
│ │ │ └── xbogus.py
│ │ ├── twitter
│ │ └── weibo
│ │ ├── user-profile.py
│ │ └── user-weibo.py
│ └── vite-.zip
├── f2
│ ├── __init__.py
│ ├── __main__.py
│ ├── apps
│ │ ├── __apps__.py
│ │ ├── __init__.py
│ │ ├── douyin
│ │ │ ├── algorithm
│ │ │ │ ├── webcast_signature.js
│ │ │ │ └── webcast_signature.py
│ │ │ ├── api.py
│ │ │ ├── cli.py
│ │ │ ├── crawler.py
│ │ │ ├── db.py
│ │ │ ├── dl.py
│ │ │ ├── filter.py
│ │ │ ├── handler.py
│ │ │ ├── help.py
│ │ │ ├── model.py
│ │ │ ├── proto
│ │ │ │ ├── douyin_webcast.proto
│ │ │ │ └── douyin_webcast_pb2.py
│ │ │ ├── test
│ │ │ │ ├── test_douyin_apps_model.py
│ │ │ │ ├── test_douyin_aweme_id.py
│ │ │ │ ├── test_douyin_crawler.py
│ │ │ │ ├── test_douyin_handler.py
│ │ │ │ ├── test_douyin_lrc.py
│ │ │ │ ├── test_douyin_room_id.py
│ │ │ │ ├── test_douyin_sec_user_id.py
│ │ │ │ ├── test_douyin_token.py
│ │ │ │ ├── test_douyin_webcast_id.py
│ │ │ │ └── test_douyin_webcast_signature.py
│ │ │ └── utils.py
│ │ ├── tiktok
│ │ │ ├── api.py
│ │ │ ├── cli.py
│ │ │ ├── crawler.py
│ │ │ ├── db.py
│ │ │ ├── dl.py
│ │ │ ├── filter.py
│ │ │ ├── handler.py
│ │ │ ├── help.py
│ │ │ ├── model.py
│ │ │ ├── test
│ │ │ │ ├── test_tiktok_crawler.py
│ │ │ │ ├── test_tiktok_device_id.py
│ │ │ │ └── test_tiktok_token.py
│ │ │ └── utils.py
│ │ ├── twitter
│ │ │ ├── api.py
│ │ │ ├── cli.py
│ │ │ ├── crawler.py
│ │ │ ├── db.py
│ │ │ ├── dl.py
│ │ │ ├── filter.py
│ │ │ ├── handler.py
│ │ │ ├── help.py
│ │ │ ├── model.py
│ │ │ ├── test
│ │ │ │ ├── test_model.py
│ │ │ │ ├── test_tweet_id.py
│ │ │ │ └── ttt.py
│ │ │ └── utils.py
│ │ └── weibo
│ │ ├── api.py
│ │ ├── cli.py
│ │ ├── crawler.py
│ │ ├── db.py
│ │ ├── dl.py
│ │ ├── filter.py
│ │ ├── handler.py
│ │ ├── help.py
│ │ ├── model.py
│ │ ├── test
│ │ │ ├── test_gen_visitor.py
│ │ │ ├── test_handler.py
│ │ │ ├── test_weibo_id.py
│ │ │ └── test_weibo_uid.py
│ │ └── utils.py
│ ├── cli
│ │ ├── __init__.py
│ │ ├── cli_commands.py
│ │ └── cli_console.py
│ ├── conf
│ │ ├── app.yaml
│ │ ├── conf.yaml
│ │ ├── defaults.yaml
│ │ └── test.yaml
│ ├── crawlers
│ │ └── base_crawler.py
│ ├── db
│ │ └── base_db.py
│ ├── dl
│ │ └── base_downloader.py
│ ├── exceptions
│ │ ├── __init__.py
│ │ ├── api_exceptions.py
│ │ ├── db_exceptions.py
│ │ └── file_exceptions.py
│ ├── helps.py
│ ├── i18n
│ │ └── translator.py
│ ├── languages
│ │ ├── en_US
│ │ │ └── LC_MESSAGES
│ │ │ └── en_US.mo
│ │ └── zh_CN
│ │ └── LC_MESSAGES
│ │ └── zh_CN.mo
│ ├── log
│ │ └── logger.py
│ └── utils
│ ├── __init__.py
│ ├── _dl.py
│ ├── _signal.py
│ ├── _singleton.py
│ ├── abogus.py
│ ├── abogus_async.py
│ ├── abogus_full.py
│ ├── conf_manager.py
│ ├── decorators.py
│ ├── json_filter.py
│ ├── utils.py
│ └── xbogus.py
├── messages.pot
├── package-lock.json
├── package.json
├── pyproject.toml
├── pytest.ini
├── tests
│ ├── test_cli_console.py
│ ├── test_desc_limit.py
│ ├── test_dl.py
│ ├── test_excetions.py
│ ├── test_i18n.py
│ ├── test_logger.py
│ ├── test_signal.py
│ ├── test_singleton.py
│ ├── test_timestamp.py
│ ├── test_utils.py
│ └── test_xbogus.py
💰 赞助商
TikHub 是一家提供优质数据接口服务的供应商。通过每日签到,可以获取免费额度。可以使用我的注册邀请链接:https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94 或 邀请码:6hLcGD94
,注册并充值即可获得$2
额度。
TikHub 提供以下服务:
- 丰富的数据接口
- 每日签到免费获取额度
- 高质量的API服务
- 官网:https://tikhub.io/
- 项目地址:https://github.com/TikHubIO/
👨💻 贡献
如果你有兴趣为F2
做拓展新应用,请查看贡献指南。
🙏 鸣谢
- Windows Terminal
- Python
- click
- rich
- httpx
- aiofiles
- aiosqlite
- jsonpath-ng
- m3u8
- pyyaml
- pytest
- browser_cookie3
- pydantic
- qrcode
- vitepress
- websockets
- protobuf
- PyExecJS
没有这些库和程序,F2
将无法实现这些功能,对于他们的贡献和努力,表示由衷的感谢。
⚖️ 协议&声明
- 请严格遵守爬虫规范,不要使用此项目进行任何违法行为。
- 不出售、共享、加密、上传、研究和传播任何个人信息。
- 项目及其相关代码仅供学习与研究使用,不构成任何明示或暗示的保证。
- 使用者因使用此项目及其代码可能造成的任何形式的损失,使用者应当自行承担一切风险。
- 请遵守Apache-2.0开源协议,不要删除或修改代码中的任何版权信息。
- 使用者不得将此项目及其代码用于任何形式的商业用途和商业行为。
- 如果使用者使用此项目及其代码,即代表使用者同意遵守上述规定。
📜 许可
Copyright (c) 2023 JohnserfSeed
📧 联系
只回答关于F2
的问题,可以通过以下方式联系我,请耐心等待,会尽快回复你。
- Mail:johnserf-seed@foxmail.com
- Discord:F2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file f2-0.0.1.6.tar.gz
.
File metadata
- Download URL: f2-0.0.1.6.tar.gz
- Upload date:
- Size: 290.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1f3ae457dcea800d3842587f29b9b83779d20b61667bfc4fc31bd0b79e1535f |
|
MD5 | 8f7ac6e4ce5a84fb8aaf343e617ffe1c |
|
BLAKE2b-256 | 72cfaedd8f6dab1510aa85a2589c79a2d145a241bb7d139de8da6f821d5e7161 |
File details
Details for the file f2-0.0.1.6-py3-none-any.whl
.
File metadata
- Download URL: f2-0.0.1.6-py3-none-any.whl
- Upload date:
- Size: 321.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f1901f1652d53eed7724a6e6a968f42135a8fb5841f28ad1ff231d1ec7c3eef |
|
MD5 | 7111d25f99206dcb7b77de35393665d2 |
|
BLAKE2b-256 | aa8ab6cc90cffa24af770845cacca220514228e31c7df9e8baf2a9315036bb2e |