twitterで腐り芸人botを作りたい

スポンサーリンク
スポンサーリンク

腐り芸人

この前ゴッドタンを見ていたら腐り芸人の発言でかるたを作ろうという回だった。読み札を眺めていると、なんかtwitterっぽいなぁと思ったので、これを元ネタにbotを作ってみたくなった。やったことないけど多分簡単だろうと高を括りつつやってみる。

スポンサーリンク

データを作る

幸いTVerで配信していたので、それを一時停止しながらデータを打ち込んだ。いくつか複数読み札がある。あ、い、う…は一応見出しでつけたけど、いらないかもしんない。エクセルに打ち込んだけど、とりあえずtxtで保存しとく。

スポンサーリンク

twitterのアカウントを作る

腐り芸人bot(@RottenComedian)さん | Twitter
腐り芸人bot (@RottenComedian)さんの最新のツイート "結局俺たちなんて ずっとギャラとか嫌いな芸能人言わされる側 #腐り芸人"

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.

  1. Apply and receive approval for a Twitter developer account.
  2. Create a Twitter developer app.
  3. Generate your app’s API keys and user’s access tokens.
  4. Generate your app’s bearer token.
  5. Apply and receive access to the desired API.
  6. Find the documentationlibraries, code examples, and other resources that you need to make your first successful request.
スポンサーリンク

twitterの開発者登録をする

APIを使うには開発者登録が必要みたいなのでする。

Getting Started with Our Platform
Get acquainted with Twitter Developer organization, learn to access tools and endpoints, and view additional resources for building with the Twitter API.

ここの、Standard APIっていうのを使いたい。

Overview

開発者ポータル?

https://developer.twitter.com/en/application/use-case

ほんでこっから登録かな。

理由を聞かれるので選択。

アカウントの確認、電話番号の登録が必要だった。国名と開発者名?を入力。

APIを利用するのにどうしようと思ってるかの作文をしなさいと…。200単語以上だと…。その他にも質問があって、どれも100単語ぐらいは書かんといけんみたい…。機械翻訳を駆使しつつ頑張って入力する。

んで、入力確認して、利用規約にオッケーしたら完了。メールが送られてくるので確認してクリック。

でけたー。

スポンサーリンク

新規アプリを作成する

アプリではないんだけど、アプリ作んないとAPIキーが発行されないみたいなので作る。

https://developer.twitter.com/en/apps

ここから右上のボタン押す。

詳細を入力。とりまRequiredだけ入れてる。また作文がある…。

そうすると、Keys and tokensが表示されるようになる。やっとAPIKeyをゲットやで。あと、OAuthっていうのがあるみたい。なにそれ。

OAuthってなんなんすかね

一番分かりやすい OAuth の説明 - Qiita
はじめに 過去三年間、技術者ではない方々に OAuth(オーオース)の説明を繰り返してきました※1,※2。その結果、OAuth をかなり分かりやすく説明することができるようになりました。この記事では、その説明手順をご紹介します...
OAuth - Wikipedia

ここら辺読んでみたんですが、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系にしたいなーと思ったので

CentOS 環境のPython - python.jp
CentOS 7 には最初からPythonがインストールされており、そのまま利用可能です。 しかし、このPython は、 OS がさまざまな機能を提供するために使用しています。ユーザが勝手にパッケージを導入したりすると、 OS の安定性を損なうことも考えられますので、別

ここを見つつやってこうと思う。公式だし大丈夫だよ…ね?

$ 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

できたー!プログラムも動くかしら

Python言語入門 - Qiita
インストール にインストーラがあるのでそれを使ってインストールします。 現在(2015/11/15)の最新はPython3.5です。 Windows環境の方は...

こちらのtest.pyを拝借しまして実行すると…動いた!おっけーですね。でもこれもとから入ってた2系と共存してるんだけど大丈夫なのかな?まぁいいか。後で変ななったら考えよう。

スポンサーリンク

プログラムを書く

ようやく書くんだけど、よく分かってないので取っ掛かりがほしい…。頑張ってtwitterの開発者ページを探すと、すごーーーく簡単に言うと、OAuthっていうのでAPIの使用許諾をもらって、APIのうち、statuses/updateっていうエンドポイントにPOSTする?とツイートできるみたい。そうですか。こう、1からやるとすると、OAuthの仕組みを理解してフローに沿ったコード書いたり、PythonでのHTTPリクエストのやり方を理解したり、まぁ無理そう…っておもいました。そしたら言語別の便利ライブラリっていうページをtwitterが用意してるのを見つけた。

Tools & Libraries
Tools and libraries for Twitter API, Twitter Ads API, and Twitter for Websites. Explore now.

これだ。これでいこう。pythonのところを引用すると

Python

みたいなんがある。違いはよく分かりません。じゃあどれを使わせてもらおうとチラチラ見まして、簡単に書けそうかなぁっていう

sixohsix/twitter
Python Twitter API. Contribute to sixohsix/twitter development by creating an account on GitHub.

こちらを使ってみることにする。ねこかわいい。すっごいふわふわしてるけど大丈夫かな。まぁとりあえず

pip install twitter

でインストールだ!…あれ?

pip: command not found

って出る。なんでやねん3.8.3やぞ、同梱されてるんちゃうんかとドキドキしながらググると

pip - python.jp
pip は、The Python Package Index に公開されているPythonパッケージのインストールなどを行うユーティリティで、Python 3.4以降には、標準で付属しています。 パッケージのインストールは、pip の install コマンドで行います。例え

ん?あ、なんか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

て実行すると…

すげー!!!投稿できてる!感動するわこんなん。

そしたらあとはかるたデータを読み込んでランダムにツイートさせるようにすればいいんだな。

スポンサーリンク

テキストから読み込んでランダムに選択する

とりあえずテストしてみるために、データをテキストファイルにして、一応文字コードを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())

こんな?そしたら実行してみよう!どきどき

やったー!できたー!わーい!そしたら、cronで定期実行すればいいね。

スポンサーリンク

cronに設定する

Crontab.guru - The cron schedule expression editor
An easy to use editor for crontab schedules.

こうした。

つまずき

viの使い方/基本操作
crontabでpython3: command not foundとなってしまう。
crontabでpython3コマンドが使えません。対処法を教えていただけませんでしょうか。 なお、python3ではなくpythonコマンドにすると動作します。 ■crontab -e #*/1 * * * * python3 /home/vagrant/work/test.py; ■error Jan 3 1...
スポンサーリンク

完成

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

コメント

タイトルとURLをコピーしました