作者SilentWorld (June)
看板Wallpaper
标题[分享] Rainmeter WebParser 应用教学
时间Tue Oct 25 07:40:33 2011
WebParser 网页分析的功能大部分用来订阅RSS、新闻、天气预报等等
简单来讲就是透过连结至网页依照规则取数值回来秀在 Meter 上
接下来将从无到有讲解一个 SKIN 的撰写步骤
示范使用网页分析取得 own3D.tv 网站上热门的 LoL 直播清单
请先准备好制作面板的素材,这部分有点牵涉到美工能力(略)
建立一个INI档案以供 SKIN 使用
[Rainmeter]
Author=June
这个区段控制一些全域的设置选项,例如更新间隔、背景模式等等...
[Metadata]
Name=
Config=
Description=
Instructions=
Version=1.0
Tags=
License=
Variant=
Preview=
这个区段控制软体内建管理 SKIN 功能的一些细节显示
[Variables]
Path=
#CURRENTPATH#
Play=按一下左键开启串流#CRLF#按一下中键连结至 own3D 页面
SubstituteText="![CDATA[":"","]]":""
这个区段可以预先设置变数
第一个为设定路径
第二个为工具提示文字
第三个为取值後要替换个文字
[TextStyleA]
FontSize=10 文字大小
FontColor=52,56,63 文字颜色
FontFace=Arial Unicode MS 文字字型
StringStyle=Bold 粗体样式
StringEffect=Border 边框特效
FontEffectColor=112,118,128 特效颜色
[TextStyleB]
...
因为我想要把 Meter 文字分成两种风格,所以我预先定义出风格样式
[MeasureGetList]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=600 更新间隔
Url=
http://api.own3d.tv/live?game=lol 解析网址
RegExp="(?si)</author>.*?<title>...." 取值规则(正规表达式)
StringIndex=1
这部分就是取数值的核心了,正规表达由於我也是初学者..使用方法就 Google 吧
(?si) s=忽略断行字元 i=符合大小写
[MeasureName1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureGetList]
StringIndex=1
Substitute=
#SubstituteText#
取得频道名称,即[MeasureGetList]的第一个返回值,并替换不需要的文字
[MeasureUrl1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureGetList]
StringIndex=2
取得频道页面网址,即[MeasureGetList]的第二个返回值
[MeasureView1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureGetList]
StringIndex=3
取得频道观众人数,即[MeasureGetList]的第三个返回值
[MeasureStream1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureGetList]
StringIndex=4
Substitute=
#SubstituteText#
取得频道串流网址,即[MeasureGetList]的第四个返回值,并替换不需要的文字
由於我有个功能是直接使用 Player 播放直播(不需开启浏览器),故取此值
[MeasureImage1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureGetList]
StringIndex=5
Download=1
取得频道预览图片,即[MeasureGetList]的第五个返回值,并下载供 Meter 使用
接下来直到 Meter 区段前除了名称里的数字不同及取值索引递增之外
就是一大串的重复了.....所以就省略了
最多观众的10个频道,每频道取5个值,所以总共有50个
[MeterBackground5]
Meter=IMAGE
ImageName=background_5.png
ImageAlpha=255
1~5背景图片,由於我有作开关分为两段显示清单所以有两个
[MeterBackground10]
Meter=IMAGE
ImageName=background_10.png
ImageAlpha=255
Hidden=1
6~10背景图片,设定隐藏之
[MeterButton5]
ImageName=button_5.png
Meter=Image
ImageAlpha=255
X=230
Y=28
ToolTipText=按一下左键切换清单#CRLF#按一下中键更新清单
LeftMouseDownAction=!Execute [!RainmeterHideMeter MeterName1]...
MiddleMouseDownAction=!Execute [!RainmeterRefresh]
1~5的开关按钮,点击左键会隐藏频道1~5所有 Meter 并显示6~10频道
[MeterButton10]
...
6~10的开关按钮,点击左键会隐藏频道6~10所有 Meter 并显示1~5频道
接下来的 Meter 显示有几点观念要讲一下
Rainmeter SKIN 的 INI 内容是有层级的,越下面的 Meter 层级越高
如果 Meter 位置是有规律性的建议依序写入,可使用r直接继承上一个的位置
这样就不用每个 Meter 都去桥X,Y浪费一堆时间
[MeterName1]
MeasureName=MeasureName1
Meter=STRING
StringAlign=CENTER 置中
ClipString=1 过长省略
W=190 区域宽
H=18 区域高
X=215 X座标
Y=80 Y座标
MeterStyle=TextStyleA 使用先前定义的风格
AntiAlias=1 反锯齿
ToolTipText=[MeasureName1] 工具提示
DynamicVariables=1 动态值(用於工具提示)
[MeterView1]
MeasureName=MeasureView1
Meter=STRING
StringAlign=CENTER
ClipString=1
W=190
H=18
X=0r X座标继承上一个
Y=18r Y座标继承上一个+18
MeterStyle=TextStyleB
AntiAlias=1
由於某些取回来的数值可能会长到超出背景图范围,所以我限制了显示区域
这也是我要使用工具提示的原因,过长被截断时可由工具提示观看
接下来直到频道预览图前除了名称里的数字及某些继承的Y座标不同之外
就是一大串的重复了.....所以就省略了
由於6~10频道的 Meter 是经由开关开启的,所以要先设定为隐藏
[MeterImage1]
MeasureName=MeasureImage1
Meter=Image
ImageAlpha=250
W=88
H=50
X=29
Y=70
ToolTipText=#Play#
LeftMouseDownAction=!Execute ["#Path#\flashplayer.exe" "[MeasureStream1]...
MiddleMouseDownAction=!Execute ["[MeasureUrl1]"]
[MeterImage2]
MeasureName=MeasureImage2
Meter=Image
ImageAlpha=250
W=88
H=50
X=r
Y=65r
ToolTipText=#Play#
LeftMouseDownAction=!Execute ["#Path#\flashplayer.exe" "[MeasureStream2]...
MiddleMouseDownAction=!Execute ["[MeasureUrl2]"]
预览图的 Meter ,我设置为左键直接拨放,右键开启网页
接下来除了名称里的数字不同之外
就是一大串的重复了.....所以就省略了
[MeterMask]
Meter=IMAGE
ImageName=mask.png
ImageAlpha=255
X=25
Y=67
Hidden=1
由於嫌只有预览图太丑了,所以帮预览图做了个遮罩加个框
设为隐藏待第10个预览图取得才显示,这样才不会一载入就显示,很突兀
[MeterShadow]
Meter=IMAGE
ImageName=shadow.png
ImageAlpha=255
上下横幅加了个阴影效果
阴影我需要的效果是会盖到某些 Meter 故我写在最後面(最上层)
某些脚本因为过长有被我截断,可以下载完成的 SKIN 观看
http://db.tt/RnG6phlY
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.7.66
1F:推 ciaerin:很棒推~~ 可以放个实图吗 10/25 09:14
3F:→ SilentWorld:下面那个是另一种应用....星座每日运势 XD 10/25 10:38
4F:推 ciaerin:再推!!! 10/25 17:25
5F:→ ciaerin:实用又有质感 棒 10/25 17:25
6F:推 b2623256:推~~~ 10/30 15:11