遇到的问题
Media Extended插件可以获得b站视频,但是我想根据视频的地址,获得视频的封面,并且把它自动放入头部的yaml区域,比如像下面这样,需要怎么做?
---
cover: http://i2.hdslb.com/bfs/archive/38b3f87821502031f97aebd1613a17e40165a901.jpg
---
Media Extended插件可以获得b站视频,但是我想根据视频的地址,获得视频的封面,并且把它自动放入头部的yaml区域,比如像下面这样,需要怎么做?
---
cover: http://i2.hdslb.com/bfs/archive/38b3f87821502031f97aebd1613a17e40165a901.jpg
---
URL对应的封面和URL可能是两个完全不相同的链接,我看github和油管都是三方的链接
有个vault explorer有类似的功能,抓取URL对应的封面显示为预览,或许楼主可以参考一下源码
是 Windows 吗,能折腾吗?
我写过一个 Quicker 动作可以快速把 OB 视频的信息粘贴到当前笔记,也包括(可选)获取视频封面:
获取标签页(获取视频封面):
动作网址
启用之后,如果当前网页是 Youtube 或者 Bilibili 的视频页面,会自动获取视频的封面并粘贴进来。配合上面的粘压图片动作可以避免被超大体积的封面图背刺。
顺便,这个动作本来是为了方便在 QQ 上给人分享网址的,所以还支持了不少别的功能,包括但不限于:
截取视频画面/插入空降时间:
动作网址
针对正在播放视频的网页,运行这个动作可以自动截取视频画面并粘贴进来。同样可以配合粘压图片动作,避免截图文件过大。
同时也提供了时间码&空降时间链接的功能,可以复制当前时间(或者可以直接跳转到当前时间的空降链接)并粘贴。
愿意折腾的话可以基于这几个动作改改。
关于上述动作,在之前的一篇文章( 【技巧】超越快捷键!实现 Obsidian 内的「文本指令」 - 经
验分享 - Obsidian 中文论坛)里也有介绍。
另附操作 Frontmatter 的范例代码:
const notePath = tp.file.path(true); // 这里要使用相对路径,否则下面的函数读取不到的
const fileObj = app.vault.getAbstractFileByPath(notePath);
// 调用 processFrontMatter 来更新 fm
app.fileManager.processFrontMatter(fileObj, (fm) => {
fm[propDone] = true;
fm[dailyRating] = parseInt(newScore);
});
其实现在 AI 这么方便了,自己搞不定的话直接让 AI 帮你写也可以的…… 大概思路就是 OB 那个动作获取到封面的链接(现成的)之后,再调用 OB 执行一个脚本操作元数据。
我自己做过一个类似的「把链接添加到元数据」的 Workflow,不过一般没人愿意这么折腾所以就不展开说了……
下载了你的动作,但是运行后显示"浏览器 chrome 未链接"错误
已经做好了,我刚才没有安装chrome的quicker插件
但是你的动作可以实现视频截图的功能,但是并没有获得视频封面的功能
噢是这样,获取封面的是第一个动作:
获取标签页(获取视频封面) :动作网址
在视频页面运行这个动作,右键「粘贴两次」,然后在需要的地方按下 V
键就能粘贴上图片。
之所以叫“粘贴两次”是因为像 QQ 这样的软件没法直接粘贴图文混合的内容,需要先粘贴文本再粘贴图片……但总之这个动作的「后半段」就是你想要的获取封面
LinkProcess 子程序中返回的 picUrl
变量就是封面图片的链接:
目前只针对B站和油管做了获取封面的处理。