基于playwright实现短视频一键全网发布

概要

Playwright 为现代Web应用提供可靠的端到端测试能力。支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上进行测试,无论是本地还是 CI(持续集成)环境,无头模式(headless)或有头模式(headed)均可。可以使用 TypeScript、JavaScript、Python、.NET、Java 等语言调用 Playwright API。

实现流程

本文基于TypeScript,在nodejs环境下,实现了抖音平台的自动登录和发布流程。

  • 1.登录
    通过Playwright打开一个浏览器,导航到抖音登录页面,扫码登录后,自动保存登录后的Cookie信息,便于后面的发布。
  • 2.视频发布
    通过Playwright的setInputFiles接口,设置上传视频的路径,自动点击发布按钮。

代码实现

// An highlighted block
const fs = require('node:fs');
import { firefox } from 'playwright';

class Playwright {
  async login() {
    const storageStatePath = './storageState/douyin.json';
    let storageState = {};
    if (fs.existsSync(storageStatePath)) {
      storageState = JSON.parse(fs.readFileSync(storageStatePath, 'utf-8'));
    }
    const browser = await firefox.launch({
      headless: false,
    }); // Or 'firefox' or 'webkit'.
    const context = await browser.newContext({ storageState: storageState });
    context.setDefaultTimeout(60 * 1000);
    const page = await context.newPage();
    await page.goto('https://creator.douyin.com/').catch((error) => {
      console.error(error);
    });
    await page.waitForURL('https://creator.douyin.com/creator-micro/home');
    await context.storageState({ path: storageStatePath });
    const locator = await page.locator('div.rNsML');
    const userName = await locator.innerText();
    console.log('login userName', userName);
    await browser.close();
    return { userName: userName };
  }

  async upload(videoPath) {
    const storageStatePath = './storageState/douyin.json';
    const storageState = JSON.parse(fs.readFileSync(storageStatePath, 'utf-8'));
    const browser = await firefox.launch({
      headless: false,
    }); // Or 'firefox' or 'webkit'.
    const context = await browser.newContext({ storageState: storageState });
    context.setDefaultTimeout(60 * 1000);
    const page = await context.newPage();
    await page.goto('https://creator.douyin.com/creator-micro/content/upload');

    await page.setInputFiles('.upload-btn-input--1NeEX', videoPath);
    await page.waitForURL(
      'https://creator.douyin.com/creator-micro/content/publish?enter_from=publish_page',
    );

    const orderSent = page.locator('.preview-button--2QRRr', {
      hasText: '重新上传',
    });
    await orderSent.waitFor({ state: 'visible', timeout: 20000 });

    await page.getByRole('button', { name: '发布', exact: true }).click();

    await page.waitForURL(
      'https://creator.douyin.com/creator-micro/content/manage?enter_from=publish',
    );
    await browser.close();
    return { status: 'ok' };
  }
}
export default new Playwright();

小结

通过上述流程,我们也可以实现其他平台登录和发布流程,最终形成产品效果如下。
欢迎添加微信【sas-soft】沟通交流。
短视频一键全网发布

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值