【作業の自動化】OBSで毎週手修正しているタイトル変更を自動化してみた | よしにぃのあふぱくブログ

【作業の自動化】OBSで毎週手修正しているタイトル変更を自動化してみた

こんばんは、よしにぃです。
今回のブログは、プログラミングな話題も含まれています。
毎週行っているOBSのタイトルの修正手作業が面倒くさいので、それを自動化するプログラムを作ってみたという感じです。

紹介が遅れましたが、このブログは毎週木曜日の22時から、ツイキャスにて「あふぱく」という番組を放送しています。雑談だったり、ゲームだったり、僕の周りで開催される各種イベント情報などを紹介している番組です。
今回は、そのあふぱくの配信画面上に表示されているとある部分を自動化してみました。

今回の本題、どこを自動化したの?

早速なのですが、今回自動化した場所というところを画像化してみました。
実際に目で見るとものすごい細かいところで1箇所だけではありますが、あふぱくの「第○○○回」という数字のところを放送開始日に最新にするという。

実はこの数字、毎回OBSを起動しては、手作業で修正をしなければいけない部分です。先週配信した放送回が残っているのでその数字に対して、+1をしていってます。
この作業、実は忘れたまま放送をしていたこともあって、実際の回数と異なっている…というのもあり、悩みの1つでした。
そうだ!せっかくなら作業自動化の1つにしちゃおう。ということで今回の試みに至ったのです。

じゃあ、具体的な自動化を考えてみよう

自動化を行うには、自動化するための要素が必要になります。つまり、今回の例でいうと「○○○」回を表示するには、回数の部分をどうやってプログラムで取得ができるか?というところを考えないといけないです。
今回は、第○○○回を表示する情報として、ツイキャスのアーカイブに目を向けました。

ツイキャスのアーカイブでは、配信のタイトルに回数を毎回おしりにつけて残しています。また、アーカイブは基本的に、新しい順に並んでいる状態で、あふぱく○○○というタイトルを取得して、一番大きい回数の数字を内部的に保存して、表示すれば大丈夫なはず。
…というわけで、今回は、このタイトルからあふぱく○○○の最新の数字をシステムで自動的に取得するようにしました。
(一部、タイトルがついていない回もありますね。忘れているこの作業も自動化したい…!)

ライブ履歴 – よしにぃ@移動自粛中 (@yoshi_nii) – ツイキャス (twitcasting.tv)

自動化してみるぞ!

というわけで、実際に自動化の手順を書いていきます!
ただし、細かい手順などは長くなっちゃうので割愛します…。
また、今回のプログラミング言語は、Webの言語であるPHPを使用しました。ただ、実際に動かすのはPCの内部なので、PHPという言語が動けばOKです。

  • ツイキャスのアーカイブページのHTMLを取得する
  • ツイキャスのタイトルとなっている部分の文字を切り抜く
  • タイトル部分から余計な文字を切り抜く
  • あふぱくの回数となっている数字を切り抜いて最新の回数を取得する
  • 次の週は、アーカイブの最新回数+1となるので、数字を+1する
  • テキストファイルを出力して、OBSと連携するための準備をしておく
  • OBSで、上記のファイルを読み込

というのが大まかな流れです。
OBSでは、テキストファイルで保存されている文字を配信上に表示できる機能があります。
自動連携のために、最新の回数取得と同時にテキストファイルに、アーカイブの最新回数)+1として調整しておきます。

プログラムの内容

<?php
/*ツイキャスの配信アーカイブから、あふぱくの次の回数を自動取得するプログラム */
$twitcasStr = file_get_contents('https://twitcasting.tv/yoshi_nii/show');
preg_match_all('/<span class="tw-movie-thumbnail-title">[\s\S].*<\/span>/', $twitcasStr, $match);
if (is_array($match)) {
  $afCount = 0;
  foreach ($match[0] as $m) {
    $ret = str_replace('<span class="tw-movie-thumbnail-title">', '', $m);
    $ret = str_replace('</span>', '', $ret);
    $ret = str_replace('あふぱく', '', $ret);
    $afCountTmp = (int) $ret;
    if ($afCountTmp > $afCount) {
      $afCount = (int) $afCountTmp; 
    }     
  }
}
$date = date('Y/m/d H:i:s', time());
echo "getCount: ". $afCount. "({$date})";
file_put_contents('./obs_afpk_count.txt', $afCount + 1);
exit(0);

ソースコードは雑ですが、「自動化してみるぞ!」の項目に書いた内容をそのままプログラミングしています。
tw-movie-thumbnail-title という要素の中に、ツイキャスのタイトルが保存されているので文字列を取得して、余分な文字を除去して回数の数字を取得しています。
そして、最後にファイルとして、OBSの連携用テキストファイル「obs_afpk_count.txt」としてファイル保存します。

あとは、自動で取得してOBSと連携するだけ

自動取得の方法として、今回は OSがMacなので、crontab を使います。
下の設定では、毎週木曜日の21時30分に、あふぱくの回数取得プログラムが実行されるようにしておきます。

30 21 * * 4 cd ~/autoprocess/getAfpkCount;php -q getAfpkCount.php > getCount.log

ちなみに、Windows では、タスクスケジューラという機能を使って PHPを自動で動かすことで対応出来ると思います。

【Windows 10対応】タスクスケジューラで定期的な作業を自動化する:Tech TIPS(1/2 ページ) – @IT (atmarkit.co.jp)

そして、回数の部分だけをテキストファイルで保存したものをOBSに読み込みます。
OBSのテロップとして表示している部分の設定で、「テキストファイル」という部分から参照することで個別に自動化によって出力した回数部分のテキストファイルを呼び出すことが出来ます。

…というわけで、作業の自動化の出来上がりです!
説明としてはプログラマー寄りな内容ながらも、ものすごく簡素なものとなってしまい申し訳ないかったですが、どういうことをすると自動化できるのか?という具体例を1つ挙げさせていただきました。
すごい面倒だなぁ…と思うことを、コツコツとプログラミングに任せることができれば、自分の手作業をパソコンに押し付けることが出来るので、自分のやりたい時間も得られます

なかなか自分でこの作業を地道にやるのは難しいなぁ…とかこういうことが自動で出来たらいいなぁ…とか意外と面倒なことは身の回りにあるかもしれません。アイデア1つでプログラムに任せちゃおうとなれば、自分の面倒なことや、やらせたいことをパソコンに押し付けちゃうことが出来ます!(良い意味で