2012年2月14日火曜日

Rainmeter, Gnometer, Gcal, Gmail

WindowsVista, 7のガジェットが昨年秋に廃止したようで.
ガジェットは結構便利だったので,使っていた.アナログ時計とか,カレンダーとか,Google CalendarやGmailの情報を表示させたり.
将来的に使えなくなると不便というか,Windows8以降で同じ様な情報取得をどうやるのか,やれるのかわからないけど,移行するときにしんどくないように,デスクトップにガジェットを表示してくれるソフトを導入した.
Google Desktopも廃止.Yahooガジェット?あれはGoogle関連のサービスと連携が苦手っぽいので私個人としては使いにくかった.
Vistaが登場したばかりのころは,XPでガジェットを再現するSamrizerとかいうようなのとか,いろいろあったけど,最近の動向は良くしらない.必要なかったからね.
ちょっとググって,適当にみつけたRainmeterというやつを入れてみた.Windows7 64bit版があって,少し幸せだった.ちなみにバージョンは2.2.

インストール時に言語選択が出てくるので,それで日本語を選択すれば,あとは日本語環境になる.
RainmeterのDiscoverからGnometerというスキンをダウンロード.
Rainmeterを推奨された方法(ポータブル版じゃない方) でインストールしていれば,拡張子.rmskinがRainmeterと関連付けされるので,ダウンロードしたファイルをダブルクリックで実行すればよい.

ガジェットの追加方法とか設定方法の説明は面倒くさいので省略.ググってください.
問題は,GcalとGmailガジェットが思いのほか残念な表示になる,ということ.

↑GcalとGmailはこんな感じになる.Gcalは白塗りしてあるのはスケジュール.なぜか右に離れて開始日のみ.それも中途半端な感じに表示される.Gmailは新着メールのタイトルのみが表示されるという,個人的にはちょっと残念仕様.
 このスキンデータが,C:\Users\<ユーザ名>\documents\Rainmeter\Skins\Gnometer以下の,GcalとGmailフォルダにそれぞれ入っているので,眺めてみた.

まず,Gcalの方だけど,これはGoogleカレンダーを日本語で使用していると起こるらしい.
Gcai-4.iniを例にみると,18行目あたりに
GET=.*(?(?=.*<title).*<title.*>(.*)</title><summary.*: (.*)&am)
という記述がある.これは,正規表現的なアレをアレした感じで指定しているんだと思うんだけど,GoogleカレンダーAPIで受信した内容をみると,
<title type='html'>■■■</title><summary type='html'>期間: 2012/02/15 (&amp;#27700;) 13:00~17:00&amp;nbsp;
JST&lt;br&gt;


&lt;br&gt;予定のステータス: 確定</summary><content type='html'>期間: 2012/02/15 (水) 13:00~17:00 
JST&lt;br /&gt;
 みたいになっている.Gcal-4.iniが取得しようとしているのは,titleタグからsummaryタグの途中で"&am"が出てくるところまでっぽい.
<title type='html'>■■■</title><summary type='html'>期間: 2012/02/15 (&amp; 
だから,"2012/0211("みたいな記述になってしまうんだね.じゃあ,これを
GET=.*(?(?=.*<title).*<title.*>(.*)</title><summary.*: (.*)&amp;&nbsp;)
 にしてやればいいんじゃないの?ってやってみた.そうすると,確かに,時間まで表示されるようになった.でも,曜日がうまく表示されない.っていうか,(&amp;#27700;)とかって生のまま表示されてしまう.あーもー.
そこで少しxmlを眺めてみると,summaryの次にcontentタグがある.この中に,Gcal-4.iniがsummaryで取得しようとしていたのと同じデータがあるじゃないか.それも,曜日はちゃんと(水)ってなってる!ということで,
GET=.*(?(?=.*<title).*<title.*>(.*)</title>.*<content.*: (.*)\n)
 と変更した.これで,時間まで取得,表示できるようになりました.
ここで,もう少し.iniを眺めてみる.
[mTime1]とかいうところに,
Substitute="2011 ":"",...
みたいなのがあります.なんかJsonみたいな記述ね.
文字列置き換え候補の配列変数ってことですかね.知らないけど.
これを,xmlで表記されているフォーマットに合わせて,
Substitute="2011/":"",・・・,"~":"-","01/":"",・・・,"12/":"","&lt;br /&gt;":""
と変更してやる.mTime2~4も同様にしてやる.この辺の整形は,個人の好き好きでやればいいと思う.
あとは,87行目あたりのSTYLESセッションや108行目あたりのMETERSセッションをいじって,自分の好きなレイアウトにすればいい.

続いて,Gmail-4.iniをみてみる.
こっちでもやることは受信するXMLの解析や,GETの値の変更,レイアウト変更で,基本はGcal-4.iniでやったのと同じ.
19行目あたりにGETがあるんで,
 GET=(?(?=.*<entry>).*<title.*>(.*)</title>.*<link.*href="(.*)")
 ↓
GET=(?(?=.*<entry>).*<title.*>(.*)</title>.*<link.*href="(.*)".*<modified>(.*)</modified>.*<name>(.*)</name>)
こんな風に変更.受信日時と送信者名も取得するようにしておく.
続いて,[mItem1]をみてみると,
StringIndex=2 
というのがある.これは,取得したデータのうち,何番目の(.*)かということ.
# 正規表現的なアレだなぁ.
29行目あたりをみると,fullcountタブを取得して,そのあとでGETを4回繰り返している.つまり,StringIndexの1番目:受信したメール数を示す.2番目:1通目のメールタイトル.3番目:メールのURL,4番目:受信日時(GMT),5番目:送信者名,6番目:2通目のメールタイトル・・・となる.

これを参考に,[mItem1],[mLink1]の次に[mName1]とか増やして,
[mName1]
Measure=Plugin
Plugin=WebParser.dll
Url=[mGmail]
StringIndex=5
とか適当に書いてやればいい. あとはGcal-4.iniのSTYLESやMETERSのところでやったのと同様にレイアウトしていけばいい.
Gcal,Gmailの横幅は,RainmeterからGnometerのSettings.iniを起動して,> Skin Settings > Change skin widthsでそれぞれ250に設定してある.これで満足した.
ココにそれぞれのiniの記述を載せておくので,あとは適当にやってください.


5 件のコメント:

  1. Kenta さま

    はじめまして。Taroと申します。

    rainmeterの記事を書かれているのを拝見して、こちらにたどり着きました。

    skinの編集についてお聞きしたいことがるのですが、よろしいでしょうか? 長文になりますが…

    いま、Loitaというnowplayingのスキンをカスタマイズしているのですが、ProgressBarの所でつまづいております。
    このバーはクリックで曲を移動できるものなのですが、そのバーを縦にしようしたく、BarOrientation=HORIZONTAL
    →BarOrientation=VERTICALに変更し、好きな位置、サイズに合わせるまでは問題はなく、ただ、バーは曲に併せて動くもののクリックによる曲の移動が出来なくなってしまいました。ベースをみながらそれらしく変更等しても変化もなく、ご教示をお願いできればと思い書き込みました。

    Loita
    ttp://browse.deviantart.com/?qh=&section=&q=loita#/d4dzci2

    スキンはCD Art Displayの好きなものに(ThaFrame)組合わせ表示させるようにしてあります。そのスキンのふちにあわせて縦に配置のイメージです。

    その際、iniファイルの[Time][Progress]は非表示にして、
    [ProgressBar]のみ

    [ProgressBar]
    Meter=BAR
    MeasureName=mProgress
    X=55
    Y=65
    W=2
    H=50
    BarColor=#BarColor#
    SolidColor=#BarBackColor#
    ;BarOrientation=HORIZONTAL
    BarOrientation=VERTICAL

    としてあります。
    それ以外のProgress関係はいじってはいないのですが(試しに色々書き換えてはみましたがうまくいかず、上記以外は元にもどしています)、お分かりになりますでしょうか?

    WやX値をいじると曲移動が正常には作動しないことはわかっています。 これも原因がわからずじまいです。

    ちょっとわかりずらい文章ですが、ProgressBarを縦に好きな位置、サイズに変更して、尚且クリックによる曲移動を正常にさせるにはiniファイルをどう変更すればいいのか、以上よろしくお願いいたします。

    返信削除
  2. こんにちは.
    お尋ねいただきましたskinについて,ソースをみてみました.

    Loita v1.1.0
    Loita.iniファイル(無改造状態)の281行目から,
    ; =======================================
    ; SETPOSITION

    [Progress0]
    Meter=IMAGE
    SolidColor=#Invisible#
    X=134
    Y=r
    W=5
    H=5
    LeftMouseUpAction=!RainmeterPluginBang "mPlayer SetPosition 0"

    となっていると思います.
    これ以降,Progress100まで,2ずつ,Progressが続いています.
    ここで,ダミーの画像をプログレスバーに重ね,クリックの取得→該当の曲位置に移動という操作をしているようです.

    >WやX値をいじると曲移動が正常には作動しないことはわかっています。 これも原因がわからずじまいです。
    これも,同様のことに起因する現象だと思います.
    Progress0~100のX,Y,W,H値などを調整してみると幸せになれるかもしれません.

    返信削除
  3. 早速のお返事ありがとうございます。


    やはりそこでしたか…
    とは言え1時間ほどにらめっこしましたが、全く進展なしでした^^;
    W,Hはその画像の大きさで元の258を考えて5,5だったのかと。
    Barの長さを100に伸ばし、H=2で(volが2づつあがっているので)
    トライもダメでした。

    縦にしているのでXとYが逆になるのかともも撃沈でした><


    幸せになることができませんでした…うーんむずかしい。
    もうすこし頑張ってみます。

    返信削除
  4. 作業しやすくするために,ThemaのSoita.incにあるInvisibleをコメントアウトしておきます.
    で,
    [Progress0]
    Meter=IMAGE
    SolidColor=#Invisible#
    X=134
    Y=r
    W=5
    H=5
    LeftMouseUpAction=!RainmeterPluginBang "mPlayer SetPosition 0"

    [Progress2]
    Meter=IMAGE
    SolidColor=#Invisible#
    X=R
    Y=r
    W=5
    H=5
    LeftMouseUpAction=!RainmeterPluginBang "mPlayer SetPosition 2"

    となっていますが,Progress0のXとYをそれぞれ,ProgressBarの開始位置に指定します(例えば,X=10,Y=10とか?).
    次に,Progress2のX=R,Y=rをX=r,Y=Rにします.
    以降100まで,ちくちく繰り返していくと,幸せになれそうですよ.

    ただ,プログレスバーを縦に配置している場合,曲位置などは下から上に上がっていくんじゃないのかな...その辺はバーの進行を逆転させるオプションでもあるのかな?わかりません.

    返信削除
  5. コメントありがとうございます。

    なるほど、X,Yの逆転でしたか。
    でしたが、やはり下から上に上がるバーに対して、クリックの反映位置は
    バーの対照位置(20%にしたければ80%の位置でクリック)となってしまい
    ました。 一瞬幸せな気分になったのですが、ガクッと…

    もし、そうならと

    横移動はないのでX=rでYのみProgressBarの位置と同じ指定で、
    [Progress100]⇒[Progress0]と真逆に配列を変えてみました。
    [Progress98]以降はX=r,Y=Rで統一してあります。
    これがまさかと思いきや、これが上手く反映されました。

    自分でもびっくりしましたが、Kentaさんのおかげで、なんとか
    縦のProgressBarができあがりました。


    本当に感謝感謝の気持ちでいっぱいです。
    また、何か疑問等出たときはお聞きしても大丈夫でしょうか?

    このたびはありがとうございました^^

    返信削除