元ネタはこちら
割と本気で家庭用Slack Botを作ってみた
普通の機能だけではつまらない。せっかく夫婦で使っているので、夫婦っぽく記念日の情報とか流してみることにしました。
はてなカウンティングでカウントアップを作成し、そのスクリーンショットを撮って切り抜き、Gyazoにアップロードします。
記念日とキリの良い日数のときにお知らせしてくれます。「fukabot 記念日」と言うとすべての記念日情報を教えてくれます
上記のエントリーの中に、夫婦の記念日をお知らせする機能をSlackで実装されていたので、再現してみました。ただ、ぼくは結婚してないので、お正月までの日数をツイッターに投稿してみました(かなしみ)
実行環境
- mac OSX
- Python 2.7.1
- Phantomjs
まず、はてなカウンティングで、カウントダウンタイマーを作成。
pyantomjsで作成したはてなカウンティングのURLから、キャプチャ画像を取得
var page = require('webpage').create();
page.viewportSize = {width: 1024, height: 768};
var url = 'http://counting.hatelabo.jp/count/i9nv7u2esv'
page.open(url, function () {
window.setTimeout(function () {
page.render('newyear.png');
console.log("saved capture");
phantom.exit();
}, 200);
});
その画像をImage Magickで加工して、Twitterに投稿している。
#!/usr/bin/env python
# coding: utf-8
import json
from requests_oauthlib import OAuth1Session
import os
current_path = os.getcwd()
CK = 'your_key' # Consumer Key
CS = 'your_key' # Consumer Secret
AT = 'your_token' # Access Token
AS = 'your_token' # Accesss Token Secert
url_media = "https://upload.twitter.com/1.1/media/upload.json"
url_text = "https://api.twitter.com/1.1/statuses/update.json"
# OAuth認証 セッションを開始
twitter = OAuth1Session(CK, CS, AT, AS)
# 画像投稿
files = {"media" : open('after.jpg', 'rb')}
req_media = twitter.post(url_media, files = files)
# レスポンスを確認
if req_media.status_code != 200:
print ("画像アップデート失敗: %s", req_media.text)
exit()
# Media ID を取得
media_id = json.loads(req_media.text)['media_id']
print ("Media ID: %d" % media_id)
# Media ID を付加してテキストを投稿
params = {'status': 'お正月まで〜', "media_ids": [media_id]}
req_media = twitter.post(url_text, params = params)
# 再びレスポンスを確認
if req_media.status_code != 200:
print ("テキストアップデート失敗: %s", req_text.text)
exit()
print ("OK")
それぞれ、実行する。
#!/bin/bash
cd ~/Desktop/capture
#phantom.jsでキャプチャを取得
phantomjs capture.js
#image_magickで画像サイズを変更
convert newyear.png -crop 500x250+100+70 after.jpg
#ツイッターに投稿
python update_image_twitter.py