【教程】把随机题头图换成自己的图片,让思源笔记更加赏心悦目

本贴最后更新于 466 天前,其中的信息可能已经斗转星移

之前随机题头图文件夹在哪?研究半天没研究出来,今天无意中翻到了 leolee 的文章《思源笔记折腾记录-整点花里胡哨-自己定义随机头图》,很简单地就实现了,所以分享一下。

为了方便需要的人直接操作,我在这里只说明步骤,对思路感兴趣的话请去看原文。

另外,我使用 Win10 ,不了解其他操作系统。

01 把图片塞进文件夹

1 在工作空间目录下新建文件夹:/snnipets/assets/backgrounds

如果你想换个目录,可能需要改改后面的代码

image

image

2 把自己的图片放入这个文件夹

image

02 加一个代码片段

1 把这串代码复制粘贴到 主菜单 > 设置 > 外观 > 代码片段 > JS 中

注意:如果粘贴时带有版权小尾巴要手动删除

/* 自定义随机头图 JS片段 */
(() => {
    async function 生成随机背景链接() {
        let 请求响应 = await fetch('/snippets/assets/backgrounds/')
        let 临时dom = new DOMParser().parseFromString(await 请求响应.text(), "text/html")
        let 图片链接数组 = 临时dom.querySelectorAll('a')
        let 随机链接 = 图片链接数组[Math.floor(Math.random() * 图片链接数组.length)].getAttribute("href")
        随机链接 = "/snippets/assets/backgrounds/" + 随机链接
        return 随机链接
    }
    document.addEventListener('contextmenu', 更换随机背景图)
    async function 更换随机背景图(event, 元素) {
        let 触发目标 = event.target
        if (元素) {
            触发目标 = 元素
        }
        if (触发目标.tagName == 'svg' || 触发目标.tagName == 'use') {
            更换随机背景图(event, 触发目标.parentElement)
            return
        }
        if (触发目标.classList.value == "protyle-icon b3-tooltips b3-tooltips__sw") {
            let 随机链接 = await 生成随机背景链接()
               触发目标.parentElement.parentElement.querySelector('img').setAttribute("style", '')
               触发目标.parentElement.parentElement.querySelector('img').setAttribute("src", 随机链接)
            fetch('/api/attr/setBlockAttrs',
                {
                    method: 'post',
                    body: JSON.stringify({
                        id: 触发目标.parentElement.parentElement.parentElement.getAttribute("data-node-id"),
                        attrs: { 'title-img': `background-image:url(${随机链接})` }
                    })
                }
            )
        }
    }
})()

2 按以下顺序操作

image

03 开始用吧

1 左键点击文档标题上方的 随机题头图 按钮

image

2 右键点击题头图右下方的 随机 按钮(左键点击仍为原生随机题头图)

image

image

现在显示的就是刚才放在文件夹中的图片了,再次右键点击可以再随机下一张图片

如果你点击了之后它没有变,可能是随机到同一张图片了,你也可以自己改改代码让它能看起来更“随机”一点。

注:有时候图片可能没加载出来,这时候重启思源就行了

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23020 引用 • 92609 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 虽然在编程行业用中文定义变量名称是禁忌,但是,程序能跑就行,如果使用 ys 作为变量名,后面的人难以维护,ys: 医生,颜色,钥匙,原生

    cf:重复,成分.... 等等等等,咱就是说用中文也不是不行,能用就行

  • 其他回帖
  • jianjian12138

    image.png大哥,怎么运行成功的?求教

  • GloR

    感谢分享!这么细致清楚的教程,真的太感动了!

    试了一下,代码可以成功运行~

    但是还是想请教下,指定的文件夹 是不是只能在 工作目录下呢?比如我用 billfish 软件整理了一个包含十几万张图片的图库文件夹,但这个文件夹在工作目录之外(且不能移动到工作目录下),我想指定这个文件夹为图池,但将文件夹改为绝对路径后,发现代码就无法运行了。

    👉 感觉潜在的优化空间是:指定本地任意 1 个 or 几个文件夹 为图池文件夹~ ⇐ 不过好像不太现实 😂 这么看来,如果不想在本地产生冗余图片副本的话,可能就得基于 图床 来随机了。目前已知可以基于图床填入特定的网络 url,但是如何基于指定的图床进行随机,还需要研究下

    2 回复
    1 操作
    GloR 在 2023-09-14 10:06:33 更新了该回帖
  •         if (元素) {
                触发目标 = 元素
            }
    

    猛一看,有点恍惚。不过为啥不用拼音前缀比如 ys元素 cf触发目标

    1 回复
  • 查看全部回帖