惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
罗磊的独立博客
雷峰网
雷峰网
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
B
Blog RSS Feed
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
小众软件
小众软件
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
S
SegmentFault 最新的问题

szhshp 的第三边境研究所

假设, AI 把我代替的那一刻真的到来 | szhshp 的第三边境研究所 小傻瓜都能懂的 AstrBot QQ 机器人集成 MCP 功能实战指南 | szhshp 的第三边境研究所 《智人之上: 从石器时代到 AI 时代的信息网络简史》阅读笔记 | szhshp 的第三边境研究所 iPadOS 26 无法设置空间场景图片壁纸的解决方法 | szhshp 的第三边境研究所 《一路云海》(终) | szhshp 的第三边境研究所 《一路云海》(四): 如何不按套路旅行 | szhshp 的第三边境研究所 《一路云海》(三): In Ya Mellow Tone | szhshp 的第三边境研究所 《一路云海》(二): 关西世博参观纪实 | szhshp 的第三边境研究所 《一路云海》(一): 新的征程 | szhshp 的第三边境研究所 2025 大阪世博会 [ 3 天前-先到先得 ] 阶段 场馆预约必中独家攻略 | szhshp 的第三边境研究所 Hackathon 随想 | szhshp 的第三边境研究所 一杯双皮奶 | szhshp 的第三边境研究所 Armbian + CasaOS + NAS 配置指南 | szhshp 的第三边境研究所 Docker 构建镜像报错: error getting credentials - err: exit status 1, out: `` | szhshp 的第三边境研究所 Disqus RIP! 论过高的维护成本如何治疗固执的坏习惯 | szhshp 的第三边境研究所 炸弹猫桌游变体规则 | szhshp 的第三边境研究所 《小岛经济学》阅读笔记 | szhshp 的第三边境研究所 《金钱心理学》阅读笔记 | szhshp 的第三边境研究所 为知笔记 RIP: 迁移剩余的笔记 | szhshp 的第三边境研究所 2025 博客第十年展望 - 再见我的过去 | szhshp 的第三边境研究所 我在独立游戏里面致敬的作品 | szhshp 的第三边境研究所 《How to make thing faster》阅读笔记 | szhshp 的第三边境研究所 《The Art of Clean Code》阅读笔记 | szhshp 的第三边境研究所 《Clean Architecture: A Craftsman Guide to Software Structure and Design》阅读笔记 | szhshp 的第三边境研究所 《How AI Works》阅读笔记 | szhshp 的第三边境研究所 游戏策划废案 - Project Uranus | szhshp 的第三边境研究所 游戏策划废案 - Project X | szhshp 的第三边境研究所 人生第一款独立游戏开发复盘 | szhshp 的第三边境研究所 Trap of Life | szhshp 的第三边境研究所 如果我用手搓了个暗物质雏形 | szhshp 的第三边境研究所
Jekyll-这次来玩个随机BGM | szhshp 的第三边境研究所
2017-04-04 · via szhshp 的第三边境研究所

Meta

目录

捡了个蓝牙耳机,这几天基本保持“自带BGM”的状态o(*≧▽≦)ツ ……

很早实现了全局BGM1

再次声明,一定要通过主页才能看到播放器: 主页

不过从头到尾只有一首曲子,并且云音乐有些烦人,无法实现多曲目选择。虾米可以多曲目外链,不过还是无法实现随机选曲的功能。

那么该如何实现呢?

三个方案:

  1. 发邮件威胁虾米音乐网站实现随机选曲播放功能
  2. 发邮件威胁网易云音乐网站实现多曲目外链播放器
  3. 自己写

好好好……自己写

其实很简单,要不就Server实现要不就Client实现。搜了一下要实现Random Number居然需要写一个Custom Liquid Tag2

其他人也提到一个办法,使用site.time来获取事件然后直接使用,不过有个麻烦就是这个事件是基于Generated Time,本地调试的时候在不停地rebuild,但是只要不rebuild那么这个时间将永远不会改变。Pages也不可能总是给我们rebuild吧

多(yin)方(wei)考(tai)虑(lan),于是用Client凑个数吧。

逻辑没啥好说的,音乐网站每首曲子肯定都有ID,并且iframe外链的src写的清清楚楚。

<ifra*me frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=22706997&auto=1&height=66"></ifra*me>

页面onReady的时候加入一个新iframe即可:

$(function(){
    arrMusicID = [33469292,32648543,28287132,26511034,435305771,27588029,41462985,28656150,4010799];  //musicID array
    musicID = Math.floor(Math.random()*(arrMusicID.length)) //get a ran num as index
    $('body').css('height',document.documentElement.clientHeight -5);

    if (!Number.isInteger(arrMusicID[musicID])) return; // load failed, bye~

    var iframe = document.createElement('iframe');
    iframe.id="bgm";
    iframe.style = "position: absolute; bottom: 0; left: 30px; border: 0px;";
    iframe.src = '//music.163.com/outchain/player?type=2&id=' +arrMusicID[musicID]+ '&auto=1&height=32';
    console.log(iframe.src)
    iframe.frameborder="no";
    iframe.marginwidth="0";
    iframe.marginheight="0";
    iframe.width=250;
    iframe.height=52;
    document.body.appendChild(iframe);
});

So Easy

如果你是从主页进来的,刷新下全页面即可换BGM

2017-08-25更新:动态获取网易云歌单

需要的材料:

  1. 一个服务器
  2. 自己在网易云创建一个歌单

实现步骤

其实也很简单,并且既然已经有轮子了就不需要自己来写了:

  1. fork一个现成的三方API: https://github.com/Binaryify/NeteaseCloudMusicApi
  2. 把项目Deploy到服务器上,参考repo的guide即可
  3. 修改一下服务器端的代码,直接修改app.js文件,里面可以看到如何开启允许跨域
  4. 前文获取MusicID的部分修改一下,改成使用AJAX调用歌单并且返回JSON文件
    • 当然此处如果AJAX调用失败,那么可以加个callback然后使用一个hardcoded的歌单
  5. 解析JSON然后取出对应歌单的所有MusicID,然后使用前文的逻辑,选择一个ID然后生成播放器

如此以后每次修改音乐就只需要到云音乐端实现即可

参考文献

  1. [来给博客加个全局BGM吧]({% post_url 2016-11-19-whynotaddabgmforurblog %}) ↩

  2. http://stackoverflow.com/questions/7488393/jekyll-liquid-random-numbers