非日常デコレーション

一般 web developer の雑記です

Twitterの投稿画像を解析してランニング自動記録アプリを作ろう

先月より体力維持のためランニングを夜の習慣にしているのですが、その時にこのアプリを使っています。

ランニング・ウォーキング・声優 MAPLUS+ランニング

ランニング・ウォーキング・声優 MAPLUS+ランニング

  • Edia Co., Ltd.
  • ヘルスケア/フィットネス
  • 無料

高校の頃もランニングをしていたのですが、あの当時からするとGPSを計測して距離をお知らせしてくれるアプリなんて考えられなかったのでちょっと感動。

しかしこのアプリ、Twitterへの投稿ができないのでアプリの中でしか記録を利用できないのがちょっと残念。

というわけで画像認識から記録を自動的に取得できるようにしてアプリの外でも自在に記録を利用できるようにしてみようかなと、思いつきで決意しました。
(画像アップロードは手動の模様)

Twitterの画像を取得しよう

ライブラリが充実していると噂のpythonを遣います。
普段読んだことしかないのでめっちゃ苦戦しました…。
でも記述数少ないのはホントに楽。

#download.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from tweepy import *
import urllib
import sys
import os.path
import re


f = open('twikeys.txt')
data = f.read()
f.close()
lines = data.split('\n')


def get_oauth():
    consumer_key = lines[0]
    consumer_secret = lines[1]
    access_key = lines[2]
    access_secret = lines[3]
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    return auth

def download(url, path):
    fp = urllib.urlopen(url)
    local = open(path + re.sub(r'[:\\\/]', '_', url), 'wb');
    local.write(fp.read());
    local.close()
    fp.close()


auth = get_oauth()
api = API(auth)
s = api.get_status(*画像ツイートのstatusを取ってくる*)
try:
  j = 0
  for i in s.extended_entities['media']:
    print(i['media_url'])
    download(i['media_url'], "./saveImage/")
    j = j+1
except:
  print('exit')


#downloadしてきた画像をopenCVで解析

f:id:mokotixfemilar:20160221181513j:plain
画像の保存に成功しました。

画像をローカルに保存できたのはいいですが、実際にはweb上でアプリを動かす予定なので改良予定。
webの画像をopenCVで処理ってできるのかわかりませんが。 認識は一番簡単なテンプレートマッチングを使用する予定です。
何に記録を使うのかは未定。