Groovyではてブカウンター風はてなスターカウンターを作成する 10)完結編 作成したはてなスターカウンターをはてダに貼り付ける
作成したはてなスターカウンターをはてダに貼り付けて完成だ。
はてなフォトライフにすると毎回URLが変わってしまう。
かと言って自前のサーバなんて持ってない。
そんな時は、Dropbox!!
DropboxのPublic はファイル共有、簡易Webサーバとして使うことができるからだ。
使い方は以下。
1.設定をカスタマイズする
URIの変更
MYURIの"orangeclover"の部分を自分のはてなIDに変更する
/* orangeclover is changed to your hatena id. */ MYURI="http://s.hatena.ne.jp/blog.json/http://d.hatena.ne.jp/orangeclover/"
色の指定
コメントの15色から1つを選択して、MYCOLORに設定する。
存在しない色を選択した場合は、デフォルトの"deepblue"になる
/* "deepblue", "darkgray", "green", "purple", "brown", "red", "sepia", "pink", "tea", "lightgray", "lightblue", "white", "black", "lime", "orange" default:"deepblue" */ MYCOLOR="orange"
保存先の変更
DropBoxのpublicフォルダもしくはpublicのサブフォルダにカウンターを保存する。
/* this path is changed to your save fiel path. */ SAVEFILE="D:\\MyDropbox\\My Dropbox\\Public\\hatenastar\\HatenaStarCount.png"
ソース
前回の状態からmapのアクセス方法を、配列からプロパティのような.を使うように変更
変更前 | ColorMap[myColor]["star"] |
---|---|
変更後 | ColorMap."$myColor".star |
import groovy.swing.j2d.* import net.arnx.jsonic.JSON; /* * customize */ /* orangeclover is changed to your hatena id. */ MYURI="http://s.hatena.ne.jp/blog.json/http://d.hatena.ne.jp/orangeclover/" /* "deepblue", "darkgray", "green", "purple", "brown", "red", "sepia", "pink", "tea", "lightgray", "lightblue", "white", "black", "lime", "orange" default:"deepblue" */ MYCOLOR="orange" /* this path is changed to your save fiel path. */ SAVEFILE="D:\\MyDropbox\\My Dropbox\\Public\\hatenastar\\HatenaStarCount.png" /* * Don't touch after this line. */ class HatenaStar { String title; String uri; Integer star_count; } ColorMap=["deepblue": ["highlight":'#839ce6', "body":'#1841cd', "shadow":'#10205a', "star":'#83a4ff', "number":'white'] , "darkgray": ["highlight":'#949ca4', "body":'#6a6a7b', "shadow":'#414a52', "star":'#cdcdcd', "number":'white'] , "green": ["highlight":'#73bdc5', "body":'#4194a4', "shadow":'#206a73', "star":'#b4f6de', "number":'white'] , "purple": ["highlight":'#9473c5', "body":'#6a39a4', "shadow":'#41207b', "star":'#b49ce6', "number":'white'] , "brown": ["highlight":'#bd8362', "body":'#9c5a31', "shadow":'#733918', "star":'#e6b494', "number":'white'] , "red": ["highlight":'#e65a52', "body":'#cd2018', "shadow":'#9c0000', "star":'#ff9494', "number":'white'] , "sepia": ["highlight":'#eed5ac', "body":'#debd6a', "shadow":'#bd8341', "star":'#ffeed5', "number":'white'] , "pink": ["highlight":'#f6bdbd', "body":'#ee8383', "shadow":'#cd5a62', "star":'#ffdede', "number":'white'] , "tea": ["highlight":'#d5e6cd', "body":'#b4cda4', "shadow":'#94ac7b', "star":'#eef6ee', "number":'white'] , "lightgray": ["highlight":'#deded5', "body":'#bdbdb4', "shadow":'#9c9494', "star":'#f6f6f6', "number":'white'] , "lightblue": ["highlight":'#d5e6ff', "body":'#8bb4ff', "shadow":'#6294ee', "star":'#eef6ff', "number":'white'] , "white": ["highlight":'#ffffff', "body":'#ffffff', "shadow":'#b4b4b4', "star":'#cdcdcd', "number":'#9c9c9c'] , "black": ["highlight":'#b4b4b4', "body":'#525252', "shadow":'#000000', "star":'#b4b4b4', "number":'white'] , "lime": ["highlight":'#bdffde', "body":'#5ae6a4', "shadow":'#41bd83', "star":'#deffee', "number":'white'] , "orange": ["highlight":'#ffd583', "body":'#ff9429', "shadow":'#ff7b18', "star":'#ffdea4', "number":'white'] ] myURI = new URL(MYURI) hatenastar = JSON.decode(new InputStreamReader( myURI.openStream() ,"UTF-8"), HatenaStar.class) myColor = ColorMap."$MYCOLOR"==null ? "deepblue" : MYCOLOR gr = new GraphicsRenderer() gr.renderToFile(SAVEFILE, 75, 14){ antialias("on") rect(x:0, y:0, width:75, height:14, fill: color(ColorMap."$myColor".body), borderColor: color(ColorMap."$myColor".highlight), borderWidth:1 ) star(cx:7, cy:7, count:5, ir:2, or:4, fill: color(ColorMap."$myColor".star), borderColor: no ) /* 3D-ish */ /* right side of of star:Shadow */ line(x1:14, y1:0, x2:14, y2:14, borderColor:color(ColorMap."$myColor".shadow), borderWidth:1) /* left side of the rectangle:Hilight */ line(x1:15, y1:0, x2:15, y2:14, borderColor:color(ColorMap."$myColor".highlight), borderWidth:1) /* right side of the rectangle:Shadow */ line(x1:74, y1:0, x2:74, y2:14, borderColor:color(ColorMap."$myColor".shadow), borderWidth:1) /* base of the rectangle:Shadow */ line(x1:0, y1:13, x2:75, y2:13, borderColor:color(ColorMap."$myColor".shadow), borderWidth:1) font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 10)) text( x:70 - (hatenastar.star_count.toString().length() -1) * 10, y:4, text: hatenastar.star_count.toString(), fill: ColorMap."$myColor".number, borderColor: no ) }
2.カウンターを作成
groovy -classpath c:\usr\lib\jsonic\jsonic-1.1.3\jsonic-1.1.3.jar C:\usr\bin\GraphicsHatenaStarCount.groovy
3.カウンターのURLを取得する
Dropboxのpublicに作成したカウンターのURLを以下の方法で取得する。
右クリック > Dropbox > Copy Public Link
http://dl.dropbox.com/u/645223/hatenastar/HatenaStarCount.png
4.はてなダイアリーに画像として貼り付ける。
はてなダイアリーの管理 > デザイン編集でサイドバーにはてなスターカウンターのURLを貼り付ける。
<b>はてなスター</b> <br> <img src="http://dl.dropbox.com/u/645223/hatenastar/HatenaStarCount.png"> <br>
4.自動更新
スタートアップか、タスクの登録して自動更新
今回はタスクに登録
4.1バッチファイルを作成
- ファイル名
C:\usr\bin\GraphicsHatenaStarCount.bat
- 内容
set JAVA_HOME=C:\usr\opt\java\jdk1.6.0_12 set GROOVY_HOME=C:\usr\opt\groovy set PATH=%JAVA_HOME%\bin;%GROOVY_HOME%\bin;%PATH% call groovy -classpath c:\usr\lib\jsonic\jsonic-1.1.3\jsonic-1.1.3.jar C:\usr\bin\GraphicsHatenaStarCount.groovy
4.2このバッチのショートカットを作成する
- ショートカット
C:\usr\bin\GraphicsHatenaStarCount
ショートカットのプロパティで実行時の大きさを「最小化」にする
4.3タスクに登録
- 実行するファイル名
C:\usr\bin\GraphicsHatenaStarCount.lnk
4.4スケジュール
- 日単位 5:00
- 日単位 17:00
as you like
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Dropboxを使用していない人は以下からどうぞ。基本の2Gのスペースとボーナスとしてキミと僕に+250MBがもらえます。
最近のキーワード
- API
- CLASSPATH
- JVM
- Java
- Ruby
- URI
- UTF-8
- Windows XP
- XML-RPC
- amazon.co.jp
- jsonic
- はてなスター
- はてなスターカウントAPI
- はてなダイアリー
- はてなフォトライフ
- はてなブックマーク件数取得API
- はてブ
- ほんたった
- 毎日コミュニケーションズ
Groovyイン・アクション
posted with amazlet at 10.09.18
Groovyイン・アクションを読むならあった方が便利かな。