

|ू・ω・ )雨滴萌新来交作业啦
没错,就是这一行小字。可交互功能如下,源码附后,使用方法附后后:
左击正文部分:手动更新一言
右击正文部分:1)复制并收藏句子;2)文字变色
文字变色时右击正文部分:1)取消收藏;2)文字变回原来的颜色
可以一直戳戳戳,自己玩的时候没发现bug
隔一段时间会自动更新(默认300秒)
每次更新都会自动保存句子

总共有两个文件,一个是lua脚本文件,另一个是ini配置文件,使用方法放在后面,先给源码~
EditFile.lua
function WriteFile(FilePath,Content)
FilePath = SKIN:MakePathAbsolute(FilePath)
local File = io.open(FilePath, 'a')
File:write(Content)
File:close()
end
function DeleteFile(FilePath)
FilePath = SKIN:MakePathAbsolute(FilePath)
local file = io.open(FilePath, "r+")
local content = file:read("*all")
local t = string.gmatch(content, "([^\n]+)[\n]*$")()
local content_len = string.len(content)
local t_len = string.len(t)
file:close()
local str = string.sub(content, 0, content_len-t_len-1)
file = io.open(FilePath, 'w')
file:write(str)
file:close()
end
function DetectValue(String1,String2)
if(String1 == "null")
then
return ""
else
return String2
end
end
Hitokoto.ini
;——————————————————————————————————————
;设置全局
[Rainmeter]
Update=#Update(ms)#
DynamicWindowSize=1
AccurateText=1
;——————————————————————————————————————
;设置变量
[Variables]
Scale=1
Update(ms)=100
RefreshTime(s)=300
FontFace=微软雅黑
FontColor=255,255,255,255
FontColorChangeTo=0,255,0,255
Time="([MeasureDay] [MeasureTime])"
FilePath_Like="C\:\\Users\\(这里填用户名)\\Documents\\Hitokoto_Favorites.txt"
FilePath_Auto="C\:\\Users\\(这里填用户名)\\Documents\\Hitokoto_AutoSave.txt"
Output="[MeasureChild1]——[&MeasureScript:DetectValue('[&MeasureChild3]','[MeasureChild3]')]「[MeasureChild2]」"
;修改FilePath需要保证路径上的文件夹存在,否则会报错。txt如果不存在,会自动创建
;“:”和“\”需要用“\”转义
;——————————————————————————————————————
;加载脚本
[MeasureScript]
Measure=Script
ScriptFile=EditFile.lua
Disabled=1
;——————————————————————————————————————
;设置文本属性
[TextStyle]
FontFace=#FontFace#
FontColor=#FontColor#
Group=StringGroup
StringEffect=Shadow
SolidColor=0,0,0,1
AntiAlias=1
;——————————————————————————————————————
;获取一言
[GetText]
Measure=Plugin
Plugin=WebParser
UpdateRate=(#RefreshTime(s)#*1000/#Update(ms)#)
Url=https://v1.hitokoto.cn/?c=a&c=d&c=g&c=h&c=i&c=k
RegExp="hitokoto":"(.*)","type":".*","from":"(.*)","from_who":["]{0,1}(?U)(.*)["]{0,1},"creator":"
OnChangeAction=[!CommandMeasure MeasureScript "WriteFile('#FilePath_Auto#','#Time##Output#\n')"][!DisableMouseAction StringOne "RightMouseDownAction"][!EnableMouseAction StringOne "RightMouseUpAction"][!SetOptionGroup StringGroup FontColor #FontColor#]
;Url=https://v1.hitokoto.cn/ 获取全部分类
;Url=https://v1.hitokoto.cn/?c=x 其中x取值a~l,可选择多个分类,比如 ?c=a&c=c 即为获取“动画”以及“游戏”分类的句子
;a=动画 b=漫画 c=游戏 d=文学 e=原创 f=来自网络 g=其他 h=影视 i=诗歌 j=网易云 k=哲学 l=抖机灵 其他字符=动画
[MeasureChild1]
Measure=Plugin
Plugin=WebParser
URL=[GetText]
StringIndex=1
[MeasureChild2]
Measure=Plugin
Plugin=WebParser
URL=[GetText]
StringIndex=2
[MeasureChild3]
Measure=Plugin
Plugin=WebParser
URL=[GetText]
StringIndex=3
;——————————————————————————————————————
;获取时间
[MeasureDay]
Measure=Time
Format=%F
[MeasureTime]
Measure=Time
Format=%X
;——————————————————————————————————————
;呈现桌面文本(在[StringOne]处编辑鼠标响应事件)
[StringOne]
Meter=String
Text=『 [MeasureChild1]』
MeterStyle=TextStyle
FontSize=(17*#Scale#)
X=0
Y=(8*#Scale#)
LeftMouseUpAction=!CommandMeasure GetText "Update"
RightMouseDownAction=[!CommandMeasure MeasureScript "DeleteFile('#FilePath_Like#')"][!SetOptionGroup StringGroup FontColor #FontColor#][!DisableMouseAction StringOne "RightMouseDownAction"][!Delay 16][!EnableMouseAction StringOne "RightMouseUpAction"]
RightMouseUpAction=[!SetClip #Output#][!CommandMeasure MeasureScript "WriteFile('#FilePath_Like#','#Time##Output#\n')"][!SetOptionGroup StringGroup FontColor #FontColorChangeTo#][!DisableMouseAction StringOne "RightMouseUpAction"][!EnableMouseAction StringOne "RightMouseDownAction"]
[StringTwo]
Meter=String
Text=——[&MeasureScript:DetectValue('[&MeasureChild3]','[MeasureChild3]')]「[MeasureChild2]」
FontSize=(14*#Scale#)
MeterStyle=TextStyle
X=0R
Y=(-15*#Scale#)R
1、打开记事本,粘贴第二个代码块Hitokoto.ini,另存为ini文件,名称可以自定,这里需要修改编码为UTF-16 LE

2、如法炮制,将第一个代码块EditFile.lua另存为lua文件,这里需要修改编码为UTF-8,同时要把文件名修改为EditFile.lua

2.5、注:由于莫名其妙的原因,lua的代码在稿件预览时被加上了一行文字

如果看到图中所示的浅蓝色高亮的文字的话,请将其替换为英文输入的双引号(")
3、把这两个文件装进一个文件夹里,一起送到雨滴的皮肤保存路径下,一般来说是%UserProfile%\Documents\Rainmeter\Skins

最后长这样
4、最后按照正常的流程,在雨滴主界面双击ini文件就好啦(o゚▽゚)o
5、啊对了,如果要启用文件保存功能,还需要在ini文件中手动补全FilePath路径(缺少用户名),具体如下
所有的配置都可以在ini文件中完成
为了方便调整,我尽可能地把需要个性化的变量都整合到一起,放在“设置变量”部分中

Scale:调整桌面文本的整体大小
Update(ms):皮肤的更新时间,以毫秒计,更短的更新时间意味着手动刷新、收藏时更快的响应速度,同时也意味着更高的资源占用
RefreshTime(s):是一言文本的自动刷新时间,以秒计,默认5分钟刷新一次
FontFace:字体
FontColor:字体颜色,RGBα,也就是三个颜色通道+一个透明度通道
FontColorChangeTo:收藏后字体的颜色变化
Time:保存一言时,附在每句话开头的时间格式。不想要保存时间的话可以直接删掉,保留双引号即可
FilePath:两个变量分别为 手动/自动 保存一言的文件路径。请把“(这里填用户名)”替换为自己的用户名,或者另行更改保存路径。不想要保存的话姑且可以放着不管,这不会影响桌面文本的显示,但会在日志中报错。想完整关闭保存功能请参见下一部分内容
Output:写入剪贴板和txt文档的正文格式
1、修改一言的获取类型,关闭自动保存功能

如上图,在“获取一言”部分中,Url后的路径即为一言接口的请求地址
至于如何修改相关分类,在注释中已经阐述,也可以参考一言开发者中心说明:https://developer.hitokoto.cn/sentence/
顺便一同附上一言官网地址:https://hitokoto.cn/
要关闭自动保存功能,只要删除图中蓝色高亮显示的语句(两端的中括号也一起删掉)即可
2、单独修改文本格式,关闭手动保存和复制功能

在最后的“呈现桌面文本”部分中单独修改文本格式
[StringOne]是正文,[StringTwo]是副标题
Text是文本显示的内容
FontSize修改字体大小
X和Y是文本的位置,“R”表示Relative,即相对上一个元素的位置
至于文本的颜色……因为涉及与鼠标交互的颜色变换,要修改起来相对麻烦一点。如果真的想要分别修改颜色,并且您有Rainmeter皮肤制作经验的话,文章最后一部分是相关代码的编写思路,可以参照着进行修改
要关闭手动保存功能和复制文本功能,只要删除图中蓝色高亮显示的语句即可
要关闭手动保存功能的同时,保留复制文本功能,只要在删除高亮语句的基础上,在原位置添加下面这句即可:
RightMouseUpAction=[!SetClip #Output#]
要保留手动保存功能的同时,关闭复制文本功能,只要在图中蓝色高亮显示的语句中找到下面这句,并删除即可(图中是第三行的“=”的后面):
[!SetClip #Output#]
LeftMouseUpAction=!CommandMeasure GetText "Update"
RightMouseDownAction=[!CommandMeasure MeasureScript "DeleteFile('#FilePath_Like#')"][!SetOptionGroup StringGroup FontColor #FontColor#][!DisableMouseAction StringOne "RightMouseDownAction"][!Delay 16][!EnableMouseAction StringOne "RightMouseUpAction"]
RightMouseUpAction=[!SetClip #Output#][!CommandMeasure MeasureScript "WriteFile('#FilePath_Like#','#Time##Output#\n')"][!SetOptionGroup StringGroup FontColor #FontColorChangeTo#][!DisableMouseAction StringOne "RightMouseUpAction"][!EnableMouseAction StringOne "RightMouseDownAction"] 总共用到三个鼠标事件:LeftMouseUpAction、RightMouseDownAction、RightMouseUpAction
左键抬起:强制更新一言
右键按下:(这个动作在每次一言更新时都会被禁用,以防止误删文档内容)
删除文档最后一句话
将文本组的颜色改为#FontColor#
禁用右键按下的鼠标事件
延迟16ms
启用右键抬起的鼠标事件
右键抬起:
将#Output#复制到剪贴板
将文本组的颜色改为#FontColorChangeTo#
禁用右键抬起的鼠标事件
(中间不需要延迟,因为右键抬起不会误触发右键按下的鼠标事件)
启用右键按下的鼠标事件
然后,在“获取一言”部分的[GetText]的“OnChangeAction”起到初始化文本属性的作用,如下:
OnChangeAction=[!CommandMeasure MeasureScript "WriteFile('#FilePath_Auto#','#Time##Output#\n')"][!DisableMouseAction StringOne "RightMouseDownAction"][!EnableMouseAction StringOne "RightMouseUpAction"][!SetOptionGroup StringGroup FontColor #FontColor#] (在每次一言更新时)
禁用右键按下的鼠标事件
启用右键抬起的鼠标事件
将文本组的颜色设置为#FontColor#
以上,就是所有涉及文本颜色的代码部分了