はじめに:最近のプロジェクトの宣伝、その人形遣いがプロモーションのための一括アップロードの自動化プログラムビブラートビデオを書いて使用します。
環境と依存性:ノード、人形遣い
直接コードでADO、:
CONST人形=(「人形」を必要とします)。 CONSTのfs =は( 'FS'を必要とします)。 VaRの ARRY = []; fs.readdir( 'ビデオ'、機能(ERR、ファイル){ 場合(ERR){ はconsole.log(ERR); } 他{ (関数getfiles(I){ 場合(I == files.length){ 戻りコンソール。 (ARRY)ログ; } そうでなければ{ fs.stat( 'ビデオ/' +ファイル[i]は、関数(誤差、統計){ 場合(エラー){ console.log(エラー) } 他{ 場合(stats.isFile()){ arry.push(ファイル[I])。 } getfiles(iが +1 ) } }) } })( 0 ) } }) 非同期関数のmain(){ せブラウザ = puppeteer.launchを待つ({ヘッドレス:偽 400、defaultViewport:slowMo、{幅:1280、高さ:800 }})。 ページを聞かせ =)(browser.newPageを待ちます。 page.gotoを待つ( 'https://sso.douyin.com/?service=https://www.douyin.com/login/type/media#/' ); page.waitFor(待つ * 1000年5 )。 用(VAR i = 0; I <arry.length; iは++ ){ // 上传视频元操作 CONSTアップロード = page.waitForSelectorを待つ( '入力[名前= "-BTNをアップロード"]' )。 upLoad.uploadFileを待つ( 'C:\\人形\\ 03AutoMatuionPost \\ビデオは\\' + ARRY [I] + '' )。 CONSTのinputTextは = page.waitForSelector( 'DIV [役割= "コンボボックスを"]'待ちます)。 )(inputText.clickを待ちます。 inputTextを待っています。); CONST submitBtn =はpage.waitForSelectorを待つ( 'ボタン[クラス= "ボタン- 1SZwRプライマリ-固定1AMXd - 3rEwh"]' )。 )(submitBtn.clickを待ちます。 CONST IknowBtnの =はpage.waitForSelector待つ( 'DIV [クラス= "ボタン- 228g0を"]' )。 もし(IknowBtn){ IknowBtn.click()を待ちます。 } page.waitFor(待機 ×1000 5 )。 CONST upLoadBtnは = page.waitForSelector( '[HREF = "#/アップロード"]'待ちます)。 )(upLoadBtn.clickを待ちます。 } } )(メイン。
デモ:最初の着陸は、あなたが側にお茶を持つことができ、2次元コードを掃引する必要があります。