肩の力を抜いて

Relax and Enjoy Programming

肩の力を抜いて楽しむ。楽しみながらラクして成果を上げる仕組みを考える。

カウントダウンタイマーをツイッターに自動でポストしてみた。

元ネタはこちら 割と本気で家庭用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

参考URL