抖音图文动态发布脚本开发记录
在对应位置添加平台
在 src/sync/dynamic.ts
文件中注册 Douyin
平台的动态发布。
injectUrl 是抖音图文动态发布页面,我们之后的脚本会在这个页面进行执行。其中 default-tab=3 是图文动态发布页面。
我们在开发脚本的时候应该尽可能减少脚本方面的操作。例如在本例中,抖音的实际发布页面可以是 https://creator.douyin.com/creator-micro/content/upload
,但是这样进去的默认发布页面是视频发布页面,而不是图文发布页面,需要在脚本中找到图文发布的按钮并点击来切换到图文发布,会比较复杂。而直接利用 query 参数 default-tab=3
来打开的页面默认就是图文发布页面,这样我们就可以减少脚本方面的操作。
动态发布函数
动态发布函数是动态发布功能的核心,该函数会根据 injectUrl
打开的页面然后将其注入到页面中。
1. 上传图片
在做抖音图文发布的时候,我们首先需要上传图片。
我们利用审查元素发现抖音的图片上传组件是一个 input
标签,类型为 file
,并且 accept
属性为 image/png,image/jpeg,image/jpg,image/bmp,image/webp,image/tif
,并且 multiple
属性为 true
。
我们首先使用 waitForElement
方法来等待图片上传组件加载完成。而后我们创建一个 DataTransfer
对象,用于模拟文件拖拽。
而后我们遍历 images
数组,将图片文件添加到 DataTransfer
对象中。
最后我们设置 fileInput
的 files
属性为 DataTransfer
对象的 files
属性,并触发 change
事件。
2. 输入内容
在上传图片完成后,抖音会自动跳转到内容编辑页面,因此我们需要只需要等待内容编辑组件加载完成并等待输入框加载。
我们利用审查元素发现抖音的标题输入框是一个 input
标签,并且 placeholder
属性为 添加作品标题
。
我们首先使用 waitForElement
方法来等待标题输入框加载完成。而后我们设置标题输入框的 value
属性为 title
或 content.slice(0, 20)
,并触发 input
事件。
我们利用审查元素发现抖音的内容编辑组件是一个 div
标签,并且 data-line-wrapper="true"
属性为 true
。
我们同样使用 waitForElement
方法来等待内容编辑组件加载完成。而后我们创建一个 ClipboardEvent
对象,用于模拟粘贴事件。
我们设置剪贴板数据为 content
,并触发粘贴事件。
3. 图片上传检查
在自动发布之前,我们需要检查图片是否完成上传。
我们利用 querySelectorAll 方法来获取所有 span
标签,并检查 span
标签的文本是否为 查看
。
如果 span
标签的文本为 查看
,则表示图片上传完成,通过比对 span
标签的数量和 images
数组的长度来判断图片是否完成上传。
4. 自动发布
在完成上述步骤后,我们需要对自动发布进行额外处理。具体为找到发布按钮,然后点击发布按钮。
我们利用 findElementByText
方法来获取发布按钮,并点击发布按钮。
findElementByText 方法是通过获取元素的文本内容来查找元素的。
在发布成功后,我们跳转到 https://creator.douyin.com/creator-micro/content/manage
页面,并刷新页面。
大功告成
至此,我们已经完成了抖音图文动态发布脚本的开发。
抖音的开发比较简单快捷,我们只需要利用 waitForElement
方法来等待元素加载完成,对编辑器进行输入,然后利用 findElementByText
方法来获取到发布按钮,并点击按钮发布即可。