Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@tomox0115

ヒカキンシンメトリーbotを勝手に復活させた話

はじめに

こんにちは。かつて稼働していたTwitterアカウントヒカキンシンメトリbotをご存知でしょうか。

全自動でヒカキンさんのサムネイルなどをシンメトリー(左右対称)にしてTwitterにアップロードするアカウントです。
こんなやつ↓
3.jpg

本人に取り上げられて一時期有名になりました。

ですがそのアカウントは2019年末より稼働しなくなってしまいました。
なので今回緊急事態宣言発令中でほぼニート状態の暇人がヒカキンシンメトリーbotを勝手に復活させました。

Twitter @SYMHIKA_SEI

本家との変更点

大きな変更

投稿時刻

まず大きな変更として毎日00:10に前日分の画像のシンメトリーを一括して投稿します。
本家シンメトリーbotでは本人様がアップロードされた直後の1時間以内くらいに投稿されてましたが、新しいやつではサーバーの都合上00:10に投稿します。(00:00分じゃ駄目なのかという話もあるかも知れませんが別のbot @randomhikakin の定期実効タイミングだったりMySQLのキャッシュリフレッシュをしてたりと処理が重くなりがちなので10分遅らせています。

取得対象

【旧】HikakinさんのYouTubeサムネイル・Twitter画像
【新】HikakinさんのTwitter画像 +SeikinさんのTwitter画像
新版ではSeikinさんを勝手に追加しました。(ごめんなさい)
※YouTubeのサムネイルの取得を廃止しました。
背景としては2019年頃よりYouTube動画をTwitterで告知する際にOPG(カード画像)が表示されなくなったため動画投稿者は直接Twitter上で動画サムネイル画像をアップロードするようになったからです。YouTube API v3等を使わずにTwitter APIのみで完結するようになったのでありがたいです。

追加取得

後述する問題点に対処するため過去のHikakinTVのサムネイルのシンメトリーを毎日18:00に投稿します。
独自に取得したHikakinTVチャンネル動画データベースから取得する感じです。
全動画のjsonファイルは配布してあります。

※PHPで特定チャンネル内のすべての動画情報を一括して取得する方法(自筆/下は英語版)

システムの変更

顔認識

顔認識を行う仕組みを変更しました。
【旧】Google Cloud Vision API
【新】OpenCV(Python)
退化してんじゃね?って思われそうですが仕方ないんです。お金払うのが嫌なんです…
AzureのComputer Vision APIなら制限内で無料でやれるかも知れないんでそれでやるかもしれないです。(情報処理学会のジュニア会員なのでAzure Studentの1万円クーポンがあるから使おうか使うまいか…)

システム設計

bot内のシステムは本家botのソースコードは利用せず一から組み直しました。
※本家Botのソースコードは↓

使用言語・ライブラリは以下のとおりです。tweepyとかを使うとオールPythonで行けたかも知れませんが動けばヨシ!とにかく暇なうちに…と考えた結果死ぬほど使い倒したPHPのtwitteroauthでツイート関連処理は組みました。
ソースコードは頒布しません。汚いので。

処理 言語(ライブラリ)
ツイート画像取得処理 PHP(abraham/twitteroauth)
顔認識&反転処理 Python(OpenCV/numpy)
画像投稿処理 PHP(abraham/twitteroauth)
定期実行処理 Linuxのsystemd.timer

※動作環境:Ubuntu 20.04 LTS / PHP7.4(Composer使用) / Python3.8(pip使用)

データフローダイアグラムはこんな感じです。
画像_2021-05-04_153638.png

問題点

今回新しく作った上で生じた問題としてヒカキンさん達が顔加工しまくっててうまく認識されない問題があります。
例えば若干の変顔であればOpenCVの笑顔プリセットで認識してくれます。
test.jpg1.jpg
ですが↓のようにめちゃくちゃ加工してしまうと認識できないor誤認識してしまうんです。
test.jpg
このことから認識できない場合が多いことが予想されるので比較的補正のかかってない過去のサムネイル画像を投稿する仕組みを導入しました。

皆さんも是非見てみてください。そしてヒカキンさんセイキンさんすみませんm(_ _)m

https://twitter.com/SYM_HIKA_SEI
3.jpg

諸連絡

動作に関する不具合やご要望がありましたら@tomox0115までメンション飛ばして教えて下さい。すぐ対応します。

【ブログ】https://0115765.com/
【Twitter】*@tomox0115

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tomox0115
なんでもブログ書いてます。 PHP(Laravel),JS等サーバーサイド系メインの大学1年オタクです。 C#,Pythonもちょっとやる。Web開発事業・ブログ事業運営してます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?