- Notifications
You must be signed in to change notification settings - Fork53
High-performance asynchronous Douyin(抖音) TikTok Xiaohongshu(小红书) Kuaishou(快手) Weibo(微博) Instagram YouTube(油管) Twitter(X) Captcha Solver(验证码解决器) Temp Mail(临时邮箱) API(接口).
License
TikHub/TikHub-API-Python-SDK
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🎉「TikHub.io」是一个开箱即用的集成工具以及服务的平台,我们的目标是帮助用户快速开展业务,并且支持功能定制。我们的愿景是组建一个社区创业项目,独木难成林,合作能共赢,每一个社区成员都有机会将他们编写的功能或接口接入我们的平台,并且从中获得收益。我们已经积累了大量的注册用户以及社区用户,并且为了实现这一愿景,我们正在积极筹划和落实合作策略,以确保生态的持续健康发展,欢迎各位加入我们的Discord社区。
- TikHub API目前提供以下服务,并且还在不断更新中:
- 请将任何问题或错误报告给Discord服务器。
参考资料
- Swagger UI Docs:Swagger UI
- Documentation/文档:API Documentation
TikHub.io的大多数API都是RESTFUL的,这意味着你只需要使用基本的HTTP请求即可完成调用。
所有的API都是基于OPenAPI规范进行编写的,这意味着你可以使用我们的openapi.json
自动生成任何形式的API文档:
https://api.tikhub.io/openapi.json
当然,我们已经默认使用了Swagger UI来展示我们的API文档,你可以在网页上打开下面的链接,然后在网页上进行API Token的认证,随后点击任意端点然后点击Try it out
即可测试你所需要的端点,大多数端点都已经携带了默认值或演示值,这会更好的帮助你理解调用的所需参数:
简介
接口文档中带有🔒图标的端点需要在请求头中携带API Token才可以调用,调用这些接口会使用你账户中的剩余免费额度或账户余额,同时每一个端点还会根据API Token所有者的email地址进行请求速率的限制,每个端点之间都有彼此独立的RPS(Requests per second),在大多数情况下,用户可以每秒请求5次同一个端点。
生成API Token
获取API Token的步骤也很简单,你只需要登录到我们的用户后台TikHub User,然后点击左侧的API Keys
就可以生成你自己的API Token,同时,你可以自定义API Token的权限(Scopes
),也可以设置API Token的过期日期(Expire Date
),还可以手动暂时关闭API Token(Status
)。
在API文档网页上使用
当你完成上面的步骤后,你可以复制你的API Token,然后回到我们的Swagger UI网页,点击页面右侧的绿色Authorize
,然后在弹窗底部的Value
输入框中粘贴API Token即可完成鉴权。
在HTTP请求中使用
如果你想在HTTP请求中携带API Token,请仔细阅读下方的格式,并且需要在请求头中携带一个叫Authorization
的字段,下面我将给出一个JSON作为header的示范:
{
"Authorization":"Bearer Your_API_Token"
}
备注
请不要分享你的API Token,这可能会造成你的财产损失等一些列问题,我们强烈建议为你的每一个项目都使用不同的API Token,同时不要忘记在创建API Token时勾选对应的Scopes
,否则在请求时会遇到权限不足的问题。
- 通过PyPi安装我们的SDK
pip install tikhub
- 导入SDK
fromtikhubimportClient
- 初始化Client
client=Client(base_url="https://api.tikhub.io",api_key="YOUR_API_TOKEN",proxies=None,max_retries=3,max_connections=50,timeout=60,max_tasks=50)
- 请求用户数据示例
# 请求用户信息 | Request user infouser_info=awaitclient.TikHubUser.get_user_info()print(user_info)# 请求用户每日使用情况 | Request user daily usageuser_daily_usage=awaitclient.TikHubUser.get_user_daily_usage()print(user_daily_usage)# 计算价格 | Calculate priceprice=awaitclient.TikHubUser.calculate_price(endpoint="/api/v1/douyin/app/v1/fetch_one_video",request_per_day=100)print(price)# 获取阶梯式折扣百分比信息 | Get tiered discount percentage informationtiered_discount_info=awaitclient.TikHubUser.get_tiered_discount_info()print(tiered_discount_info)# 获取一个端点的信息 | Get information of an endpointendpoint_info=awaitclient.TikHubUser.get_endpoint_info(endpoint="/api/v1/douyin/app/v1/fetch_one_video")print(endpoint_info)# 获取所有端点信息 | Get all endpoints informationall_endpoints_info=awaitclient.TikHubUser.get_all_endpoints_info()print(all_endpoints_info)
- Client中的可用属性
# TikHub User | TikHub用户接口self.TikHubUser=TikHubUser(self.client)# Douyin | 抖音self.DouyinWeb=DouyinWeb(self.client)self.DouyinAppV1=DouyinAppV1(self.client)self.DouyinAppV2=DouyinAppV2(self.client)self.DouyinAppV3=DouyinAppV3(self.client)# TikTok | TikTokself.TikTokWeb=TikTokWeb(self.client)self.TikTokAppV2=TikTokAppV2(self.client)self.TikTokAppV3=TikTokAppV3(self.client)# Instagram | Instagramself.InstagramWeb=InstagramWeb(self.client)# Weibo | 微博self.WeiboWeb=WeiboWeb(self.client)# Captcha Solver | 验证码解决器self.CaptchaSolver=CaptchaSolver(self.client)# Xigua Video APP V2 | 西瓜视频APP V2self.XiguaAppV2=XiguaAppV2(self.client)# XiaoHongShu Web | 小红书网页端self.XiaohongshuWeb=XiaohongshuWeb(self.client)# KuaiShou Web | 快手网页端self.KuaishouWeb=KuaishouWeb(self.client)# YouTube Web | YouTube网页端self.YouTubeWeb=YouTubeWeb(self.client)# 网易云音乐APP | NetEase Cloud Music APPself.NetEaseCloudMusicAppV1=NetEaseCloudMusicAppV1(self.client)# Twitter Web | Twitter网页端self.TwitterWeb=TwitterWeb(self.client)# Hybrid Parsingself.HybridParsing=HybridParsing(self.client)
- 使用
DouyinAppV1
的fetch_one_video
方法调用接口获取单一视频数据。
# 导入异步io库 | Import asyncioimportasyncio# 导入tikhub | Import tikhubfromtikhubimportClient# 初始化Client | Initialize Clientclient=Client(base_url="https://api.tikhub.io",api_key="YOUR_API_TOKEN",proxies=None,max_retries=3,max_connections=50,timeout=60,max_tasks=50)if__name__=="__main__":# 获取单个作品数据 | Get single video datavideo_data=asyncio.run(client.DouyinAppV1.fetch_one_video(aweme_id="7345492945006595379"))print(video_data)
- 我们已经使用HTTPX的对大多数端点进行了异步封装,如果你的代码是同步执行的,你可以使用下面的代码防止异步传染。
# 导入异步io库 | Import asyncioimportasyncio# 导入tikhub | Import tikhubfromtikhubimportClient# 初始化Client | Initialize Clientclient=Client(base_url="https://api.tikhub.io",api_key="YOUR_API_TOKEN",proxies=None,max_retries=3,max_connections=50,timeout=60,max_tasks=50)# 获取抖音单一视频数据 | Get a single video data from Douyindeffetch_one_video(aweme_id:str):# 创建一个异步事件循环# Create an asynchronous event looploop=asyncio.get_event_loop()# 使用异步事件循环运行客户端的fetch_one_video方法,防止异步传染到其他代码。# Run the client's fetch_one_video method with the asynchronous event loop, preventing asynchronous infection to other code.try:__video_data=loop.run_until_complete(client.DouyinAppV1.fetch_one_video(aweme_id=aweme_id))return__video_dataexceptExceptionase:# 如果出现异常,返回异常信息# If an exception occurs, return the exception informationreturnstr(e)finally:# 关闭异步事件循环# Close the asynchronous eventloop.close()# 调用fetch_one_video方法 | Call the fetch_one_video methodif__name__=="__main__":video_data=fetch_one_video(aweme_id="7345492945006595379")print(video_data)
- 由于章节有限,在此处就不列出完整的方法了,你可以通过查看源代码的形式查看每一个属性内实现的方法,每一个方法的命名都是根据端点的
uri
来命名的,例如/api/v1/douyin/app/v1/fetch_one_video
的方法名就是fetch_one_video
,你可以根据API文档中的端点来查找对应的方法。 - 并且每个方法接受的参数都已经加上了
type hints
,你可以通过查看方法的参数来了解该方法需要传入的参数类型,这样可以更好的帮助你调用方法。 - 文档中可以自动帮你生成不同编程语言的代码,具体请查看API Documentation。
- 目前可以自动生成代码的编程语言有:
- Shell
- JavaScript
- Java
- Swift
- Go
- PHP
- Python
- HTTP
- C
- C#
- Objective-C
- Ruby
- OCaml
- Dart
- R
About
High-performance asynchronous Douyin(抖音) TikTok Xiaohongshu(小红书) Kuaishou(快手) Weibo(微博) Instagram YouTube(油管) Twitter(X) Captcha Solver(验证码解决器) Temp Mail(临时邮箱) API(接口).