paloma blog

NWエンジニアやってます。技術の備忘など。Pythonもちょっと。タイトルは好きなカクテルから。

映画視聴ロガーを作る ツイッターに投稿する編

前回の続きで取得した情報をツイートします。

Twitter APIの取得

投稿のためにTwitter APIを取得しました。
申請が面倒くさかったですが、すんなりGETできました。

下記サイトの手順のままです。

https://www.torikun.com/entry/twitter-developer-api/

私は申請の説明は映画情報投稿アプリを作りたい旨の説明文を書きました。
8/20に申請したのですが、その日に登録のメールが来ました。

投稿用スクリプト

tweetAPIのナレッジはたくさんあります。
私は下記サイトを参考(というか丸々借用)しました。

tweepyの参考サイト
qiita.com

※tweepyとは別にtweetpyというライブラリもあるようです。
ナレッジが多い前者で作っています。

keyは別ファイルに外出ししておきます。

  • configure.py
(tweetpy) masashi@PC-ubuntu:~/tweetpy$ cat configure.py
CK = '取得したキー'
CS = '取得したトークン'
AT = '取得したキー'
AS = '取得したトークン'
  • posttw.py

自分のアカウントにtweetするだけです。

(tweetpy) masashi@PC-ubuntu:~/tweetpy$ cat posttw.py
import tweepy
import sys
import configure

Consumer_Key=configure.CK
Consumer_Secret=configure.CS
Access_Token=configure.AT
Access_Secret=configure.AS

auth = tweepy.OAuthHandler(Consumer_Key, Consumer_Secret)
auth.set_access_token(Access_Token, Access_Secret)
api = tweepy.API(auth)

# ツイート
api.update_status(sys.argv[1])

テストツイートしてます。

(tweetpy) masashi@PC-ubuntu:~/tweetpy$ python posttw.py 'APIからツイート!'

OKですね。

シェルと合体

シェルスクリプトでの結果をpythonに渡します。

  • twmovieinfo.sh
(tweetpy) masashi@PC-ubuntu:~/tweetpy$ cat twmovieinfo.sh
#!/bin/bash

# タイトルにスペースを含む場合がある
movieinfo=$(movies -d $@)

if [ $? == 1 ] ; then
    echo "タイトルが見つかりません。終了します。"
    exit 1
fi

DATE=$(date +%F)
INFO=$(echo "$movieinfo" | cut -d ' ' -f 2- | grep -Pe '^Y|^G|^Di|^Ac|^Pr')
# sedで行末スペース削除
TITLE=$(echo "$movieinfo" | grep Title | awk '{c="";for(i=3;i<=NF;i++) c=c $i" " ;print c}'| sed -e 's/ $//')

TWEET="""\
${DATE}に「${TITLE}」を視聴しました。

その他Infomation
---
${INFO}
---
"""

python posttw.py "${TWEET}"

映画情報を打ってみます。
(これも好きな映画)
ちなみに本件用にvenvで仮想環境構築してます。

(tweetpy) masashi@PC-ubuntu:~/tweetpy$ bash twmovieinfo.sh pulp fiction

OK!

まとめ 

難しいことはしていませんが、API部分は意外とサクッと作れてしまいました。
今回のツールはtweetするだけですが、APIを使っての操作ということでようやく今時っぽい(?)ツールが作れました。
元々記録するだけの予定でしたが今年は何本見たのか、よく見るジャンルは、監督は…などの集計もできそうですね。

というわけで今日から運用したいと思います。