Terasannのチラ裏

「それはTeraさんに聞け」を目指すブログ

無慈悲な進捗チェッカーを作ってみた。

研究、仕事、恋愛。そして筋トレ。

何事もコツコツやることが大事ですね。

コツコツとやっていればいずれ結果は出る。良かれ悪かれ。

最近サボリ気味なので そんな自分に活を入れてくれるようなそんな進捗チェッカーを作った。

仕様

  • ディレクトリ内のファイルの更新が24時間以内に行われてるか確認
  • 行われていたら何かしらの進捗あり -> ご褒美画像をTweet
  • 何にも進捗無い -> 追い詰める画像をTweet

なんというシンプル!

どんなことになるのかというとこんな感じ

f:id:kch-bone:20150301022130p:plain

最後の方よくわからない画像がありますけど気にしない。 実験用アカウントなのでツイート数がすごいことになってますが笑

プログラムはシェルスクリプトPythonで構築しています。

24:00になるとcronに登録しておいたシェルスクリプトが実行されます。

シェルスクリプトは監視対象のディレクトリ内のファイルの更新状況を確認します。 更新状況の確認には find コマンドを用います。

find ./* -mtime -1 -type f|wc -l

24時間以内に更新されているファイルの数をカウントします。

シェルスクリプトの結果を変数に格納する場合は``で括ります。 こんな感じ

var=`find ./* -mtime -1 -type f|wc -l`

これでvarに更新されたファイルの数が入ります。あとはif文で比較するだけ!

コードはGithubにあげておきます。

ちなみにただアップロードされるというわけではなく好きな画像をランダムで選択し、「頑張りました!」の文字を挿入します!

こんな感じ

f:id:kch-bone:20150301031625p:plain

篠崎愛

f:id:kch-bone:20150301031859p:plain

吉木りさ

画像は適当にクロールして持ってきました。

wgetでグーグル画像検索からね。

以下は画像に文字を挿入するプログラムです。 画像サイズはバラバラなので、ある程度統一させます。

# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont, ImageFilter

import sys

param = sys.argv

# 背景画像を開く
if param[1] == None:
    print "srcfile none"
src = Image.open(param[1])

sx = src.size[0]
sy = src.size[1]

#resizeを行う
if sx > sy :
    length = src.size[0]
else:
    length = src.size[1]

if length > 600:
    while length > 600:
        length = int(length*0.9)
        sx = int(sx*0.9)
        sy = int(sy*0.9)

else:
    while length < 600:
        length = int(length*1.1)
        sx = int(sx*1.1)
        sy = int(sy*1.1)


    
src.show()
img = src.resize((sx, sy), Image.ANTIALIAS)

# フォントセット
textFont = ImageFont.truetype("/System/Library/Fonts/ヒラギノ角ゴ ProN W6.otf", 40)
# テキストを貼り付ける Image を生成
textImg = Image.new("RGBA", (300, 100), (0, 0, 0, 0))
tmpDraw = ImageDraw.Draw(textImg)
# 貼り付けるテキスト

if int(param[2]) == 1:
    text = u"頑張りました!"
else:
    text = u""
# 影分を先に貼り付ける
tmpDraw.text((12, 2), text, font=textFont, fill="rgb(176, 196, 222)")
# 本体文字を貼り付ける
tmpDraw.text((10, 0), text, font=textFont, fill="black")
# 5 度傾ける
textImg = textImg.rotate(5)
# 背景画像に貼り付ける
img.paste(textImg, (sx-300, sy-100), textImg)
# 画像保存
img.show()
img.save("./output.png")