MOCO'SキッチンのTwitter Botをサイトの仕様変更に伴いアップデートする

以前の記事も参考にしてください。

MOCO’Sキッチンのサイトに仕様変更が行われ、今までのBotでは動作しなくなったため一部を書き換えました。新しいサイトでは更新情報にJSON形式でアクセスできるので、わさわざBeautiful Soupでスクレイピングする必要がなくなりました。

# twitterTokens.py
tokens = dict(
    consumer_key =          '******************',
    consumer_secret =       '******************',
    access_token =          '******************',
    access_token_secret =   '******************',
)
# mocotwi.py
import requests
import json
import datetime
import re
from twitterTokens import tokens
import tweepy

url = 'http://www.ntv.co.jp/zip/mocos/json/latest.json'
res = requests.get(url)
parsed_json = json.loads(res.text)


def isUpdate():
    utcDelta = 9  # JST timezone
    now = datetime.datetime.utcnow() + datetime.timedelta(hours=utcDelta)
    return parsed_json[0]['date'] == now.strftime('%Y.%m.%d')


def getMenu():
    menu = parsed_json[0]['title']
    # remove prefix if exists
    # \s: whitespace and \u3000: fullwidth whitespace
    remove = re.compile('もこみち流[\s\u3000]+')
    if remove.match(menu):
        menu = remove.sub('', menu)
    return menu


def tweetMenu():
    # set tokens
    CONSUMER_KEY = tokens['consumer_key']
    CONSUMER_SECRET = tokens['consumer_secret']
    ACCESS_TOKEN = tokens['access_token']
    ACCESS_TOKEN_SECRET = tokens['access_token_secret']
    # auth process
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    api = tweepy.API(auth)
    # send tweet
    api.update_status(getMenu() + ' #mocos_kitchen ')


def lambda_handler(event, context):
    if isUpdate():
        tweetMenu()


if __name__ == '__main__':
    lambda_handler(None, None)

http://www.ntv.co.jp/zip/mocos/json/latest.jsonから直近数日分のデータを取得できます。日付やメニューを抽出するプロセスが変わっただけで、残りは以前のままです。

あとはAWS Lambdaにzipファイルをアップロードして、CloudWatchで実行するタイミングを設定すれば完了です。AWSもサイトの更新によりインターフェース等の変更がありますが、行うべき内容は変わらないので、そこでの手順は以前の記事をもって割愛します。

$ mkdir mocotwi
$ cd mocotwi
$ tee setup.cfg <<EOF
[install]
prefix=
EOF
$ tree .
.
├── mocotwi.py
├── twitterTokens.py
└── setup.cfg
$ pip3 install -t . requests tweepy
$ zip -r ~/mocotwi.zip *

AWSのインターフェースが新しくなるたびに操作方法を示すのは煩わしいので、このあたりの設定も将来的にコマンドラインから行えるようにできればと考えています。