Skip to main content

🚀Asynchronous based full-platform download tool

Project description

Logo

Downloads PyPI version Dev Branch Discord codecov TikHub APACHE-2.0

简体中文 readmeEnglish readme

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

🚀 快速开始

⚙️ 安装

⚡ 快速使用

📋 配置文件

💻 命令行

📘 开发指南

🧩 调用示例

✨ 新变化

当下载或升级到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
  • 0.0.1.5XBogus参数支持了自定义UA,请注意UA规范。
  • 重建的数据库包含接口的原始数据,所以你需要删除旧的数据库文件。如果你想保留记录请注意迁移。
  • 所有的fetch方法返回的类型已统一为过滤器类型,所以你需要注意这个变化。
  • 过滤器添加了_to_raw方法,可以将过滤器转换为原始接口数据。
  • 文件名模板已经更新,如果你的文件名不符合规范,将会抛出异常。
  • douyin合集页链接无法解析的查看抖音合集作品
  • 更多变化查看ChangeLog

📑 文档

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

🛠️ Q&A

常见的问题与解决办法

🗓️ Todo

  • 将在0.0.1.7版本中添加本地转发功能。
  • 将在0.0.1.7版本中添加更多douyintiktokweibox的接口。
  • 将在0.0.1.7版本中修复x已知的问题。

🐛 更新

ChangeLog

💡 应用&功能

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

🎶 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_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 🟢
生成真实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 提供以下服务:

👨‍💻 贡献

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

🙏 鸣谢

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

⚖️ 协议&声明

  • 请严格遵守爬虫规范,不要使用此项目进行任何违法行为。
  • 不出售、共享、加密、上传、研究和传播任何个人信息。
  • 项目及其相关代码仅供学习与研究使用,不构成任何明示或暗示的保证。
  • 使用者因使用此项目及其代码可能造成的任何形式的损失,使用者应当自行承担一切风险。
  • 请遵守Apache-2.0开源协议,不要删除或修改代码中的任何版权信息。
  • 使用者不得将此项目及其代码用于任何形式的商业用途和商业行为。
  • 如果使用者使用此项目及其代码,即代表使用者同意遵守上述规定。

📜 许可

Apache-2.0 license

Copyright (c) 2023 JohnserfSeed

📧 联系

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

f2-0.0.1.6.tar.gz (290.1 kB view hashes)

Uploaded Source

Built Distribution

f2-0.0.1.6-py3-none-any.whl (321.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page