motionの結果をtwitterにも投稿

どうせだったらtwitterにも投稿させよう

水飲み監視Botについて、
motionで動体検知→watsonで画像認識→犬ならpythonでWordPress投稿
まではできた。
せっかくなのでTwitterにも投稿させることにする。

Twitter APIの設定

Twitterの開発者向けサイトにアクセスしてAPIKEY取得

CreateNewAppで新規App作成

Name:適切な名前を適当に
Description:内容説明
Website:呼び出す元のWebサイト名

Appができたら「Keys And Access Tokens」を選択。
API KEYは上にすでに記述されている。

一番下の「Create my access token」をポチっとして
TOKEN KEYを取得

python での投稿

Pythonでのtwitterライブラリも調べてみたけどいまいちよくわからない。
Python で画像付きツイートがなんか一番理解できたのでこれを参考にさせていただく。(というかまるっとコピーさせていただいて関数化)

# coding: utf-8

import json
from requests_oauthlib import OAuth1Session

def TWPost(argimgpath,argimgfile,argmsg):

  CK = 'hogehoge1'    # Consumer Key
  CS = 'hogehoge2'    # Consumer Secret
  AT = 'hogehoge3'    # Access Token
  AS = 'hogehoge4'    # 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)

  # 画像投稿
  input_file  = '{path}/{name}'.format(path=argimgpath,name=argimgfile)
  img_file = {"media" : open(input_file, 'rb')}
  req_media = twitter.post(url_media, files = img_file)

  # レスポンスを確認
  if req_media.status_code != 200:
    return -1

  # Media ID を取得
  media_id = json.loads(req_media.text)['media_id']

  # Media ID を付加してテキストを投稿
  params = {'status': argmsg, "media_ids": [media_id]}
  req_media = twitter.post(url_text, params = params)

  # 再びレスポンスを確認
  if req_media.status_code != 200:
    return -1

  return 0

できた

コメント

  1. […] itterOAuthが導入できなかった。curl周りで問題発生) よって別の方法を考える。 motionの結果をtwitterにも投稿 コチラを参考にPythonで。 シェルからpythonの関数呼び出し、引数渡しが分から […]