【Rainmeter/雨滴】一言(Hitokoto)小插件

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


源码
总共有两个文件,一个是lua脚本文件,另一个是ini配置文件,使用方法放在后面,先给源码~
EditFile.lua
Hitokoto.ini

安装方法
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、RightMouseDownAction、RightMouseUpAction
左键抬起:强制更新一言
右键按下:(这个动作在每次一言更新时都会被禁用,以防止误删文档内容)
删除文档最后一句话
将文本组的颜色改为#FontColor#
禁用右键按下的鼠标事件
延迟16ms
启用右键抬起的鼠标事件
右键抬起:
将#Output#复制到剪贴板
将#Time##Output#\n写入文档,“\n”起到换行的作用
将文本组的颜色改为#FontColorChangeTo#
禁用右键抬起的鼠标事件
(中间不需要延迟,因为右键抬起不会误触发右键按下的鼠标事件)
启用右键按下的鼠标事件
然后,在“获取一言”部分的[GetText]的“OnChangeAction”起到初始化文本属性的作用,如下:
(在每次一言更新时)
将#Time##Output#\n写入文档
禁用右键按下的鼠标事件
启用右键抬起的鼠标事件
将文本组的颜色设置为#FontColor#
以上,就是所有涉及文本颜色的代码部分了

