腐り芸人
この前ゴッドタンを見ていたら腐り芸人の発言でかるたを作ろうという回だった。読み札を眺めていると、なんかtwitterっぽいなぁと思ったので、これを元ネタにbotを作ってみたくなった。やったことないけど多分簡単だろうと高を括りつつやってみる。
データを作る
幸いTVerで配信していたので、それを一時停止しながらデータを打ち込んだ。いくつか複数読み札がある。あ、い、う…は一応見出しでつけたけど、いらないかもしんない。エクセルに打ち込んだけど、とりあえずtxtで保存しとく。
twitterのアカウントを作る

PCからだと一旦ログアウトしないと新規アカウントを作れないみたいなので、一旦ログアウトしたらパスワードを忘れていることに気づき焦った。アイコンとヘッダ画像を変えて、名前を変えられるようにして腐り芸人botという名前にしようと思う。
形から入るタイプ。アイコンとヘッダ作ったけど、なーんか野暮ったいね。素人だからしょうがないっかー。
twitter側の設定をする
APIを使ってアクセスする感じらしく、その場合こんな感じの流れで準備してくらしい。
How to get started with the Twitter APIs
To get started using the Labs endpoints, standard APIs, premium APIs, enterprise APIs, or Ads APIs, you need to create a developer account and generate keys and tokens.
- Apply and receive approval for a Twitter developer account.
- Create a Twitter developer app.
- Generate your app’s API keys and user’s access tokens.
- Generate your app’s bearer token.
- Apply and receive access to the desired API.
- Find the documentation, libraries, code examples, and other resources that you need to make your first successful request.
twitterの開発者登録をする
APIを使うには開発者登録が必要みたいなのでする。
ここの、Standard APIっていうのを使いたい。
開発者ポータル?
ほんでこっから登録かな。
理由を聞かれるので選択。
アカウントの確認、電話番号の登録が必要だった。国名と開発者名?を入力。
APIを利用するのにどうしようと思ってるかの作文をしなさいと…。200単語以上だと…。その他にも質問があって、どれも100単語ぐらいは書かんといけんみたい…。機械翻訳を駆使しつつ頑張って入力する。
んで、入力確認して、利用規約にオッケーしたら完了。メールが送られてくるので確認してクリック。
でけたー。
新規アプリを作成する
アプリではないんだけど、アプリ作んないとAPIキーが発行されないみたいなので作る。
ここから右上のボタン押す。
詳細を入力。とりまRequiredだけ入れてる。また作文がある…。
そうすると、Keys and tokensが表示されるようになる。やっとAPIKeyをゲットやで。あと、OAuthっていうのがあるみたい。なにそれ。
OAuthってなんなんすかね

ここら辺読んでみたんですが、IDとパスワードを使わずにAPIの認可とかに使われる技術らしい。OAuth1.0aとOAuth2とあって、ツイートを投稿するだけなら1.0aだけでいいみたい。いまいちよく分かってないが、それを実装するわけでないしライブラリがあるっぽいのでおとなしくそれ使おうと思う。んでボタン押すとまた2つのKeyが表示された。初回しか表示されないので忘れず保存~。
サーバー側の準備する
ブログのためにサーバー借りてみたはいいけど、それ以外になんも使ってなかったのでこの機会に使ってみたい。っていうのもあってbot作ろうと思った。言語なんにしようかなーって思ったんだけど、phpとpythonで迷って、pythonにすることにした。以前使ってみたことあるしね。
pythonの準備する
VPSに入ってたっけ?と思ったので
python --version
したら
Python 2.7.5
だった。古い気ガス。2.7.5は俺じゃもう使わないだろうし、3系にしたいなーと思ったので

ここを見つつやってこうと思う。公式だし大丈夫だよ…ね?
$ sudo yum groupinstall "development tools"
$ sudo yum install bzip2-devel gdbm-devel libffi-devel \
libuuid-devel ncurses-devel openssl-devel readline-devel \
sqlite-devel tk-devel wget xz-devel zlib-devel
これやった。そんでソースダウンロードしてくる代わりに
curl -OL https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
こう。関係ないけどLinuxって自分のファイルどこに置けばいいか迷う。今回はhomeにdalomoってフォルダ作った。んで
tar xzf Python-3.8.3.tgz
てやって解凍。できたフォルダに移動してー
$ ./configure --enable-shared
$ make
$ sudo make install
$ sudo sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/custom_python3.conf"
$ sudo ldconfig
英語がすごい速さで流れるのを待つと終わった。そしたらかくにん。
python3 --version
どきどき
Python 3.8.3
できたー!プログラムも動くかしら

こちらのtest.pyを拝借しまして実行すると…動いた!おっけーですね。でもこれもとから入ってた2系と共存してるんだけど大丈夫なのかな?まぁいいか。後で変ななったら考えよう。
プログラムを書く
ようやく書くんだけど、よく分かってないので取っ掛かりがほしい…。頑張ってtwitterの開発者ページを探すと、すごーーーく簡単に言うと、OAuthっていうのでAPIの使用許諾をもらって、APIのうち、statuses/updateっていうエンドポイントにPOSTする?とツイートできるみたい。そうですか。こう、1からやるとすると、OAuthの仕組みを理解してフローに沿ったコード書いたり、PythonでのHTTPリクエストのやり方を理解したり、まぁ無理そう…っておもいました。そしたら言語別の便利ライブラリっていうページをtwitterが用意してるのを見つけた。
これだ。これでいこう。pythonのところを引用すると
Python
- python-twitter by the Python-Twitter Developers
- tweepy by the tweepy Developers
- twitter by the Python Twitter Tools developer team
- TwitterSearch by @ckoepp
- twython by @ryanmcgrath and @mikehelmick
- TwitterAPI by @geduldig – also supports the Ads API and Premium search
みたいなんがある。違いはよく分かりません。じゃあどれを使わせてもらおうとチラチラ見まして、簡単に書けそうかなぁっていう
こちらを使ってみることにする。ねこかわいい。すっごいふわふわしてるけど大丈夫かな。まぁとりあえず
pip install twitter
でインストールだ!…あれ?
pip: command not found
って出る。なんでやねん3.8.3やぞ、同梱されてるんちゃうんかとドキドキしながらググると

ん?あ、なんかpip3ってコマンド使わないとダメみたい。へー。
pip3 install twitter
Collecting twitter
Downloading https://files.pythonhosted.org/packages/85/e2/f602e3f584503f03e0389491b251464f8ecfe2596ac86e6b9068fe7419d3/twitter-1.18.0-py2.py3-none-any.whl (54kB)
|????????????????????????????????| 61kB 4.2MB/s
Installing collected packages: twitter
Successfully installed twitter-1.18.0
おーできた。
そしたら、フォルダ作って、中にrottenbot.pyってファイル作って、サンプルに従いこんな
from twitter import *
token = "な"
token_secret = "い"
consumer_key = "し"
consumer_secret = "ょ"
t = Twitter(
auth=OAuth(token, token_secret, consumer_key, consumer_secret))
t.statuses.update(
status="Hello, World.")
コードを書きまして
python3 rottenbot.py
て実行すると…
Hello, World.
— 腐り芸人bot (@RottenComedian) June 12, 2020
すげー!!!投稿できてる!感動するわこんなん。
そしたらあとはかるたデータを読み込んでランダムにツイートさせるようにすればいいんだな。
テキストから読み込んでランダムに選択する
とりあえずテストしてみるために、データをテキストファイルにして、一応文字コードをUTF-8に変換。そんでtest.pyってファイルを作って
import random
f = open('rotten.txt')
t = f.readlines()
f.close
r = random.choice(t)
print(r)
ってコード書いてみる。実行すると
python3 test.py
のびのびやれる番組は 2クールで終わる #腐り芸人
おおおー、表示された。でも、最後に改行が入ってる。これは一応削除しておきたい。strip()使えばいいみたい。
print(r.strip())
これでいいみたい。行末の改行がなくなった。そしたらrottenbot.pyの方にも書く。
from twitter import *
import random
def getword():
f = open('rotten.txt')
t = f.readlines()
f.close
r = random.choice(t)
return r.strip()
token = "ひ"
token_secret = "み"
consumer_key = "つ"
consumer_secret = "。"
t = Twitter(
auth=OAuth(token, token_secret, consumer_key, consumer_secret))
t.statuses.update(
status=getword())
こんな?そしたら実行してみよう!どきどき
作ったパエリアをそのまま捨てる #腐り芸人
— 腐り芸人bot (@RottenComedian) June 12, 2020
やったー!できたー!わーい!そしたら、cronで定期実行すればいいね。
cronに設定する
こうした。
つまずき

完成
できた!今んとこ30分に1回つぶやく感じかな。いやーできるもんだなぁ。
コメント