Media Extended插件能否获取b站视频封面,并自动填入yaml区域

遇到的问题

Media Extended插件可以获得b站视频,但是我想根据视频的地址,获得视频的封面,并且把它自动放入头部的yaml区域,比如像下面这样,需要怎么做?

---
cover: http://i2.hdslb.com/bfs/archive/38b3f87821502031f97aebd1613a17e40165a901.jpg
---

URL对应的封面和URL可能是两个完全不相同的链接,我看github和油管都是三方的链接

有个vault explorer有类似的功能,抓取URL对应的封面显示为预览,或许楼主可以参考一下源码

1 个赞

是 Windows 吗,能折腾吗?

我写过一个 Quicker 动作可以快速把 OB 视频的信息粘贴到当前笔记,也包括(可选)获取视频封面:
image


获取标签页(获取视频封面)
动作网址

启用之后,如果当前网页是 Youtube 或者 Bilibili 的视频页面,会自动获取视频的封面并粘贴进来。配合上面的粘压图片动作可以避免被超大体积的封面图背刺。

顺便,这个动作本来是为了方便在 QQ 上给人分享网址的,所以还支持了不少别的功能,包括但不限于:

  1. 通过「先粘贴文本,再粘贴图片」的方式,支持聊天框里的粘贴
  2. 多选标签页的时候运行,可以复制多个标签页的链接
  3. 右键可以选择复制成纯文本、MD 格式或者是仅网址的模式

截取视频画面/插入空降时间
动作网址
针对正在播放视频的网页,运行这个动作可以自动截取视频画面并粘贴进来。同样可以配合粘压图片动作,避免截图文件过大。
同时也提供了时间码&空降时间链接的功能,可以复制当前时间(或者可以直接跳转到当前时间的空降链接)并粘贴。


愿意折腾的话可以基于这几个动作改改。

关于上述动作,在之前的一篇文章( 【技巧】超越快捷键!实现 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 键就能粘贴上图片。
image

之所以叫“粘贴两次”是因为像 QQ 这样的软件没法直接粘贴图文混合的内容,需要先粘贴文本再粘贴图片……但总之这个动作的「后半段」就是你想要的获取封面

LinkProcess 子程序中返回的 picUrl 变量就是封面图片的链接:

目前只针对B站和油管做了获取封面的处理。