Spaces:
Paused
Paused
Update README.md
Browse files
README.md
CHANGED
|
@@ -1,508 +1,3 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
<h1 align="center">Douyin_TikTok_Download_API(抖音/TikTok API)</h1>
|
| 5 |
-
|
| 6 |
-
<div align="center">
|
| 7 |
-
|
| 8 |
-
[English](./README.en.md) | [简体中文](./README.md)
|
| 9 |
-
|
| 10 |
-
🚀「Douyin_TikTok_Download_API」是一个开箱即用的高性能异步[抖音](https://www.douyin.com)|[TikTok](https://www.tiktok.com)|[Bilibili](https://www.bilibili.com)数据爬取工具,支持API调用,在线批量解析及下载。
|
| 11 |
-
|
| 12 |
-
[](LICENSE)
|
| 13 |
-
[](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/releases/latest)
|
| 14 |
-
[](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/stargazers)
|
| 15 |
-
[](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/network/members)
|
| 16 |
-
[](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)
|
| 17 |
-
[](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues?q=is%3Aissue+is%3Aclosed)
|
| 18 |
-

|
| 19 |
-
<br>
|
| 20 |
-
[](https://pypi.org/project/douyin-tiktok-scraper/)
|
| 21 |
-
[](https://pypi.org/project/douyin-tiktok-scraper/#files)
|
| 22 |
-
[](https://pypi.org/project/douyin-tiktok-scraper/)
|
| 23 |
-
[](https://pypi.org/project/douyin-tiktok-scraper/)
|
| 24 |
-
<br>
|
| 25 |
-
[](https://api.douyin.wtf/docs)
|
| 26 |
-
[](https://api.tikhub.io/docs)
|
| 27 |
-
<br>
|
| 28 |
-
[](https://afdian.net/@evil0ctal)
|
| 29 |
-
[](https://ko-fi.com/evil0ctal)
|
| 30 |
-
[](https://www.patreon.com/evil0ctal)
|
| 31 |
-
|
| 32 |
-
</div>
|
| 33 |
-
|
| 34 |
-
## 赞助商
|
| 35 |
-
|
| 36 |
-
这些赞助商已付费放置在这里,**Douyin_TikTok_Download_API** 项目将永远免费且开源。如果您希望成为该项目的赞助商,请查看我的 [GitHub 赞助商页面](https://github.com/sponsors/evil0ctal)。
|
| 37 |
-
|
| 38 |
-
<div align="center">
|
| 39 |
-
<a href="https://www.tikhub.io/" target="_blank">
|
| 40 |
-
<img src="https://tikhub.io/wp-content/uploads/2024/11/Main-Logo.webp" width="100" alt="TikHub.io - Global Social Data & API Marketplace">
|
| 41 |
-
</a>
|
| 42 |
-
<div>
|
| 43 |
-
<h2><b>TikHub.io</b></h2>
|
| 44 |
-
<p>Your Ultimate Social Media Data & API Marketplace</p>
|
| 45 |
-
<p>
|
| 46 |
-
Professional data solutions for Douyin, Xiaohongshu, TikTok, Instagram, YouTube,
|
| 47 |
-
Twitter, and more.<br>
|
| 48 |
-
Real-time Data | Flexible APIs | Seamless Integration | Competitive Pricing with Discounts
|
| 49 |
-
</p>
|
| 50 |
-
<p>
|
| 51 |
-
<b>Discover TikHub.io Marketplace</b><br>
|
| 52 |
-
Buy and sell custom APIs, services, and social media solutions.<br>
|
| 53 |
-
Join a thriving ecosystem of developers, businesses, and content creators.
|
| 54 |
-
</p>
|
| 55 |
-
<p><em>Trusted by leading global influencer marketing and social media intelligence platforms</em></p>
|
| 56 |
-
</div>
|
| 57 |
-
</div>
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
## 👻介绍
|
| 61 |
-
|
| 62 |
-
> 🚨如需使用私有服务器运行本项目,请参考:[部署准备工作](./README.md#%EF%B8%8F%E9%83%A8%E7%BD%B2%E5%89%8D%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C%E8%AF%B7%E4%BB%94%E7%BB%86%E9%98%85%E8%AF%BB), [Docker部署](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%BA%8C-docker), [一键部署](./README.md#%E9%83%A8%E7%BD%B2%E6%96%B9%E5%BC%8F%E4%B8%80-linux)
|
| 63 |
-
|
| 64 |
-
本项目是基于 [PyWebIO](https://github.com/pywebio/PyWebIO),[FastAPI](https://fastapi.tiangolo.com/),[HTTPX](https://www.python-httpx.org/),快速异步的[抖音](https://www.douyin.com/)/[TikTok](https://www.tiktok.com/)数据爬取工具,并通过Web端实现在线批量解析以及下载无水印视频或图集,数据爬取API,iOS快捷指令无水印下载等功能。你可以自己部署或改造本项目实现更多功能,也可以在你的项目中直接调用[scraper.py](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/scraper.py)或安装现有的[pip包](https://pypi.org/project/douyin-tiktok-scraper/)作为解析库轻松爬取数据等.....
|
| 65 |
-
|
| 66 |
-
*一些简单的运用场景:*
|
| 67 |
-
|
| 68 |
-
*下载禁止下载的视频,进行数据分析,iOS无水印下载(搭配[iOS自带的快捷指令APP](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)
|
| 69 |
-
配合本项目API实现应用内下载或读取剪贴板下载)等.....*
|
| 70 |
-
|
| 71 |
-
## 🔊 V4 版本备注
|
| 72 |
-
|
| 73 |
-
- 感兴趣一起写这个项目的给请加微信`Evil0ctal`备注github项目重构,大家可以在群里互相交流学习,不允许发广告以及违法的东西,纯粹交朋友和技术交流。
|
| 74 |
-
- 本项目使用`X-Bogus`算法以及`A_Bogus`算法请求抖音和TikTok的Web API。
|
| 75 |
-
- 由于Douyin的风控,部署完本项目后请在**浏览器中获取Douyin网站的Cookie然后在config.yaml中进行替换。**
|
| 76 |
-
- 请在提出issue之前先阅读下方的文档,大多数问题的解决方法都会包含在文档中。
|
| 77 |
-
- 本项目是完全免费的,但使用时请遵守:[Apache-2.0 license](https://github.com/Evil0ctal/Douyin_TikTok_Download_API?tab=Apache-2.0-1-ov-file#readme)
|
| 78 |
-
|
| 79 |
-
## 🔖TikHub.io API
|
| 80 |
-
|
| 81 |
-
[TikHub.io](https://api.tikhub.io/)是一个API平台,提供包括Douyin、TikTok在内的各种公开数据接口,如果您想支持 [Douyin_TikTok_Download_API](https://github.com/Evil0ctal/Douyin_TikTok_Download_API) 项目的开发,我们强烈建议您选择[TikHub.io](https://api.tikhub.io/)。
|
| 82 |
-
|
| 83 |
-
#### 特点:
|
| 84 |
-
|
| 85 |
-
> 📦 开箱即用
|
| 86 |
-
|
| 87 |
-
简化使用流程,利用封装好的SDK迅速开展开发工作。所有API接口均依据RESTful架构设计,并使用OpenAPI规范进行描述和文档化,附带示例参数,确保调用更加简便。
|
| 88 |
-
|
| 89 |
-
> 💰 成本优势
|
| 90 |
-
|
| 91 |
-
不预设套餐限制,没有月度使用门槛,所有消费按实际使用量即时计费,并且根据用户每日的请求量进行阶梯式计费,同时可以通过每日签到在用户后台进行签到获取免费的额度,并且这些免费额度不会过期。
|
| 92 |
-
|
| 93 |
-
> ⚡️ 快速支持
|
| 94 |
-
|
| 95 |
-
我们有一个庞大的Discord社区服务器,管理员和其他用户会在服务器中快速的回复你,帮助你快速解决当前的问题。
|
| 96 |
-
|
| 97 |
-
> 🎉 拥抱开源
|
| 98 |
-
|
| 99 |
-
TikHub的部分源代码会开源在Github上,并且会赞助一些开源项目的作者。
|
| 100 |
-
|
| 101 |
-
#### 链接:
|
| 102 |
-
|
| 103 |
-
- Github: [TikHub Github](https://github.com/TikHubIO)
|
| 104 |
-
- Discord: [TikHub Discord](https://discord.com/invite/aMEAS8Xsvz)
|
| 105 |
-
- Register: [TikHub signup](https://beta-web.tikhub.io/en-us/users/signup)
|
| 106 |
-
- API Docs: [TikHub API Docs](https://api.tikhub.io/)
|
| 107 |
-
|
| 108 |
-
## 🖥演示站点: 我很脆弱...请勿压测(·•᷄ࡇ•᷅ )
|
| 109 |
-
|
| 110 |
-
> 😾演示站点的在线下载功能已关闭,并且由于Cookie原因,Douyin的解析以及API服务在Demo站点无法保证可用性。
|
| 111 |
-
|
| 112 |
-
🍔Web APP: [https://douyin.wtf/](https://douyin.wtf/)
|
| 113 |
-
|
| 114 |
-
🍟API Document: [https://douyin.wtf/docs](https://douyin.wtf/docs)
|
| 115 |
-
|
| 116 |
-
🌭TikHub API Document: [https://api.tikhub.io/docs](https://api.tikhub.io/docs)
|
| 117 |
-
|
| 118 |
-
💾iOS Shortcut(快捷指令): [Shortcut release](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/discussions/104?sort=top)
|
| 119 |
-
|
| 120 |
-
📦️桌面端下载器(仓库推荐):
|
| 121 |
-
|
| 122 |
-
- [Johnserf-Seed/TikTokDownload](https://github.com/Johnserf-Seed/TikTokDownload)
|
| 123 |
-
- [HFrost0/bilix](https://github.com/HFrost0/bilix)
|
| 124 |
-
- [Tairraos/TikDown - [需更新]](https://github.com/Tairraos/TikDown/)
|
| 125 |
-
|
| 126 |
-
## ⚗️技术栈
|
| 127 |
-
|
| 128 |
-
* [/app/web](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/app/web) - [PyWebIO](https://www.pyweb.io/)
|
| 129 |
-
* [/app/api](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/app/api) - [FastAPI](https://fastapi.tiangolo.com/)
|
| 130 |
-
* [/crawlers](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/main/crawlers) - [HTTPX](https://www.python-httpx.org/)
|
| 131 |
-
|
| 132 |
-
> ***/crawlers***
|
| 133 |
-
|
| 134 |
-
- 向不同平台的API提交请求并取回数据,处理后返回字典(dict),支持异步。
|
| 135 |
-
|
| 136 |
-
> ***/app/api***
|
| 137 |
-
|
| 138 |
-
- 获得请求参数并使用`Crawlers`相关类处理数据后以JSON形式返回,视频下载,配合iOS快捷指令实现快速调用,支持异步。
|
| 139 |
-
|
| 140 |
-
> ***/app/web***
|
| 141 |
-
|
| 142 |
-
- 使用`PyWebIO`制作的简易Web程序,将网页输入的值进行处理后使用`Crawlers`相关类处理接口输出相关数据在网页上。
|
| 143 |
-
|
| 144 |
-
***以上文件的参数大多可在对应的`config.yaml`中进行修改***
|
| 145 |
-
|
| 146 |
-
## 💡项目文件结构
|
| 147 |
-
|
| 148 |
-
```
|
| 149 |
-
./Douyin_TikTok_Download_API
|
| 150 |
-
├─app
|
| 151 |
-
│ ├─api
|
| 152 |
-
│ │ ├─endpoints
|
| 153 |
-
│ │ └─models
|
| 154 |
-
│ ├─download
|
| 155 |
-
│ └─web
|
| 156 |
-
│ └─views
|
| 157 |
-
└─crawlers
|
| 158 |
-
├─bilibili
|
| 159 |
-
│ └─web
|
| 160 |
-
├─douyin
|
| 161 |
-
│ └─web
|
| 162 |
-
├─hybrid
|
| 163 |
-
├─tiktok
|
| 164 |
-
│ ├─app
|
| 165 |
-
│ └─web
|
| 166 |
-
└─utils
|
| 167 |
-
```
|
| 168 |
-
|
| 169 |
-
## ✨支持功能:
|
| 170 |
-
|
| 171 |
-
- 网页端批量解析(支持抖音/TikTok混合解析)
|
| 172 |
-
- 在线下载视频或图集。
|
| 173 |
-
- 制作[pip包](https://pypi.org/project/douyin-tiktok-scraper/)方便快速导入你的项目
|
| 174 |
-
- [iOS快捷指令快速调用API](https://apps.apple.com/cn/app/%E5%BF%AB%E6%8D%B7%E6%8C%87%E4%BB%A4/id915249334)实现应用内下载无水印视频/图集
|
| 175 |
-
- 完善的API文档([Demo/演示](https://api.douyin.wtf/docs))
|
| 176 |
-
- 丰富的API接口:
|
| 177 |
-
- 抖音网页版API
|
| 178 |
-
|
| 179 |
-
- [x] 视频数据解析
|
| 180 |
-
- [x] 获取用户主页作品数据
|
| 181 |
-
- [x] 获取用户主页喜欢作品数据
|
| 182 |
-
- [x] 获取用户主页收藏作品数据
|
| 183 |
-
- [x] 获取用户主页信息
|
| 184 |
-
- [x] 获取用户合辑作品数据
|
| 185 |
-
- [x] 获取用户直播流数据
|
| 186 |
-
- [x] 获取指定用户的直播流数据
|
| 187 |
-
- [x] 获取直播间送礼用户排行榜
|
| 188 |
-
- [x] 获取单个视频评论数据
|
| 189 |
-
- [x] 获取指定视频的评论回复数据
|
| 190 |
-
- [x] 生成msToken
|
| 191 |
-
- [x] 生成verify_fp
|
| 192 |
-
- [x] 生成s_v_web_id
|
| 193 |
-
- [x] 使用接口网址生成X-Bogus参数
|
| 194 |
-
- [x] 使用接口网址生成A_Bogus参数
|
| 195 |
-
- [x] 提取单个用户id
|
| 196 |
-
- [x] 提取列表用户id
|
| 197 |
-
- [x] 提取单个作品id
|
| 198 |
-
- [x] 提取列表作品id
|
| 199 |
-
- [x] 提取列表直播间号
|
| 200 |
-
- [x] 提取列表直播间号
|
| 201 |
-
- TikTok网页版API
|
| 202 |
-
|
| 203 |
-
- [x] 视频数据解析
|
| 204 |
-
- [x] 获取用户主页作品数据
|
| 205 |
-
- [x] 获取用户主页喜欢作品数据
|
| 206 |
-
- [x] 获取用户主页信息
|
| 207 |
-
- [x] 获取用户主页粉丝数据
|
| 208 |
-
- [x] 获取用户主页关注数据
|
| 209 |
-
- [x] 获取用户主页合辑作品数据
|
| 210 |
-
- [x] 获取用户主页搜藏数据
|
| 211 |
-
- [x] 获取用户主页播放列表数据
|
| 212 |
-
- [x] 获取单个视频评论数据
|
| 213 |
-
- [x] 获取指定视频的评论回复数据
|
| 214 |
-
- [x] 生成msToken
|
| 215 |
-
- [x] 生成ttwid
|
| 216 |
-
- [x] 使用接口网址生成X-Bogus参数
|
| 217 |
-
- [x] 提取单个用户sec_user_id
|
| 218 |
-
- [x] 提取列表用户sec_user_id
|
| 219 |
-
- [x] 提取单个作品id
|
| 220 |
-
- [x] 提取列表作品id
|
| 221 |
-
- [x] 获取用户unique_id
|
| 222 |
-
- [x] 获取列表unique_id
|
| 223 |
-
- 哔哩哔哩网页版API
|
| 224 |
-
- [x] 获取单个视频详情信息
|
| 225 |
-
- [x] 获取视频流地址
|
| 226 |
-
- [x] 获取用户发布视频作品数据
|
| 227 |
-
- [x] 获取用户所有收藏夹信息
|
| 228 |
-
- [x] 获取指定收藏夹内视频数据
|
| 229 |
-
- [x] 获取指定用户的信息
|
| 230 |
-
- [x] 获取综合热门视频信息
|
| 231 |
-
- [x] 获取指定视频的评论
|
| 232 |
-
- [x] 获取视频下指定评论的回复
|
| 233 |
-
- [x] 获取指定用户动态
|
| 234 |
-
- [x] 获取视频实时弹幕
|
| 235 |
-
- [x] 获取指定直播间信息
|
| 236 |
-
- [x] 获取直播间视频流
|
| 237 |
-
- [x] 获取指定分区正在直播的主播
|
| 238 |
-
- [x] 获取所有直播分区列表
|
| 239 |
-
- [x] 通过bv号获得视频分p信息
|
| 240 |
-
---
|
| 241 |
-
|
| 242 |
-
## 📦调用解析库(已废弃需要更新):
|
| 243 |
-
|
| 244 |
-
> 💡PyPi:[https://pypi.org/project/douyin-tiktok-scraper/](https://pypi.org/project/douyin-tiktok-scraper/)
|
| 245 |
-
|
| 246 |
-
安装解析库:`pip install douyin-tiktok-scraper`
|
| 247 |
-
|
| 248 |
-
```python
|
| 249 |
-
import asyncio
|
| 250 |
-
from douyin_tiktok_scraper.scraper import Scraper
|
| 251 |
-
|
| 252 |
-
api = Scraper()
|
| 253 |
-
|
| 254 |
-
async def hybrid_parsing(url: str) -> dict:
|
| 255 |
-
# Hybrid parsing(Douyin/TikTok URL)
|
| 256 |
-
result = await api.hybrid_parsing(url)
|
| 257 |
-
print(f"The hybrid parsing result:\n {result}")
|
| 258 |
-
return result
|
| 259 |
-
|
| 260 |
-
asyncio.run(hybrid_parsing(url=input("Paste Douyin/TikTok/Bilibili share URL here: ")))
|
| 261 |
-
```
|
| 262 |
-
|
| 263 |
-
## 🗺️支持的提交格式:
|
| 264 |
-
|
| 265 |
-
> 💡提示:包含但不仅限于以下例子,如果遇到链接解析失败请开启一个新 [issue](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/issues)
|
| 266 |
-
|
| 267 |
-
- 抖音分享口令 (APP内复制)
|
| 268 |
-
|
| 269 |
-
```text
|
| 270 |
-
7.43 pda:/ 让你在几秒钟之内记住我 https://v.douyin.com/L5pbfdP/ 复制此链接,打开Dou音搜索,直接观看视频!
|
| 271 |
-
```
|
| 272 |
-
|
| 273 |
-
- 抖音短网址 (APP内复制)
|
| 274 |
-
|
| 275 |
-
```text
|
| 276 |
-
https://v.douyin.com/L4FJNR3/
|
| 277 |
-
```
|
| 278 |
-
|
| 279 |
-
- 抖音正常网址 (网页版复制)
|
| 280 |
-
|
| 281 |
-
```text
|
| 282 |
-
https://www.douyin.com/video/6914948781100338440
|
| 283 |
-
```
|
| 284 |
-
|
| 285 |
-
- 抖音发现页网址 (APP复制)
|
| 286 |
-
|
| 287 |
-
```text
|
| 288 |
-
https://www.douyin.com/discover?modal_id=7069543727328398622
|
| 289 |
-
```
|
| 290 |
-
|
| 291 |
-
- TikTok短网址 (APP内复制)
|
| 292 |
-
|
| 293 |
-
```text
|
| 294 |
-
https://www.tiktok.com/t/ZTR9nDNWq/
|
| 295 |
-
```
|
| 296 |
-
|
| 297 |
-
- TikTok正常网址 (网页版复制)
|
| 298 |
-
|
| 299 |
-
```text
|
| 300 |
-
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
|
| 301 |
-
```
|
| 302 |
-
|
| 303 |
-
- 抖音/TikTok批量网址(无需使用符合隔开)
|
| 304 |
-
|
| 305 |
-
```text
|
| 306 |
-
https://v.douyin.com/L4NpDJ6/
|
| 307 |
-
https://www.douyin.com/video/7126745726494821640
|
| 308 |
-
2.84 nqe:/ 骑白马的也可以是公主%%百万转场变身https://v.douyin.com/L4FJNR3/ 复制此链接,打开Dou音搜索,直接观看视频!
|
| 309 |
-
https://www.tiktok.com/t/ZTR9nkkmL/
|
| 310 |
-
https://www.tiktok.com/t/ZTR9nDNWq/
|
| 311 |
-
https://www.tiktok.com/@evil0ctal/video/7156033831819037994
|
| 312 |
-
```
|
| 313 |
-
|
| 314 |
-
## 🛰️API文档
|
| 315 |
-
|
| 316 |
-
***API文档:***
|
| 317 |
-
|
| 318 |
-
本地:[http://localhost/docs](http://localhost/docs)
|
| 319 |
-
|
| 320 |
-
在线:[https://api.douyin.wtf/docs](https://api.douyin.wtf/docs)
|
| 321 |
-
|
| 322 |
-
***API演示:***
|
| 323 |
-
|
| 324 |
-
- 爬取视频数据(TikTok或Douyin混合解析)
|
| 325 |
-
`https://api.douyin.wtf/api/hybrid/video_data?url=[视频链接/Video URL]&minimal=false`
|
| 326 |
-
- 下载视频/图集(TikTok或Douyin混合解析)
|
| 327 |
-
`https://api.douyin.wtf/api/download?url=[视频链接/Video URL]&prefix=true&with_watermark=false`
|
| 328 |
-
|
| 329 |
-
***更多演示请查看文档内容......***
|
| 330 |
-
|
| 331 |
-
## ⚠️部署前的准备工作(请仔细阅读):
|
| 332 |
-
|
| 333 |
-
- 你需要自行解决爬虫Cookie风控问题,否则可能会导致接口无法使用,修改完配置文件后需要重启服务才能生效,并且最好使用已经登录过的账号的Cookie。
|
| 334 |
-
- 抖音网页端Cookie(自行获取并替换下面配置文件中的Cookie):
|
| 335 |
-
- https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/30e56e5a7f97f87d60b1045befb1f6db147f8590/crawlers/douyin/web/config.yaml#L7
|
| 336 |
-
- TikTok网页端Cookie(自行获取并替换下面配置文件中的Cookie):
|
| 337 |
-
- https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/30e56e5a7f97f87d60b1045befb1f6db147f8590/crawlers/tiktok/web/config.yaml#L6
|
| 338 |
-
- 演示站点的在线下载功能被我关掉了,有人下的视频巨大无比直接给我服务器干崩了,你可以在网页解析结果页面右键保存视频...
|
| 339 |
-
- 演示站点的Cookie是我自己的,不保证长期有效,只起到演示作用,自己部署的话请自行获取Cookie。
|
| 340 |
-
- 需要TikTok Web API返回的视频链接直接访问会发生HTTP 403错误,请使用本项目API中的`/api/download`接口对TikTok 视频进行下载,这个接口在演示站点中已经被手动关闭了,需要你自行部署本项目。
|
| 341 |
-
- 这里有一个**视频教程**可以参考:***[https://www.bilibili.com/video/BV1vE421j7NR/](https://www.bilibili.com/video/BV1vE421j7NR/)***
|
| 342 |
-
|
| 343 |
-
## 💻部署(方式一 Linux)
|
| 344 |
-
|
| 345 |
-
> 💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。
|
| 346 |
-
|
| 347 |
-
推荐大家使用[Digitalocean](https://www.digitalocean.com/)的服务器,因为可以白嫖。
|
| 348 |
-
|
| 349 |
-
使用我的邀请链接注册,你可以获得$200的credit,当你在上面消费$25时,我也可以获得$25的奖励。
|
| 350 |
-
|
| 351 |
-
我的邀请链接:
|
| 352 |
-
|
| 353 |
-
[https://m.do.co/c/9f72a27dec35](https://m.do.co/c/9f72a27dec35)
|
| 354 |
-
|
| 355 |
-
> 使用脚本一键部署本项目
|
| 356 |
-
|
| 357 |
-
- 本项目提供了一键部署脚本,可以在服务器上快速部署本项目。
|
| 358 |
-
- 脚本是在Ubuntu 20.04 LTS上测试的,其他系统可能会有问题,如果有问题请自行解决。
|
| 359 |
-
- 使用wget命令下载[install.sh](https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/bash/install.sh)至服务器并运行
|
| 360 |
-
|
| 361 |
-
```
|
| 362 |
-
wget -O install.sh https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/main/bash/install.sh && sudo bash install.sh
|
| 363 |
-
```
|
| 364 |
-
|
| 365 |
-
> 开启/停止服务
|
| 366 |
-
|
| 367 |
-
- 使用以下命令来控制服务的运行或停止:
|
| 368 |
-
- `sudo systemctl start Douyin_TikTok_Download_API.service`
|
| 369 |
-
- `sudo systemctl stop Douyin_TikTok_Download_API.service`
|
| 370 |
-
|
| 371 |
-
> 开启/关闭开机自动运行
|
| 372 |
-
|
| 373 |
-
- 使用以下命令来设置服务开机自动运行或取消开机自动运行:
|
| 374 |
-
- `sudo systemctl enable Douyin_TikTok_Download_API.service`
|
| 375 |
-
- `sudo systemctl disable Douyin_TikTok_Download_API.service`
|
| 376 |
-
|
| 377 |
-
> 更新项目
|
| 378 |
-
|
| 379 |
-
- 项目更新时,确保更新脚本在虚拟环境中执行,更新所有依赖。进入项目bash目录并运行update.sh:
|
| 380 |
-
- `cd /www/wwwroot/Douyin_TikTok_Download_API/bash && sudo bash update.sh`
|
| 381 |
-
|
| 382 |
-
## 💽部署(方式二 Docker)
|
| 383 |
-
|
| 384 |
-
> 💡提示:Docker部署是最简单的部署方式,适合不熟悉Linux的用户,这种方法适合保证环境一致性、隔离性和快速设置。
|
| 385 |
-
> 请使用能正常访问Douyin或TikTok的服务器,否则可能会出现奇怪的BUG。
|
| 386 |
-
|
| 387 |
-
### 准备工作
|
| 388 |
-
|
| 389 |
-
开始之前,请确保您的系统已安装Docker。如果还未安装Docker,可以从[Docker官方网站](https://www.docker.com/products/docker-desktop/)下载并安装。
|
| 390 |
-
|
| 391 |
-
### 步骤1:拉取Docker镜像
|
| 392 |
-
|
| 393 |
-
首先,从Docker Hub拉取最新的Douyin_TikTok_Download_API镜像。
|
| 394 |
-
|
| 395 |
-
```bash
|
| 396 |
-
docker pull evil0ctal/douyin_tiktok_download_api:latest
|
| 397 |
-
```
|
| 398 |
-
|
| 399 |
-
如果需要,可以替换`latest`为你需要部署的具体版本标签。
|
| 400 |
-
|
| 401 |
-
### 步骤2:运行Docker容器
|
| 402 |
-
|
| 403 |
-
拉取镜像后,您可以从此镜像启动一个容器。以下是运行容器的命令,包括基本配置:
|
| 404 |
-
|
| 405 |
-
```bash
|
| 406 |
-
docker run -d --name douyin_tiktok_api -p 80:80 evil0ctal/douyin_tiktok_download_api
|
| 407 |
-
```
|
| 408 |
-
|
| 409 |
-
这个命令的每个部分作用如下:
|
| 410 |
-
|
| 411 |
-
* `-d`:在后台运行容器(分离模式)。
|
| 412 |
-
* `--name douyin_tiktok_api `:将容器命名为`douyin_tiktok_api `。
|
| 413 |
-
* `-p 80:80`:将主机上的80端口映射到容器的80端口。根据您的配置或端口可用性调整端口号。
|
| 414 |
-
* `evil0ctal/douyin_tiktok_download_api`:要使用的Docker镜像名称。
|
| 415 |
-
|
| 416 |
-
### 步骤3:验证容器是否运行
|
| 417 |
-
|
| 418 |
-
使用以下命令检查您的容器是否正在运行:
|
| 419 |
-
|
| 420 |
-
```bash
|
| 421 |
-
docker ps
|
| 422 |
-
```
|
| 423 |
-
|
| 424 |
-
这将列出所有活动容器。查找`douyin_tiktok_api `以确认其正常运行。
|
| 425 |
-
|
| 426 |
-
### 步骤4:访问应用程序
|
| 427 |
-
|
| 428 |
-
容器运行后,您应该能够通过`http://localhost`或API客户端访问Douyin_TikTok_Download_API。如果配置了不同的端口或从远程位置访问,请调整URL。
|
| 429 |
-
|
| 430 |
-
### 可选:自定义Docker命令
|
| 431 |
-
|
| 432 |
-
对于更高级的部署,您可能希望自定义Docker命令,包括环境变量、持久数据的卷挂载或其他Docker参数。这是一个示例:
|
| 433 |
-
|
| 434 |
-
```bash
|
| 435 |
-
docker run -d --name douyin_tiktok_api -p 80:80 \
|
| 436 |
-
-v /path/to/your/data:/data \
|
| 437 |
-
-e MY_ENV_VAR=my_value \
|
| 438 |
-
evil0ctal/douyin_tiktok_download_api
|
| 439 |
-
```
|
| 440 |
-
|
| 441 |
-
* `-v /path/to/your/data:/data`:将主机上的`/path/to/your/data`目录挂载到容器的`/data`目录,用于持久化或共享数据。
|
| 442 |
-
* `-e MY_ENV_VAR=my_value`:在容器内设置环境变量`MY_ENV_VAR`,其值为`my_value`。
|
| 443 |
-
|
| 444 |
-
### 配置文件修改
|
| 445 |
-
|
| 446 |
-
项目的大部分配置可以在以下几个目录中的`config.yaml`文件进行修改:
|
| 447 |
-
|
| 448 |
-
* `/crawlers/douyin/web/config.yaml`
|
| 449 |
-
* `/crawlers/tiktok/web/config.yaml`
|
| 450 |
-
* `/crawlers/tiktok/app/config.yaml`
|
| 451 |
-
|
| 452 |
-
### 步骤5:停止并移除容器
|
| 453 |
-
|
| 454 |
-
需要停止和移除容器时,使用以下命令:
|
| 455 |
-
|
| 456 |
-
```bash
|
| 457 |
-
# Stop
|
| 458 |
-
docker stop douyin_tiktok_api
|
| 459 |
-
|
| 460 |
-
# Remove
|
| 461 |
-
docker rm douyin_tiktok_api
|
| 462 |
-
```
|
| 463 |
-
|
| 464 |
-
## 📸截图
|
| 465 |
-
|
| 466 |
-
***API速度测试(对比官方API)***
|
| 467 |
-
|
| 468 |
-
<details><summary>🔎点击展开截图</summary>
|
| 469 |
-
|
| 470 |
-
抖音官方API:
|
| 471 |
-

|
| 472 |
-
|
| 473 |
-
本项目API:
|
| 474 |
-

|
| 475 |
-
|
| 476 |
-
TikTok官方API:
|
| 477 |
-

|
| 478 |
-
|
| 479 |
-
本项目API:
|
| 480 |
-

|
| 481 |
-
|
| 482 |
-
</details>
|
| 483 |
-
<hr>
|
| 484 |
-
|
| 485 |
-
***项目界面***
|
| 486 |
-
|
| 487 |
-
<details><summary>🔎点击展开截图</summary>
|
| 488 |
-
|
| 489 |
-
Web主界面:
|
| 490 |
-
|
| 491 |
-

|
| 492 |
-
|
| 493 |
-
Web main interface:
|
| 494 |
-
|
| 495 |
-

|
| 496 |
-
|
| 497 |
-
</details>
|
| 498 |
-
<hr>
|
| 499 |
-
|
| 500 |
-
## 📜 Star历史
|
| 501 |
-
|
| 502 |
-
[](https://star-history.com/#Evil0ctal/Douyin_TikTok_Download_API&Timeline)
|
| 503 |
-
|
| 504 |
-
[Apache-2.0 license](https://github.com/Evil0ctal/Douyin_TikTok_Download_API/blob/Stable/LICENSE)
|
| 505 |
-
|
| 506 |
-
> Start: 2021/11/06
|
| 507 |
-
|
| 508 |
-
> GitHub: [@Evil0ctal](https://github.com/Evil0ctal)
|
|
|
|
| 1 |
+
title: My Docker Space
|
| 2 |
+
sdk: docker
|
| 3 |
+
# 其他可能的配置
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|