一个基于Selenium的自动化TikTok视频上传器
使用此程序的前提是安装一个Selenium兼容的网络浏览器。推荐使用Google Chrome。
从python.org安装Python 3或更高版本。
使用 pip
安装 tiktok-uploader
pip install tiktok-uploader
从源码安装允许更大的灵活性来修改模块的代码以扩展默认行为。
首先, clone
并移动到存储库。然后,安装 hatch
,这是此项目使用的构建工具1。然后,build
项目。最后,使用 -e
或可编辑标志 install
项目。
git clone https://github.com/wkaisertexas/tiktok-uploader.git
cd tiktok-uploader
pip install hatch
hatch build
pip install -e .
tiktok-uploader
的工作原理是复制您浏览器的cookies,这使TikTok认为你是在一个远程控制的浏览器上登录的。
使用CLI就像使用您的path
(-v)、description
(-d)和cookies
(-c)调用tiktok-uploader
一样简单:
tiktok-uploader -v video.mp4 -d "this is my escaped \"description\"" -c cookies.txt
from tiktok_uploader.upload import upload_video, upload_videos
from tiktok_uploader.auth import AuthBackend
# 单个视频
upload_video('video.mp4',
description='this is my description',
cookies='cookies.txt')
# 多个视频
videos = [
{
'path': 'video.mp4',
'description': 'this is my description'
},
{
'path': 'video2.mp4',
'description': 'this is also my description'
}
]
auth = AuthBackend(cookies='cookies.txt')
upload_videos(videos=videos, auth=auth)
这个库围绕upload_videos
函数展开,该函数接收一个包含文件名和描述的视频列表,如下所示:
from tiktok_uploader.upload import upload_videos
from tiktok_uploader.auth import AuthBackend
videos = [
{
'video': 'video0.mp4',
'description': 'Video 1 关于 ……'
},
{
'video': 'video1.mp4',
'description': 'Video 2 关于 ……'
}
]
auth = AuthBackend(cookies='cookies.txt')
failed_videos = upload_videos(videos=videos, auth=auth)
for video in failed_videos: #每个上传失败的输入视频对象
print(f'{video['video']} with description "{video['description']}" failed')
现在只要在后面跟着空格,提及和主题标签都可以工作。然而,你作为用户有责任在发布前验证提及或主题标签是否存在。
例子:
from tiktok_uploader.upload import upload_video
upload_video('video.mp4', '#fyp @icespicee', 'cookies.txt')
要设置上传的视频是否允许接缝、评论或二人行,只需分别将 comment
、stitch
和/或 duet
作为关键词参数传递给 upload_video
或 upload_videos
。
upload_video(..., comment=True, stitch=True, duet=True)
默认情况下,允许评论,接缝和二人行。
要设置一个代理,只能在浏览器设置为chrome时工作,允许用户:密码认证。
# proxy = {'user': 'myuser', 'pass': 'mypass', 'host': '111.111.111', 'port': '99'} # user:pass
proxy = {'host': '111.111.111', 'port': '99'}
upload_video(..., proxy=proxy)
计划视频的datetime将被视为UTC时区。 计划的时间必须至少在未来的20分钟以内,最多为10天。
import datetime
schedule = datetime.datetime(2020, 12, 20, 13, 00)
upload_video(..., schedule=schedule)
认证使用浏览器的cookies。这种变通方法是由于TikTok对由Selenium控制的浏览器的身份验证持更严格的立场。
您的 sessionid
是认证所需的所有内容,可以作为参数传递给几乎任何函数。
🍪获取cookies.txt使得获取NetScape cookies格式的cookies变得容易。
安装后,在TikTok.com上打开扩展菜单,点击 🍪 获取 cookies.txt
显示您的cookies 。选择导出为⇩
,并指定位置和名称以保存。
可选的, cookies_list
是一个包含name
、value
、domain
、path
和expiry
键的字典列表,允许您传递您自己的浏览器cookies。
** 示例: **
cookies_list = [
{
'name': 'sessionid',
'value': '**your session id**',
'domain': 'https://tiktok.com',
'path': '/',
'expiry': '10/8/2023, 12:18:58 PM'
}
]
upload_video(..., cookies_list=cookies_list)
Google Chrome是TikTok上传器的首选浏览器。此包中使用的默认反检测技术是为此优化的。然而,如果您想使用不同的浏览器,您可以在 upload_video
或 upload_videos
中指定 browser
。
from tiktok_uploader.upload import upload_video
from random import choice
BROWSERS = [
'chrome',
'safari',
'chromium',
'edge',
'firefox'
]
# 随机选择一款网络浏览器
upload_video(..., browser=choice(BROWSERS))
✅ 支持的浏览器:
- Chrome (推荐使用)
- Safari
- Chromium
- Edge
- FireFox
默认应为Selenium应用了一些修改,这可以帮助它避免被TikTok检济出。
然而,你 可以 传入自定义的驱动配置选项。只需将 options
作为关键词参数传递给 upload_video
或 upload_videos
即可。
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('start-maximized')
upload_videos(..., options=options)
注意:确保使用适合您浏览器的selenium选项
无头浏览器只能在Chrome上工作。使用Chrome时,使用CLI添加 --headless
标志或将 headless
作为关键词参数传递给 upload_video
或 upload_videos
就足够了。
upload_video(..., headless=True)
upload_videos(..., headless=True)
WebDriverManager用于管理驱动版本。
在最初启动时,您可能会被提示安装所选浏览器的正确驱动程序。然而,对于Chrome 和 Edge,驱动程序会自动安装。
这个bot并不完美。虽然我并没有被正式禁止,但是在上传过多视频后,视频将无法上传。在测试中,等待几个小时就足以解决这个问题。出于这个原因,请将这个工具更多的看作是一个用于TikTok视频的定时上传器,而不是一个垃圾邮件机器。
- @C_Span - 一个分屏频道,底部是移动游戏画面,上面是来自C-Span的YouTube频道的片段
- @habit_track - 一个Reddit机器人,查看哪个SubReddit在TikTok上最火
如果你喜欢这个项目,请在GitHub上给它⭐以表达你的支持!❤️