各エディタにプラグインをつっこむことでコーディング時間を計測してくれるサービス WakaTime この一ヶ月ぐらいつかってみてるんだけど統計でてくるのおもしろい。で、API もあるのでてきとうにまとめて tweet してみるテスト。あと、AWS Lambda が cron 的なことができるようになったとかなので、ついでにそれもテスト。
Python コードはこんなん。
lambda_function.py
# -*- coding: utf-8 -*-
import requests
import twitter
import config
def get_stats():
headers = {'Authorization': 'Bearer ' + config.wakatime['access_token']}
return requests.get('https://wakatime.com/api/v1/users/current/stats/last_7_days', headers=headers)
def tweet(status):
api = twitter.Api(consumer_key=config.twitter['consumer_key'],
consumer_secret=config.twitter['consumer_secret'],
access_token_key=config.twitter['access_token_key'],
access_token_secret=config.twitter['access_token_secret'])
# print api.VerifyCredentials()
api.PostUpdate(status)
def make_summary(data):
total = data['human_readable_total'].replace('hours', 'h').replace('minutes', 'm')
lang_stats = map(lambda l: '{} {}%'.format(l['name'], int(round(l['percent']))), data['languages'][0:4])
return 'Last week\'s coding stats: Total {} ({}) (via @WakaTime https://wakatime.com/@Saqoosha)'.format(total, ' / '.join(lang_stats))
def lambda_handler(event, context):
result = get_stats()
print result.text
summary = make_summary(result.json()['data'])
tweet(summary)
return summary
if __name__ == '__main__':
# import json
# with open('_exp/data.json') as f:
# data = json.load(f)
# summary = make_summary(data['data'])
# print summary
lambda_handler(None, None)
AWS Lambda つかうといの注意点は 3rd party module を pip install python-twitter -t .
とかって↑のコードとおなじとこにいれてまとめて ZIP でアップロードしないといけないてのと、cron のフォーマットがいつものやつとちょっと違うってぐらい。かんたん。サーバーレスでできるのらくちん。