# f2 **Repository Path**: zklock/f2 ## Basic Information - **Project Name**: f2 - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dependabot/github_actions/actions/checkout-4 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-12 - **Last Updated**: 2024-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Logo

[![Downloads](https://pepy.tech/badge/f2/month)](https://pepy.tech/project/f2) [![PyPI version](https://badge.fury.io/py/f2.svg)](https://badge.fury.io/py/f2) [![Dev Branch](https://badgen.net/badge/branch/v0.0.1.6-pw2/blue)](https://github.com/Johnserf-Seed/f2/tree/v0.0.1.6-pw2) [![Discord](https://img.shields.io/discord/1146473603450282004?label=Discord)](https://discord.gg/3PhtPmgHf8) [![codecov](https://codecov.io/gh/Johnserf-Seed/f2/graph/badge.svg?token=T9DH4QPZSS)](https://codecov.io/gh/Johnserf-Seed/f2) [![TikHub](https://img.shields.io/badge/Sponsor-TikHub-orange?style=flat-square&logo=tiktok)](https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94) [![APACHE-2.0](https://img.shields.io/github/license/johnserf-seed/f2)](https://github.com/Johnserf-Seed/f2/blob/main/LICENSE) [đŸ‡¨đŸ‡ŗ įŽ€äŊ“中文 readme](https://github.com/Johnserf-Seed/f2/blob/main/README.md) â€ĸ [đŸ‡Ŧ🇧 English readme](https://github.com/Johnserf-Seed/f2/blob/main/README.en.md) `F2` is a [`Python` library](https://pypi.org/project/f2/) that provides multi-platform content downloading and API data processing. It supports platforms like `DouYin`, `TikTok`, `Twitter`, `Instagram`, and is easily adaptable to more platforms. ## 🚀 Quick Start ### âš™ī¸ Installation - [Prerequisites](https://johnserf-seed.github.io/f2/install.html#%E5%BF%85%E5%A4%87%E6%9D%A1%E4%BB%B6) - [Package Manager Installation](https://johnserf-seed.github.io/f2/install.html#%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8%E5%AE%89%E8%A3%85) - [Compiled Installation](https://johnserf-seed.github.io/f2/install.html#%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85) ### ⚡ Quick Use - [Startup and Execution](https://johnserf-seed.github.io/f2/quick-start.html#%E5%90%AF%E5%8A%A8%E5%92%8C%E8%BF%90%E8%A1%8C) ### 📋 Configuration File - [Main Configuration File (Frequent)](https://johnserf-seed.github.io/f2/site-config.html#%E4%B8%BB%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6) - [Initialize Configuration File](https://johnserf-seed.github.io/f2/site-config.html#%E5%88%9D%E5%A7%8B%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6) - [Custom Configuration File](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) - [Cookie Configuration](https://johnserf-seed.github.io/f2/site-config.html#%E9%85%8D%E7%BD%AEcookie) - [Configuration File Location](https://johnserf-seed.github.io/f2/site-config.html#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%9A%84%E4%BD%8D%E7%BD%AE) ### đŸ’ģ Command Line - [CLI Temporary Configuration](https://johnserf-seed.github.io/f2/cli.html#cli%E4%B8%B4%E6%97%B6%E9%85%8D%E7%BD%AE) ### 📘 Developer Guide - [A Must-Read for Developers](https://johnserf-seed.github.io/f2/guide/what-is-f2.html) ### 🧩 Calling Examples - [DouYin](https://johnserf-seed.github.io/f2/guide/apps/douyin/) - [TikTok](https://johnserf-seed.github.io/f2/guide/apps/tiktok/) ## ✨ New Changes When downloading or upgrading to a different version of `F2`, please note the following critical version updates.
📡 v0.0.1.6-pw2 - The configuration file format has been updated. If you are using an old configuration file, please migrate accordingly. - The default timezone for all timestamps is now (`UTC/GMT+08:00`). - The `douyin` live stream filenames have been adjusted to `flv`, and albums have been reverted to `webp`. - The 403 error for `tiktok` video URLs has been fixed. [Solution for TikTok video URL 403](https://johnserf-seed.github.io/f2/question-answer/qa.html#tiktok-403-forbidden) - `douyin` now defaults to using the `ab` algorithm for requests. (The full-powered ab algorithm will be open-sourced later). - For more changes, see [ChangeLog](https://github.com/Johnserf-Seed/f2/blob/main/CHANGELOG.md#0015---2024-04-04).
📡 v0.0.1.5-pw2 - `XBogus` parameter in `0.0.1.5` version now supports custom User-Agent (UA), please pay attention to UA specification. - The rebuilt database contains original data of interfaces, so you need to delete the old database file. If you want to retain records, please pay attention to migration. - The return types of all `fetch` methods have been unified to filter types, so you need to pay attention to this change. - Filter has added the `_to_raw` method, which can convert the filter to original interface data. - The file name template has been updated, and if your file name does not meet the specifications, an exception will be thrown. - `douyin` collection page links cannot be resolved, see [Douyin Collection Works](#æŠ–éŸŗåˆé›†äŊœå“). - For more changes, see [ChangeLog](https://github.com/Johnserf-Seed/f2/blob/main/CHANGELOG.md#0015---2024-04-04).
## 📑 Documentation The goal of `F2` is to provide a simple and easy-to-use interface for users to quickly obtain content data. Many features are not fully developed in the `preview` version. If you find any issues, please submit an `issue` in the `F2` project. The [project documentation](https://johnserf-seed.github.io/f2/) is still being improved, and there may be delays, so please stay tuned. ## đŸ› ī¸ Q&A [Common Questions and Solutions](https://johnserf-seed.github.io/f2/question-answer/qa.html) ## đŸ—“ī¸ Todo - Local forwarding functionality will be added in version `0.0.1.7`. - More interfaces for `douyin`, `tiktok`, `weibo`, and `x` will be added in version `0.0.1.7`. - Known issues with `x` will be fixed in version `0.0.1.7`. ## 🐛 Updates [ChangeLog](https://github.com/Johnserf-Seed/f2/blob/main/CHANGELOG.md) ## 💡 Applications & Features Feature status: đŸŸĸ Represents implemented, 🟡 Represents being implemented, 🟤 Represents temporarily not implemented, đŸ”ĩ Represents future implementation, 🔴 Represents deprecation. Account status: âšĒ Represents unknown, đŸŸŖ Represents login required (ignores own account privacy settings), âšĢ Represents not login required (visible to guests only).
đŸŽļ DouYin - đŸŸŖ Indicates that login is required to download works that are only visible to oneself, favorited works, works in collection folders, or liked works. (After login, ignores own privacy settings and obtains personalized content) - âšĢ Indicates that login is not required to download public works, works in collection folders, liked works, etc. (Only downloads works visible to others and pages) | Feature | Account Status | API | Status | | --- | --- | --- | --- | | User Information | đŸŸŖâšĢ | `fetch_user_profile` | đŸŸĸ | | Single Video (Video, Album, Daily) | đŸŸŖâšĢ | `fetch_one_video` | đŸŸĸ | | Homepage Videos | đŸŸŖâšĢ | `fetch_user_post_videos` | đŸŸĸ | | Liked Videos | đŸŸŖâšĢ | `fetch_user_like_videos` | đŸŸĸ | | Collection Folder Videos | đŸŸŖâšĢ | `fetch_user_collects_videos` | đŸŸĸ | | Collected Videos | đŸŸŖ | `fetch_user_collection_videos` | đŸŸĸ | | Collected Music | đŸŸŖ | `fetch_user_music_collection` | đŸŸĸ | | Collected Playlist | đŸŸŖ | `fetch_user_mix_collection` | đŸ”ĩ | | Collected Series | đŸŸŖ | `fetch_user_series_collection` | 🟤 | | Playlist Videos | âšĢ | `fetch_user_mix_videos` | đŸŸĸ | | Recommended Videos | đŸŸŖâšĢ | `fetch_user_feed_videos` | đŸŸĸ | | Related Videos | âšĢ | `fetch_related_videos` | đŸŸĸ | | Live Room Information (Stream Download) | âšĢ | `fetch_user_live_videos`, `fetch_user_live_videos_by_room_id` | đŸŸĸ | | Live Room Load | âšĢ | `fetch_live_im` | đŸŸĸ | | Live Room Danmaku | âšĢ | `fetch_user_live_danmu` | đŸŸĸ | | Followed Users Live | đŸŸŖâšĢ | `fetch_user_following_lives` | đŸŸĸ | | Followed Users Information | đŸŸŖâšĢ | `fetch_user_following` | đŸŸĸ | | Followers Information | đŸŸŖâšĢ | `fetch_user_follower` | đŸŸĸ | | Followed Users Videos | đŸŸŖâšĢ | `fetch_user_following_videos` | 🟤 | | Followers Videos | đŸŸŖâšĢ | `fetch_user_follower_videos` | 🟤 | | Friends' Videos | đŸŸŖ | `fetch_friend_feed_videos` | đŸŸĸ | | Search Videos | âšĢ | `fetch_search_videos` | đŸ”ĩ | | Search Users | âšĢ | `fetch_search_users` | đŸ”ĩ | | Search Live | âšĢ | `fetch_search_lives` | đŸ”ĩ | | Search Suggestions | âšĢ | `fetch_search_suggest` | 🟤 | | Douyin Hot Search | âšĢ | `fetch_hot_search` | 🟤 | | Video Comments | đŸŸŖâšĢ | `fetch_video_comments` | đŸ”ĩ | | Watch History | đŸŸŖ | `fetch_user_history_read` | 🟤 | | Watch Later | đŸŸŖ | `fetch_user_watch_later` | 🟤 | | ... | ... | ... | ... | | Tool | Class | API | Status | | --- | --- | --- | --- | | Manage Client Configuration | `ClientConfManager` | | đŸŸĸ | | Generate Real msToken | `TokenManager` | `gen_real_msToken` | đŸŸĸ | | Generate Fake msToken | `TokenManager` | `gen_false_msToken` | đŸŸĸ | | Generate ttwid | `TokenManager` | `gen_ttwid` | đŸŸĸ | | Generate webid | `TokenManager` | `gen_webid` | đŸŸĸ | | Generate verify_fp | `VerifyFpManager` | `gen_verify_fp` | đŸŸĸ | | Generate s_v_web_id | `VerifyFpManager` | `gen_s_v_web_id` | đŸŸĸ | | Generate Live Signature | `DouyinWebcastSignature` | `get_signature` | đŸŸĸ | | Generate wss Signature Parameters from API Model | `WebcastSignatureManager` | `model_2_endpoint` | đŸŸĸ | | Generate Xb Parameters from API URL | `XBogusManager` | `str_2_endpoint` | đŸŸĸ | | Generate Xb Parameters from API Model | `XBogusManager` | `model_2_endpoint` | đŸŸĸ | | Generate Ab Parameters from API URL | `ABogusManager` | `str_2_endpoint` | đŸŸĸ | | Generate Ab Parameters from API Model | `ABogusManager` | `model_2_endpoint` | đŸŸĸ | | Extract Single User ID | `SecUserIdFetcher` | `get_sec_user_id` | đŸŸĸ | | Extract User IDs from List | `SecUserIdFetcher` | `get_all_sec_user_id` | đŸŸĸ | | Extract Single Video ID | `AwemeIdFetcher` | `get_aweme_id` | đŸŸĸ | | Extract Video IDs from List | `AwemeIdFetcher` | `get_all_aweme_id` | đŸŸĸ | | Extract Single Playlist ID | `MixIdFetcher` | `get_mix_id` | đŸŸĸ | | Extract Playlist IDs from List | `MixIdFetcher` | `get_all_mix_id` | đŸŸĸ | | Extract Single Live Room ID | `WebCastIdFetcher` | `get_webcast_id` | đŸŸĸ | | Extract Live Room IDs from List | `WebCastIdFetcher` | `get_all_webcast_id` | đŸŸĸ |
đŸŽļ TikTok - đŸŸŖ Indicates that login is required to download works that are only visible to oneself, favorited works, works in collection folders, or liked works. (After login, ignores own privacy settings and obtains personalized content) - âšĢ Indicates that login is not required to download public works, works in collection folders, liked works, etc. (Only downloads works visible to others and pages) | Feature | Account Status | Interface | Feature Status | | --- | --- | --- | --- | | User Information | đŸŸŖâšĢ | `fetch_user_profile` | đŸŸĸ | | Single Work | đŸŸŖâšĢ | `fetch_one_video` | đŸŸĸ | | Home Page Works | đŸŸŖâšĢ | `fetch_user_post_videos` | đŸŸĸ | | Liked Works | đŸŸŖâšĢ | `fetch_user_like_videos` | đŸŸĸ | | Favorite Works | đŸŸŖâšĢ | `fetch_user_collect_videos` | đŸŸĸ | | Playlist | đŸŸŖâšĢ | `fetch_play_list` | đŸŸĸ | | Playlist Works | đŸŸŖâšĢ | `fetch_user_mix_videos` | đŸŸĸ | | Post Search|đŸŸŖâšĢ|`fetch_search_videos`|đŸŸĸ| | Live Room Information (Stream Download) |âšĢ|`fetch_user_live_videos`|đŸŸĸ| | Check If The webcast Is Alive|đŸŸŖâšĢ|`fetch_check_live_alive`|đŸŸĸ| | ... | ... | ... | ... |
## 📸 Screenshots
đŸŽŦ DouYin ### DouYin Single Work ### DouYin Home Page Works ### DouYin Liked Works ### DouYin Favorite Works ### DouYin Collection Works ### DouYin Collected Original Sound ### DouYin Collection Works Support for parsing any work link in the collection Collection link parsing ### DouYin Hotspot ### DouYin Live Room Information ### DouYin Live Room Danmaku ### DouYin Related Videos ### DouYin Friend Videos ### DouYin Webcast Danmaku https://github.com/Johnserf-Seed/f2/assets/40727745/500d1eaf-59ba-44ba-849b-666c0ddf8469
đŸŽŦ TikTok ### TikTok Single Work ### TikTok Home Page Works ### TikTok Liked Works ### TikTok Favorite Works ### TikTok Collection Works ### TikTok Collected Original Sound ### TikTok Post Search
## đŸ“Ļ Structures
📁 Project Catalogs ```bash . ├── 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 ```
## 💰 Sponsor [TikHub](https://tikhub.io/) is a provider of premium data interface services. You can get free credits by signing up daily. You can use my signup invite link: [https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94](https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94) or Invitation code: `6hLcGD94` to get `$2` credit by signing up and recharging. [TikHub](https://tikhub.io/) offers the following services: - Rich data interface - Sign up daily to get free credits - High quality API service - Official website: https://tikhub.io/ - Project address: https://github.com/TikHubIO/ ## 👨‍đŸ’ģ Contributions If you are interested in extending new applications for `F2`, please refer to the [contribution guidelines](https://github.com/Johnserf-Seed/f2/blob/main/.github/CONTRIBUTING.md). ## 🙏 Acknowledgements - [Windows Terminal](https://aka.ms/terminal) - [Python](https://www.python.org/) - [click](https://github.com/pallets/click) - [rich](https://github.com/Textualize/rich) - [httpx](https://github.com/encode/httpx) - [aiofiles](https://github.com/Tinche/aiofiles) - [aiosqlite](https://github.com/omnilib/aiosqlite) - [jsonpath-ng](https://github.com/h2non/jsonpath-ng) - [m3u8](https://github.com/globocom/m3u8) - [pyyaml](https://github.com/yaml/pyyaml) - [pytest](https://github.com/pytest-dev/pytest) - [browser_cookie3](https://github.com/borisbabic/browser_cookie3) - [pydantic](https://github.com/samuelcolvin/pydantic) - [qrcode](https://github.com/lincolnloop/python-qrcode) - [vitepress](https://github.com/vuejs/vitepress) - [websockets](https://github.com/python-websockets/websockets) - [protobuf](https://github.com/protocolbuffers/protobuf) - [PyExecJS](https://github.com/doloopwhile/PyExecJS) Without these libraries and programs, `F2` would not be able to achieve these functionalities. Sincere thanks for their contributions and efforts. ## âš–ī¸ License & Disclaimer - **Please strictly comply with the web scraping standards and do not engage in any illegal activities using this project.** - **Do not sell, share, encrypt, upload, research, or disseminate any personal information.** - **The project and its related code are for learning and research purposes only and do not constitute any express or implied warranties.** - **Users should bear all risks arising from the use of this project and its code.** - **Please comply with the Apache-2.0 open-source license and do not delete or modify any copyright information in the code.** - **Users are not allowed to use this project and its code for any form of commercial purposes and commercial activities.** - **By using this project and its code, users agree to abide by the above rules.** ## 📜 License [Apache-2.0 license](https://www.apache.org/licenses/LICENSE-2.0.html) Copyright (c) 2023 JohnserfSeed ## 📧 Contact I only answer questions about `F2`. You can contact me through the following methods. Please be patient, and I will reply to you as soon as possible. - Mail: [johnserf-seed@foxmail.com](mailto:johnserf-seed@foxmail.com) - Discord: [F2](https://discord.gg/3PhtPmgHf8)