2006 . 05 . 02

TV番組表のスキン制作 1

Webリソースを取得、表示するRainmeterのスキンをいろいろとに作っていますが、是非その中に加えておきたいのがTV番組の情報やそれに関連した情報取得スキンです。

前々から作る予定はあったものの、だいぶ延び延びになっていましたが、そろそろネタが尽きてきたところで、この制作に執りかかってみようと思いました。

で、いざ始めてみるとこれが案の定、たいへんな難問です。

まず、情報元にするサイトの選定からですが、文字コードがEUC-JPのサイトはまともに文字列を取得できないので、まずパスです。しかし大抵のポータルサイトはEUC-JPで、Shift-JISやUTF-8のサイトの中から探すとなると、もうその時点であまり選択の余地はなくなってきます。

さらに、この手のサイトはただでさえ情報量が多い上、一番厄介なのはその都度タグの情報が変わったりするので、レイアウトを頼りに拾ってくるようないつものパターンは通用しないかもしれません。

そこで、何とか拾いやすいサイトということで、モバイルサイトに注目してみました。PCサイトに比べて、圧倒的に情報量が少ないので拾いやすいですが、ほとんどのモバイルサイトはPCのブラウザそのままの設定(UserAgent)で見ることが出来ません。
ここで分かったことですが、通常PCのブラウザで見ることの出来ないサイトはWebParserでもやはりエラーになるようです。

そんな中、毎日新聞社のモバイルサイトの中のTV番組情報は、PCブラウザでも表示でき、更新も速く、現在放送中の番組だけの表示なので非常に簡潔にまとめやすいということで、まず手始めとしてこのサイトの取得スキンを作ってみました。

が、しかし実際作ってみると、省略語が多かったり変に半角文字が使われたりとモバイル特有の弊害が目立ち、また、稀にフォントタグが変わったり、深夜になって番組がなくなるとレイアウトが変わって取得に失敗するなど、満足のいく出来にはなりませんでした。
後者の取得に関することはやり方によってはクリアできますが、前者はコンテンツそのものの問題なのでどうすることも出来ません

というわけで、これはお蔵入りになりました。現在放送中の番組をチェックするだけなら軽量動作で非常にいいと思ったのですが・・・。

興味のある方はコードを載せておきますので参考にどうぞ

 

;****************************
;ktv-01__mainichi
;******************************

[Variables]
FontColor=106,106,106,255
FontFace="MS UI Gothic"
FontSize=8
Update=900
tokyo=http://dream.mainichi.co.jp/i-mode/m/t/to/
osaka=http://dream.mainichi.co.jp/i-mode/m/t/os/
nagoya=http://dream.mainichi.co.jp/i-mode/m/t/na/
sapporo=http://dream.mainichi.co.jp/i-mode/m/t/sa/
fukuoka=http://dream.mainichi.co.jp/i-mode/m/t/fu/

[Rainmeter]
Author=Kenz0
BackgroundMode=2
BackgroundMargins=6,6,6,6
SolidColor=255,255,255,128
SolidColor2=255,255,255,64
GradientAngle=45.0
BevelType=1

;======================

[SO]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=#Update#
Url=#tokyo#
RegExp="(?siU)(\d{2}:\d{2}).*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>.*<a href=.*\">(.+)</a>:(.+)<br>"
StringIndex=1
CodePage=10001

[S1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=2

[H1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=3

[S2]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=4

[H2]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=5

[S3]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=6

[H3]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=7

[S4]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=8

[H4]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=9

[S5]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=10

[H5]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=11

[S6]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=12

[H6]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=13

[S7]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=14

[H7]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[SO]
StringIndex=15

;========================

[bg-0]
Meter=Image
X=6
Y=16
W=200
H=112
SolidColor=240,240,240,255

[bg-1]
Meter=Image
X=6
Y=16r
W=200
H=16
SolidColor=255,255,255,255

[bg-2]
Meter=Image
X=6
Y=32r
W=200
H=16
SolidColor=255,255,255,255

[bg-3]
Meter=Image
X=6
Y=32r
W=200
H=16
SolidColor=255,255,255,255

;-----------------------------

[t-1s]
Meter=STRING
X=100
Y=3
FontColor=255,255,255,255
StringStyle=BOLD
FontSize=#FontSize#
StringAlign=CENTER
FontFace="#FontFace#"
Antialias=1
Text="TV番組情報"

[t-1]
Meter=STRING
X=101
Y=4
FontColor=#FontColor#
StringStyle=BOLD
FontSize=#FontSize#
StringAlign=CENTER
FontFace="#FontFace#"
Antialias=1
Text="TV番組情報"

[tm-1s]
MeasureName=SO
Meter=STRING
X=200
Y=3
FontColor=255,255,255,255
StringStyle=BOLD
FontSize=#FontSize#
StringAlign=RIGHT
FontFace="#FontFace#"
Antialias=1

[tm-1]
MeasureName=SO
Meter=STRING
X=201
Y=4
FontColor=#FontColor#
StringStyle=BOLD
FontSize=#FontSize#
StringAlign=RIGHT
FontFace="#FontFace#"
Antialias=1

;-----------------------------

[h-1]
MeasureName=S1
MeasureName2=H1
Meter=STRING
X=12
Y=19
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-2]
MeasureName=S2
MeasureName2=H2
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-3]
MeasureName=S3
MeasureName2=H3
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-4]
MeasureName=S4
MeasureName2=H4
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-5]
MeasureName=S5
MeasureName2=H5
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-6]
MeasureName=S6
MeasureName2=H6
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0

[h-7]
MeasureName=S7
MeasureName2=H7
Meter=STRING
X=0r
Y=16r
W=190
H=10
FontColor=#FontColor#
StringStyle=NORMAL
FontSize=#FontSize#
StringAlign=LEFT
FontFace="#FontFace#"
Antialias=1
ClipString=1
Text="%1 : %2"
Hidden=0