【07-19 问题请教】关于 TimeStampFormat
rainmeter吧
全部回复
仅看楼主
level 9
somi 楼主
用WebParser获得两日期2020-07-17、2020-07-16,然后用 Substitute 将它变成 07/17 这样的格式
[wp111111]
Measure=Plugin
Plugin=WebParser
Url=[.....]
StringIndex=1
Substitute="2020-":"","-":"/"
[wp222222]
Measure=Plugin
Plugin=WebParser
Url=[.....]
StringIndex=2
Substitute="2020-":"","-":"/"
然后将上面的日期字符串转成日期,以便计算
[MS111111]
Measure=Time
TimeStamp=[wp111111]
TimeStampFormat=%m/%d
Format=%m/%d
DynamicVariables=1
[MS222222]
Measure=Time
TimeStamp=[wp222222]
TimeStampFormat=%m/%d
Format=%m/%d
DynamicVariables=1
[MS000000]
Measure=Calc
Formula=([MS111111:TimeStamp] - [MS222222:TimeStamp])/(60*60*24)
DynamicVariables=1
能计算
正确的
结果,但是日志报错:Invalid TimeStampFormat: %m/%d
很少计算两时间差,不知哪错了
2020年07月19日 07点07分 1
吧务
level 14
首先,你的算法上没有问题,TimeStampFormat也没有问题,只是WebParse获取网络信息需要时间,在成功捕获信息之前,两个相关Measure处于空字符串状态,因此这段期间内会出现TimeStampFormat无法匹配信息的报错现象。解决方法就是在WebParse相关measure中添加FinishAction选项,结合bang指令,直到WebParse成功捕获插件信息后再激活其余相关Measure。
第二,我有个问题,既然要两个时间相减,为什么还要用Substitute改变时间格式?直接用WebParse获取的时间不行吗?没有年份信息的情况下,Time是无法得到正确的时间戳信息的
2020年07月19日 11点07分 2
等会我试试,第二点那个问题,是因为处理过的那个短日期我要显示出来看(懒得再新建一个measure来处理了)。后面那个虽然没带年份,但能计算得出正确答案,不知为什么呢。。。上面那段代码用意是比较一下两个日期是否一样,你有没有更简单的方法?
2020年07月19日 12点07分
加finishaction的话,是不是写成FinishAction=[!EnableMeasure MS111111][!EnableMeasure MS222222]这样子?
2020年07月19日 12点07分
果然,加了FinishAction和!EnableMeasurer后没报错了
2020年07月19日 12点07分
谢谢[玫瑰]。。按这方法处理那些整天报错除0的貌似也不错。。只是,一个两个Measure这样子处理倒不麻烦,若是十几个或更多,还挺让人“头痛”的
2020年07月19日 12点07分
level 7
怎么关闭[Meter***]
例如,我要用本地图片w1.png,替换掉网站上对应的图片w1.png,在本地没有相应的图片(w1.png)时,先不执行[Meter***],
+++++++++++++++
[MeterDay1DIcon]
MeasureName=MeasureDay1IconUrl
Meter=Image
ImageName=
#CURRENTPATH#
#ICO1#
\w1.png
X=(
#MeterDay1DIconX#
*
#Scale#
)
Y=(
#MeterDay1DIconY#
*
#Scale#
)
W=(
#MeterDay1DIconW#
*
#Scale#
)
AntiAlias=1
ImageTint=
#TextColor2#
2022年11月20日 15点11分 3
如果本地没有对应的图片,在雨滴里是不会显示出来的,只会在雨滴关于的窗口显示错误信息。。。//停用meter,加个UpdateDivider=-1上去就可以,但问题是你要判断电脑上存不存在那张图片,费力不讨好(而且雨滴好像也没有这样的功能与方法),补全图片最实际了
2022年11月21日 05点11分
如果你有些图片还没找到满意的,你就先用网站上的图片呗,将网站的天气图片全下载回来,缺哪些就选对应的补上。。网址/w*.png,*从1到200或随便定个数,用下载软件批处理下载回来
2022年11月21日 05点11分
我刚接触雨滴时也是从改天气皮肤开始的,也是想着用自己的图片来显示,结果猛修改猛改下来,发现自己原来是250。。。除非你喜欢的图片能找到全套的,要不然这是个笨活。。。改到最后有可能你会否决掉已做了差不多的天气皮肤[哈哈]
2022年11月21日 05点11分
@somi 找个一种办法,把缺失的图片指向到,本地一个像素的空白png上,这样就不会报错了,已经试成功。
2022年11月21日 08点11分
level 7
;-------------------------文档存储0--------------------------
[MeasureCurrentM]
Measure=Plugin
Plugin=WebParser.dll
UpdateRate=
#UpdTime1#

Header=Cache-Control: no-cache
Url=https://m.moji.comDownload=1
DownloadFile=weatherm.txt
FinishAction=[!EnableMeasure MeasureCurrentweatherm][!EnableMeasure DownloadHTML][!EnableMeasure DownloadHTMLX][!EnableMeasure MeasureCurrent][!EnableMeasure Measure5Days]
[MeasureCurrentweatherm]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
UpdateRate=
#UpdTime1#

Url=file://
#CURRENTPATH#
\DownloadFile\weatherm.txt
RegExp="(?siU).*
"
FinishAction=[!EnableMeasure DownloadHTML][!EnableMeasure DownloadHTMLX][!EnableMeasure MeasureCurrent][!EnableMeasure Measure5Days]
;-------------------------文档存储0--------------------------
;-------------------------文档存储1--------------------------
[DownloadHTML]
Measure=Plugin
Plugin=WebParser.dll
UpdateRate=
#UpdTime1#

Header=Cache-Control: no-cache
Url=https://tianqi.moji.com/weather/china/[MeasureCurrentweatherm]
StringIndex=1
Download=1
DownloadFile=weather.txt
FinishAction=[!EnableMeasure MeasureCurrent][!EnableMeasure Measure5Days]
;-------------------------文档存储1--------------------------
;-------------------------文档存储2--------------------------
[DownloadHTMLX]
Measure=Plugin
Plugin=WebParser.dll
UpdateRate=
#UpdTime1#

Header=Cache-Control: no-cache
Url=https://tianqi.moji.com/forecast7/china/[MeasureCurrentweatherm]
StringIndex=1
Download=1
DownloadFile=weatherX.txt
FinishAction=[!EnableMeasure MeasureCurrent][!EnableMeasure Measure5Days]
;-------------------------文档存储2--------------------------
;获取头部信息
[MeasureCurrent]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
UpdateRate=
#UpdTime1#

Url=file://
#CURRENTPATH#
\DownloadFile\weather.txt
RegExp="(?siU).*.*.*.*(.*).*.*(.*).*.*(.*).*(.*).*(.*).*.*(.*).*(.*).*.*(.*).*.*
(.*)
.*.*
(.*)
"
;获取主体信息
[Measure5Days]
Measure=Plugin
Plugin=WebParser.dll
Header=Cache-Control: no-cache
UpdateRate=
#UpdTime1#

URL=file://
#CURRENTPATH#
\DownloadFile\weatherX.txt
RegExp="(?siU)(.*).*(.*).*(.*).*src="(.*)".*.*(.*).*(.*).*(.*).*.*(.*).*(.*).*src="(.*)".*.*(.*).*(.*).*(.*).*.*(.*).*(.*).*src="(.*)".*.*(.*).*(.*).*(.*).*.*(.*).*(.*).*src="(.*)".*.*(.*).*(.*).*(.*).*.*(.*).*(.*).*src="(.*)".*.*(.*).*(.*).*(.*)"
;-------------------------------------------------------------
2022年11月21日 18点11分 4
level 7
2022年11月21日 18点11分 5
level 7
以上代码是从m.moji.com上获取自动定位的城市,例如“shandong/yantai”,在把这个城市赋给墨迹天气https://tianqi.moji.com/weather/china/shandong/yantai,但刷新时,有时报错,有时又不报错,应该是文件下载前后顺序的问题,怎么写才不报错?谢谢
2022年11月21日 18点11分 6
level 9
somi 楼主
你的回复有些被吃了,不过有回复通知里能看到个大概
我看你是越写越乱了吧
另外,我查了一下Cache-Control: no-cache,
查得有人说这个并不会是真的不缓存,
如果想要不缓存,得换另一指令,具体可搜前面那串英文
[MS获取当天信息]
Measure=WebParser
UpdateRate=
#UpdTime1#

Url=首页或指定城市的墨迹网址
Download=1
DownloadFile=weatherm.txt
FinishAction=[!EnableMeasure MS当天信息]
[MS当天信息]
Measure=WebParser
UpdateRate=
#UpdTime1#

Url=file://
#CURRENTPATH#
\DownloadFile\weather.txt
RegExp=当天信息的正则表达式
Disabled=1
[当前温度]
Measure=WebParser
Measure=WebParser
Url=[MS获取当天信息]
StringIndex=1
[当天最高]
.....
....
....
2022年11月22日 04点11分 7
由于[MS当天信息]里设置了Disabled=1,所以如果你先前已将网页下载回来,碰巧下次开机时一直没有网络,那么你的皮肤也是显示不出天气的
2022年11月22日 04点11分
所以,Disabled=1那里干脆就不加了,反正文件之前已下载了(就算在关于那里显示错误,也就第一次显示而已),且有更新时,它是会自动更新的,相应地FinishAction那一行就可以删除掉了
2022年11月22日 05点11分
level 9
somi 楼主
然后是多天的:
[MS获取多天信息]
Measure=WebParser
UpdateRate=
#UpdTime1#

Url=多天预报墨迹网址
Download=1
DownloadFile=保存的文件名
FinishAction=[!EnableMeasure MS多天信息]
[MS多天信息]
Measure=WebParser
UpdateRate=
#UpdTime1#

Url=file://
#CURRENTPATH#
\DownloadFile\文件名
RegExp=多天信息的正则表达式
Disabled=1
[第二天最高温度]
Measure=WebParser
Measure=WebParser
Url=[MS多天信息]
StringIndex=1
[第二天最低温度]
Measure=WebParser
Measure=WebParser
Url=[MS多天信息]
StringIndex=2
.....
....
另外,如果多天信息格式是一样的,那么可以先将单一的HITML源代码抽出来,写在[Variables]下面,如(只是举个例子,实际的按源代码里的写):
多天格式=明天最高25.....
然后[MS多天信息]的RegExp就可以写成(假设多天天气预报前面有个“多天信息”在源代码中是唯一的,如果不是唯一的,那下面的RegExp就会失效不起作用)
RegExp=多天信息
#多天格式#
#多天格式#
......
#多天格式#

要提取多少天,就有多少个“
#多天格式#

2022年11月22日 04点11分 8
“多天信息”可以是几个字或一串代码,只要保证在源代码里是唯一的就行
2022年11月22日 05点11分
level 9
somi 楼主
另外,那个!EnableMeasure是支持组的,如果想启用同一组的Measure,那就可以写成(有些元素省略不写):
[MS获取信息]
Measure=WebParser
FinishAction=[!EnableMeasureGroup 组一]
[MS1]
Measure=WebParser
Group=组一
[MS2]
Measure=WebParser
Group=组一
[MS3]
Measure=WebParser
Group=组一
....
2022年11月22日 04点11分 9
1