strelka_dogのブログ

徒然なるままに心に移り行くよしなしごとをそこはかとなく書き尽くるブログ

今年やったこととその方法を簡単にまとめた

この記事はKMCアドベントカレンダー17日目の記事です。
自分の担当が18日目だと思っていました、18日だとしても遅刻してるんですけどね。でもまぁ僕の前のnaka6さんも書いてないのでなんとかなるでしょう
adventar.org
書くことが無かったので今年やったことを思い出しながら羅列してみました。こんな記事でごめんなさい……

zoom自動録画プログラム

これは何?

○○ナウイルスの流行により決まった時間にzoomを起動してその動画を録画し保存してくれるプログラムの需要が高まりました。そこで寝ていても勝手にzoomを録画するプログラムを組みました。

実装方法

プログラムは書きなれているC#を使って書きました。今回は簡単なまとめなので具体的なコード等は省きます。

  1. タスクスケジューラにより指定時間より少し前にみんな大好きseleniumを使ってzoom授業を起動
  2. 指定時間にプログラムからwin+Alt+Rのキーを投げてwindowsのゲームバーにより録画を開始
  3. 授業終了時間にもう一度win+Alt+Rのキーを投げて録画を終了
  4. 途中で自動から手動での操作に切り替えられるようなボタンをつける

トラブル

画面共有の切り替え時にウィンドウサイズが変わって録画が中断される
zoomの設定でなんとかなる

先生が時間通りに授業を始めない
諦めて

チャットサーバーの立ち上げ

これは何?

僕の参加しているとあるサークルで使用するあまり外部にログを残したくない用のチャットを自宅のサーバーで開設した。

実装方法

RocketChatというオープンソースのslackライクなサービスをubuntuに導入して使う。
docs.rocket.chat
データベースはMongoDBが使われている。
「24時間で会話内容が消える部屋」っていうのを作ろうと思ったのでcronを使って何とかする。

0 * * * * mongo (データベースのタブ) (コマンドの書かれたjavascript)

でmongoコマンドが利用出来るので

const today=new Date();
var an_day_before=new Date();
an_day_before.setHours(today.getHours()-24);
db.rocketchat_message.remove({ $and:[{"rid": ルームID},{ "ts" : { "$lte" : ISODate(an_day_before.toISOString())} }]})

このjavascriptをcronで定期実行させると24時間で会話内容の消える部屋を作れる。

Line読み上げBotの作成

これは何?

僕はほとんどLineを見ないので家族からのLineすらも無視しててしまうので、Botに送った内容を部屋のスピーカーで読みあげるBotを作った。

実装方法

雑にRailsでサーバーを立てる。webhookを受けとって音声合成APIを通した後生成されるwavファイルを再生する。
qiita.com

それでどうなった?


読み上げた後にメッセージをslackにも送るようにした。

発注プライマーの自動データ管理

これは何?

バイト先ではプライマー(DNA)をGoogleスプレッドシートで管理している。業者から発送のメール連絡があった時点でそのメールを解析して自動でスプレッドシートに追加するプログラムを組んだ。

実装方法

バイト先での環境構築が楽そうだったのでPythonで作成。
メールを解析してGoogleスプレッドシートAPIからスプレッドシートに書き込む。
cronで定期実行させる。

maturoidの作成

これは何?

元会長matuの声の文章読み上げソフト

実装方法

デスクトップアプリにしようと思ったのでC#で組んだ。
matu君の音声をサンプリングして五十音ごとに切り分けておく。
文章をmecabにとおして読みを取得し、その読みに合った音声を内部で繋げて新しいwavファイルを生成する。