Home

Awesome

<p align="center"> <img src="https://github.com/Johnserf-Seed/f2/raw/main/docs/public/f2-logo-with-shadow-svg@0.5x.svg" alt="Logo"> </p>

Downloads PyPI version Dev Branch Discord codecov TikHub APACHE-2.0

简体中文 readmeEnglish readme

F2 是一个 Python,提供多平台的作品下载与接口数据处理。支持抖音TikTokTwitterInstagram等平台,且方便适配更多平台。

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/82644596-7eca-48ec-91b0-3c5e4c24ee90'>

🚀 快速开始

⚙️ 安装

⚡ 快速使用

📋 配置文件

💻 命令行

📘 开发指南

🧩 调用示例

✨ 新变化

当下载或升级到F2的不同版本时,请注意以下关键的版本更新。

<details> <summary> 📡 v0.0.1.6-pw2 </summary> </details> <details> <summary> 📡 v0.0.1.5-pw2 </summary> </details>

📑 文档

F2的目标是提供一个简单易用的接口,让用户可以快速获取作品数据。 在preview版本中很多功能没有完善,如果你发现了问题,请在F2项目中提交issue项目文档还在完善中,存在滞后的情况,请保持关注。

🛠️ Q&A

常见的问题与解决办法

🗓️ Todo

🐛 更新

ChangeLog

💡 应用&功能

功能状态:🟢代表已经实现,🟡代表正在实现,🟤代表暂时不实现,🔵代表未来实现,🔴代表将会弃用。 账号状态:⚪代表未知,🟣代表需要登录(无视自己账号隐私设置),⚫代表不需要登录(游客状态能看到的)。

<details> <summary> 🎶 DouYin </summary>
功能账号状态接口功能状态
用户信息🟣⚫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_videosfetch_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🟢
生成真实msTokenTokenManagergen_real_msToken🟢
生成虚假msTokenTokenManagergen_false_msToken🟢
生成ttwidTokenManagergen_ttwid🟢
生成webidTokenManagergen_webid🟢
生成verify_fpVerifyFpManagergen_verify_fp🟢
生成s_v_web_idVerifyFpManagergen_s_v_web_id🟢
生成直播signatureDouyinWebcastSignatureget_signature🟢
使用接口模型生成直播wss签名参数WebcastSignatureManagermodel_2_endpoint🟢
使用接口地址生成Xb参数XBogusManagerstr_2_endpoint🟢
使用接口模型生成Xb参数XBogusManagermodel_2_endpoint🟢
使用接口地址生成Ab参数ABogusManagerstr_2_endpoint🟢
使用接口模型生成Ab参数ABogusManagermodel_2_endpoint🟢
提取单个用户idSecUserIdFetcherget_sec_user_id🟢
提取列表用户idSecUserIdFetcherget_all_sec_user_id🟢
提取单个作品idAwemeIdFetcherget_aweme_id🟢
提取列表作品idAwemeIdFetcherget_all_aweme_id🟢
提取单个合集idMixIdFetcherget_mix_id🟢
提取列表合集idMixIdFetcherget_all_mix_id🟢
提取单个直播间号WebCastIdFetcherget_webcast_id🟢
提取列表直播间号WebCastIdFetcherget_all_webcast_id🟢
</details> <details> <summary> 🎶 TikTok </summary>
功能账号状态接口功能状态
用户信息🟣⚫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🟢
............
</details>

📸 截图

<details> <summary> 🎬 DouYin </summary>

抖音单个作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/3e7c685e-0a0e-4d3a-a605-56eccb71c467'>

抖音主页作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/0743627d-4f03-43c9-94f0-653903382685'>

抖音点赞作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/95c588f7-45ab-4713-8102-7cd84452c0b8'>

抖音收藏作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/66951156-43df-4152-9b0c-4ee4f58a1e38'>

抖音收藏夹作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/37e2354b-3548-4ade-afa4-f8bb8108c565'>

抖音收藏原声

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/e0837eff-a7c2-4e6e-99fb-71e85ace83dc'>

抖音合集作品

支持合集里任意作品链接解析 <img src='https://github.com/Johnserf-Seed/f2/assets/40727745/fa79c123-2552-49ed-b37f-0931489dcdad'>

合集链接解析 <img src='https://github.com/Johnserf-Seed/f2/assets/40727745/1dd41daa-f375-448f-a3aa-55c14eb28d2c'>

抖音直播录制

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/c5276410-89aa-4bed-99f0-1dcf9c34cd4f'>

抖音相关推荐

<img src="https://github.com/Johnserf-Seed/f2/assets/40727745/e36fb510-39ef-486e-b944-7dbf8cf25c36">

抖音好友作品

<img src="https://github.com/Johnserf-Seed/f2/assets/40727745/437fa0ad-9524-4674-9d73-56db815113ef">

抖音直播弹幕

https://github.com/Johnserf-Seed/f2/assets/40727745/500d1eaf-59ba-44ba-849b-666c0ddf8469

</details> <details> <summary> 🎬 TikTok </summary>

TikTok单个作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/34758692-203d-4982-8c08-9efc70acee4e'>

TikTok主页作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/ddeae039-502d-4390-b35b-23147210707b'>

TikTok点赞作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/230e1443-2fa3-47a8-aaeb-4ad0977e6291'>

TikTok收藏作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/7594e664-2f24-4e82-8e8a-ed872cc4e483'>

TikTok播放列表作品

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/653d33cc-ba7f-4abf-8f6f-7c3f5a0b3cd1'>

TikTok作品搜索

<img src='https://github.com/Johnserf-Seed/f2/assets/40727745/091e66d5-f123-4883-9360-db3dad359d7d'> </details>

📦 结构

<details> <summary>📁 项目目录</summary>
.
├── 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

</details>

💰 赞助商

<a href="https://tikhub.io/"><img style="border-radius:20px" src="https://github.com/Johnserf-Seed/f2/assets/40727745/70a67dd1-dccb-44a9-b635-c29a950f1daf"></a>

TikHub 是一家提供优质数据接口服务的供应商。通过每日签到,可以获取免费额度。可以使用我的注册邀请链接:https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94 或 邀请码:6hLcGD94,注册并充值即可获得$2额度。

TikHub 提供以下服务:

👨‍💻 贡献

如果你有兴趣为F2做拓展新应用,请查看贡献指南

🙏 鸣谢

没有这些库和程序,F2将无法实现这些功能,对于他们的贡献和努力,表示由衷的感谢。

⚖️ 协议&声明

📜 许可

Apache-2.0 license

Copyright (c) 2023 JohnserfSeed

📧 联系

只回答关于F2的问题,可以通过以下方式联系我,请耐心等待,会尽快回复你。