Hugo 网站优化(8): 在博客上看电视, 使用 hugo shortcodes 支持 bilibili

简介: 保障学习质量, 视频、图、文 一体。

<!--

大家好, 我是老麦

欢迎 关注公众号 Go与云原生订阅网站 https://tangx.in/ 第一时间看后续精彩文章。

觉得好的话,请猛击文章右下角「点赞、关注、转发」 一键三连, 是对我的最大支持。

-->

Hugo 网站优化(8): 使用 hugo shortcodes 支持 bilibili

原文链接: https://tangx.in/posts/2023/01/04/hugo-bilibili-support/

在学习的时候希望资料和笔记内容都能在一起。 这样 查阅、回顾 起来就更方便了。

hugo 短代码(shortcodes) 模版

在搜索的时候, 找到 利用hugo的短代码功能插入b站视频并且自适应 了这篇文章, 实现了嵌入 Bilibili 的播放器。

进一步查询 hugo - 短代码hugo - 自定义段代码模版 , 并参考原文。

终于实现了, 在书房看电视的方案。

Bilibili 视频引用语法

在书房中看电视的语法规则。

支持两个参数

  1. 视频ID视频地址
  2. 合集视频中的 第N集, 默认值为 1。

支持两种语法

  1. 具名语法, 根据参数名传递。

    • src: 视频ID 或 地址
    • page: 分集

named-grammar

建议使用 具名语法, 这样在 markdown 中跳转更方便。
  1. 匿名语法, 根据参数位置传递。

    • 参数1: 视频ID 或 地址
    • 参数2: 分集

unnamed-grammar

仅仅是为了保留语法与兼容性考虑。

代码实现

  1. 主题 代码中, 添加 layouts/shortcodes/<name>.html 。 这里的 name 就是以后 Markdown 中的引用名字。 例如, bilibili.html
  2. 复制代码
<!-- 语法规则
    1. 匿名模式
        <bilibili BV1Wg411t7EE 233>
    2. 具名模式
        <bilibili 
            src="https://www.bilibili.com/video/BV1RK41117eY/" 
            page="332"
        >
-->

<!-- 获取第一个参数 作为视频地址 -->
{{- $dest := ( .Get 0) -}}

<!-- 如果是具名模式, 获取 src -->
{{ if .IsNamedParams }}
    {{ $dest = (.Get "src") }}
{{ end }}

<!-- 判断是否为 全路径, 是则获取视频ID -->
{{ if (hasPrefix $dest "http" )}}
    <!-- https://www.bilibili.com/video/BV1RK41117eY/ -->
    {{ $dest = (strings.TrimPrefix "http" $dest ) }}

    <!-- 解析 URL -->
    {{ $url := urls.Parse $dest }}

    <!-- /video/BV1RK41117eY/ -->
    {{ $dest = $url.Path }}

    <!-- BV1RK41117eY -->
    {{ $dest = (path.BaseName $dest) }}
{{ end }}


<!-- 获取专辑中的视频 ID -->
{{- $page := (.Get 1) -}}

{{ if .IsNamedParams }}
    {{ $page = (.Get "page") }}
{{ end }}

<!-- 默认值为 1 -->
{{ if (not $page) }}
    {{ $page = 1 }}
{{ end }}


<!-- 嵌入 bilibili 播放框 -->
<div style="margin: 10px 0 20px 0;">
  <!-- <h3>视频ID: {{ $dest }} - {{ $page }} </h3> -->
  <div style="margin: 5px 0;">

    <span>本视频一切权利归 <strong>bilibili</strong> 及 <strong>原作者所有</strong></span>
    <span>如果觉得好, 请点击跳转到 <strong>bilibili</strong>给予支持</span>
    <a href="https://www.bilibili.com/video/{{ $dest }}/">{{ $dest }}</a>
  </div>

  <div style="position:relative; padding-bottom:75%; width:100%; height:0">
    frameLabelStart--frameLabelEnd 
  </div>
</div>

这里面使用了几个内置函数

  1. hugo 解析字符串 URL: https://gohugo.io/functions/urls.parse/
  2. hugo 获取 BaseName: https://gohugo.io/functions/path.basename/

测试视频: 跟着王老师作牛肉饼

image.png

还是很安逸了

相关文章
|
8月前
|
移动开发 安全 前端开发
分享97个社区论坛PHP源码,总有一款适合你
分享97个社区论坛PHP源码,总有一款适合你
1609 0
|
5月前
|
CDN
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
这篇文章介绍了几种加速访问GitHub的方法,包括使用镜像网站、代理网站下载、利用CDN加速以及转入Gitee平台进行加速。作者建议,对于较大的项目推荐使用代理网站或Gitee下载,而对于较小的项目,使用CDN加速即可满足需求。
惊呆了、老铁。CSDN竟然有GitHub的加速功能????
|
7月前
|
数据采集 Python
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
程序员 数据库 开发者
Sanic中文教程合集:免费下载
Sanic中文教程合集:免费下载
Sanic中文教程合集:免费下载
|
自然语言处理 前端开发 JavaScript
Hugo 建站经验之谈
基于 Golang 语言的 Hugo 来作为 Nebula Graph 建站的技术方案,本文主要分享下前端工程师使用 Hugo 建站的一些个人思考和经验分享。
1231 0
Hugo 建站经验之谈
|
Web App开发 开发者
小玩意 - CSDN 插件(Chrome版)
小玩意 - CSDN 插件(Chrome版)
146 0
小玩意 - CSDN 插件(Chrome版)
|
JSON 前端开发 JavaScript
用jekyll制作高大上的网站(二)——实际应用
最近公司要制作个文档库,直接就可以将jekyll应用到实际中。 模版使用了Jekyll Clean,这么模版相对内部简单一点,学习成本不会很大,而复杂的Minimal Mistakes就当作参考。 模版使用的CSS是Bootstrap v3.2.0版本的。为了省时点,我就直接将Bootstrap官网中的CSS和JS拉了下来。
用jekyll制作高大上的网站(二)——实际应用
|
Web App开发 JavaScript 网络安全
用jekyll制作高大上的网站(一)——安装与配置
很多人会制作自己的主页,页面美观简洁,一直很在意是怎么做的。 最近公司需要做个文档库的主页,就研究了一些开源的工具,后面发现了jekyll(读杰克尔),将纯文本转换为静态博客网站。
用jekyll制作高大上的网站(一)——安装与配置
|
Web App开发 Kubernetes JavaScript
真爱!微软宣布新开源网站,由 Jekyll 一键生成,代码所见即所得
近日,微软上线了一个新的开源网站。这不是微软唯一的开源网站,但却代表了新的起点。网友表示:这次真的拥抱开源了!从「恨」到「爱」,微软与开源有着一段长达30年的故事。
169 0
真爱!微软宣布新开源网站,由 Jekyll 一键生成,代码所见即所得
|
Linux 网络安全 数据安全/隐私保护
上课摸鱼必备 -- Vscode网页版的搭建教程
使用code-server搭建在线运行的Vscode,部署到阿里云上
上课摸鱼必备 -- Vscode网页版的搭建教程

热门文章

最新文章