|
3 | 3 | <a href="https://github.com/TikHubIO/TikHub-API-Python-SDK/blob/main/README.en.md">English</a> | <a href="https://github.com/TikHubIO/TikHub-API-Python-SDK/blob/main/README.md">简体中文</a>
|
4 | 4 | </div>
|
5 | 5 |
|
6 |
| -#### 简介 |
| 6 | +#### **简介** |
7 | 7 |
|
8 |
| -[TikHub](https://tikhub.io/)是一个All in one的RESTful API平台。 |
| 8 | +🎉「[TikHub.io](https://tikhub.io/)」是一个**开箱即用的集成工具以及服务的平台**,我们的目标是帮助用户快速开展业务,并且支持功能定制。我们的愿景是组建一个社区创业项目,独木难成林,合作能共赢,**每一个社区成员都有机会将他们编写的功能或接口接入我们的平台,并且从中获得收益**。我们已经积累了大量的注册用户以及社区用户,并且为了实现这一愿景,我们正在积极筹划和落实合作策略,以确保生态的持续健康发展,欢迎各位加入我们的[Discord](https://discord.gg/aMEAS8Xsvz)社区。 |
9 | 9 |
|
10 |
| -我们提供的API只能获取公开数据,即任何人都可以通过浏览器及APP等访问抖音,TikTok,小红书以获取它们。 |
| 10 | +--- |
11 | 11 |
|
12 |
| -如果您有任何建议或者需求,请联系我们,更多的功能正在开发中,敬请期待! |
| 12 | +#### **快速开始** |
13 | 13 |
|
14 |
| ---- |
| 14 | +[TikHub.io](https://tikhub.io/)的大多数API都是RESTFUL的,这意味着你只需要使用基本的HTTP请求即可完成调用。 |
| 15 | + |
| 16 | +所有的API都是基于OPenAPI规范进行编写的,这意味着你可以使用我们的`openapi.json`自动生成任何形式的API文档: |
15 | 17 |
|
16 |
| -#### 鉴权 |
| 18 | +[https://api.tikhub.io/openapi.json](https://api.tikhub.io/openapi.json) |
17 | 19 |
|
18 |
| -接口文档中带有🔒的接口需要在请求头中携带Token才可调用。 |
| 20 | +当然,我们已经默认使用了Swagger UI来展示我们的API文档,你可以在网页上打开下面的链接,然后在网页上进行API Token的认证,随后点击任意端点然后点击`Try it out`即可测试你所需要的端点,大多数端点都已经携带了默认值或演示值,这会更好的帮助你理解调用的所需参数: |
19 | 21 |
|
20 |
| -调用这些接口会使用你账户中的剩余请求次数! |
| 22 | +[https://api.tikhub.io](https://api.tikhub.io) |
21 | 23 |
|
22 | 24 | ---
|
23 | 25 |
|
24 |
| -#### 购买 |
| 26 | +#### **鉴权** |
| 27 | + |
| 28 | +> 简介 |
| 29 | +
|
| 30 | +接口文档中带有🔒图标的端点需要在请求头中携带API Token才可以调用,调用这些接口会使用你账户中的剩余免费额度或账户余额,同时每一个端点还会根据API Token所有者的email地址进行请求速率的限制,每个端点之间都有彼此独立的RPS(Requests per second),在大多数情况下,用户可以每秒请求5次同一个端点。 |
| 31 | + |
| 32 | +> 生成API Token |
| 33 | +
|
| 34 | +获取API Token的步骤也很简单,你只需要登录到我们的用户后台 [TikHub User](https://tikhub.io/users/api_keys),然后点击左侧的`API Keys`就可以生成你自己的API Token,同时,你可以自定义API Token的权限(`Scopes`),也可以设置API Token的过期日期(`Expire Date`),还可以手动暂时关闭API Token(`Status`)。 |
| 35 | + |
| 36 | +> 在API文档网页上使用 |
| 37 | +
|
| 38 | +当你完成上面的步骤后,你可以复制你的API Token,然后回到我们的Swagger UI网页,点击页面右侧的绿色`Authorize`,然后在弹窗底部的`Value`输入框中粘贴API Token即可完成鉴权。 |
25 | 39 |
|
26 |
| -Website(🚧ing): [tikhub.io](https://tikhub.io/) |
| 40 | +> 在HTTP请求中使用 |
27 | 41 |
|
28 |
| -API Document: [api.tikhub.io](https://api.tikhub.io/) |
| 42 | +如果你想在HTTP请求中携带API Token,请仔细阅读下方的格式,并且需要在请求头中携带一个叫`Authorization`的字段,下面我将给出一个JSON作为header的示范: |
29 | 43 |
|
30 |
| -Discord(Support): [https://discord.gg/kk23BGeYrJ](https://discord.gg/kk23BGeYrJ) |
| 44 | +{ |
31 | 45 |
|
32 |
| -Github: [https://github.com/TikHubIO](https://github.com/TikHubIO) |
| 46 | +"Authorization":"Bearer Your_API_Token" |
33 | 47 |
|
34 |
| -Email: [tikhub.io@proton.me](mailto:tikhub.io@proton.me) |
| 48 | +} |
| 49 | + |
| 50 | +> 备注 |
| 51 | +
|
| 52 | +请不要分享你的API Token,这可能会造成你的财产损失等一些列问题,我们强烈建议为你的每一个项目都使用不同的API Token,同时不要忘记在创建API Token时勾选对应的`Scopes`,否则在请求时会遇到权限不足的问题。 |
35 | 53 |
|
36 | 54 | ---
|
37 | 55 |
|
38 |
| -#### 公告 |
| 56 | +## **使用SDK** |
| 57 | + |
| 58 | +- 通过PyPi安装我们的[SDK](https://pypi.org/project/tikhub/) |
| 59 | + |
| 60 | +```console |
| 61 | +pip install tikhub |
| 62 | +``` |
| 63 | + |
| 64 | +- 导入SDK |
| 65 | + |
| 66 | +```python |
| 67 | +from tikhub import Client |
| 68 | +``` |
| 69 | + |
| 70 | +- 初始化Client |
| 71 | + |
| 72 | +```python |
| 73 | +client = Client(base_url="https://api.tikhub.io", |
| 74 | + api_key="YOUR_API_TOKEN", |
| 75 | + proxies=None, |
| 76 | + max_retries=3, |
| 77 | + max_connections=50, |
| 78 | + timeout=10, |
| 79 | + max_tasks=50) |
| 80 | +``` |
| 81 | + |
| 82 | +- 请求用户数据示例 |
| 83 | + |
| 84 | +```python |
| 85 | +# 请求用户信息 | Request user info |
| 86 | +user_info = await client.TikHubUser.get_user_info() |
| 87 | +print(user_info) |
| 88 | + |
| 89 | +# 请求用户每日使用情况 | Request user daily usage |
| 90 | +user_daily_usage = await client.TikHubUser.get_user_daily_usage() |
| 91 | +print(user_daily_usage) |
| 92 | + |
| 93 | +# 计算价格 | Calculate price |
| 94 | +price = await client.TikHubUser.calculate_price(endpoint="/api/v1/douyin/app/v1/fetch_one_video", request_per_day=100) |
| 95 | +print(price) |
| 96 | + |
| 97 | +# 获取阶梯式折扣百分比信息 | Get tiered discount percentage information |
| 98 | +tiered_discount_info = await client.TikHubUser.get_tiered_discount_info() |
| 99 | +print(tiered_discount_info) |
| 100 | + |
| 101 | +# 获取一个端点的信息 | Get information of an endpoint |
| 102 | +endpoint_info = await client.TikHubUser.get_endpoint_info(endpoint="/api/v1/douyin/app/v1/fetch_one_video") |
| 103 | +print(endpoint_info) |
| 104 | + |
| 105 | +# 获取所有端点信息 | Get all endpoints information |
| 106 | +all_endpoints_info = await client.TikHubUser.get_all_endpoints_info() |
| 107 | +print(all_endpoints_info) |
| 108 | +``` |
| 109 | + |
| 110 | +- Client中的可用属性 |
| 111 | + |
| 112 | +```python |
| 113 | +# TikHub |
| 114 | +self.TikHubUser = TikHubUser(self.client) |
| 115 | + |
| 116 | +# Douyin |
| 117 | +self.DouyinWeb = DouyinWeb(self.client) |
| 118 | +self.DouyinAppV1 = DouyinAppV1(self.client) |
| 119 | +self.DouyinAppV2 = DouyinAppV2(self.client) |
| 120 | +self.DouyinAppV3 = DouyinAppV3(self.client) |
| 121 | + |
| 122 | +# TikTok |
| 123 | +self.TikTokWeb = TikTokWeb(self.client) |
| 124 | +self.TikTokAppV2 = TikTokAppV2(self.client) |
| 125 | +self.TikTokAppV3 = TikTokAppV3(self.client) |
| 126 | + |
| 127 | +# Instagram |
| 128 | +self.InstagramWeb = InstagramWeb(self.client) |
| 129 | + |
| 130 | +# Weibo |
| 131 | +self.WeiboWeb = WeiboWeb(self.client) |
| 132 | +``` |
| 133 | + |
| 134 | +- 使用`DouyinAppV1`的`fetch_one_video`方法调用接口获取单一视频数据。 |
| 135 | + |
| 136 | +```python |
| 137 | +# 获取单个作品数据 | Get single video data |
| 138 | +video_data = await client.DouyinAppV1.fetch_one_video(aweme_id="7345492945006595379") |
| 139 | +print(video_data) |
| 140 | +``` |
| 141 | + |
| 142 | +- 我们已经使用HTTPX的对大多数端点进行了异步封装,如果你的代码是同步执行的,你可以使用下面的代码防止异步传染。 |
39 | 143 |
|
40 |
| -TikHub的API将使用**免费加付费**的形式运行。 |
| 144 | +```python |
| 145 | +# 使用asyncio.run防止异步传染到其他代码 | Use asyncio.run to prevent asynchronous infection to other code |
| 146 | +video_data = asyncio.run(client.DouyinAppV1.fetch_one_video(aweme_id="7345492945006595379")) |
| 147 | +print(video_data) |
| 148 | +``` |
41 | 149 |
|
42 |
| -登录后,通过签到可以随机获得50-100次API请求,每24小时可签到一次。 |
| 150 | +- 由于章节有限,在此处就不列出完整的方法了,你可以通过查看源代码的形式查看每一个属性内实现的方法,并且每个方法接受的参数都已经加上了`type hints`。 |
0 commit comments