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

推荐订阅源

V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
V
V2EX
IT之家
IT之家
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
D
Docker
S
Secure Thoughts
Recent Announcements
Recent Announcements
Webroot Blog
Webroot Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
博客园_首页
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Security Archives - TechRepublic
Security Archives - TechRepublic
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
I
InfoQ
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
W
WeLiveSecurity
T
Troy Hunt's Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
美团技术团队
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Scott Helme
Scott Helme
T
Tor Project blog
Know Your Adversary
Know Your Adversary
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
AI
AI
G
Google Developers Blog

涵哲子居

针对于Win用户与Linux用户的战争问题 - 涵哲子居 夏雨自读 - 涵哲子居 初中最后的地生 - 涵哲子居 初中最后的地生 - 涵哲子居 凌侮行径的本质探讨 - 涵哲子居 凌侮行径的本质探讨 - 涵哲子居 我对开源软件与自由软件的看法 我对开源软件与自由软件的看法 - 涵哲子居 如何分类现代编程方法?我对当代编程的理解 - 涵哲子居 如何分类现代编程方法?我对当代编程的理解 我们必须正确认识AI在开发中的作用 我们必须正确认识AI在开发中的作用 - 涵哲子居 浅显利益论 浅显利益论 - 涵哲子居 稳定性与价格——深思如何选择“大厂”与“小厂”服务 稳定性与价格——深思如何选择“大厂”与“小厂”服务 - 涵哲子居 何为学,为何学 何为学,为何学 - 涵哲子居 无聊的人和无趣的人 无聊的人和无趣的人 - 涵哲子居 谈计算机与小男娘 许平·空然 何以止举? 无言以对尔等 丙午杂言 丙午杂言 - 涵哲子居 Termux在Proot内播放音频文件的问题 Termux在Proot内播放音频文件的问题 - 涵哲子居 LeanCloud 停服: 一次关于服务选择的思考 LeanCloud 停服: 一次关于服务选择的思考 - 涵哲子居 记一次使用Zellij的体验 记一次使用Zellij的体验 - 涵哲子居 给fuwari添加NMP播放器 - 涵哲子居 浅谈个人生态链 浅谈个人生态链 - 涵哲子居 [过时] Termux:通用基础包 Hexo博客搭建之从入门到入土 [过时] Termux:通用基础包 - 涵哲子居 Hexo博客搭建之从入门到入土 - 涵哲子居 乙巳杂言 乙巳杂言 - 涵哲子居
给fuwari添加NMP播放器
涵哲子 · 2025-11-16 · via 涵哲子居

上周在逛 Bilibili 的时候,偶然刷到了这个项目,UI 尚可,便尝试一下。 官网:https://nmp.hypcvgm.top

准备工具#

  • 一个善良、友好的 AI,在报错时先问问它
  • 一个优良的、已经配置好的环境,Windows 建议使用 Git BashWSL(文章使用 TermuxProot-distro Archlinux 环境),应有:
    • 已经配置好的 Git 环境
    • nodejs + pnpmnpm
    • 一个符合自己使用习惯的 IDE(文章使用自己配置的 Neovim
  • NMP 文档:https://docs.nmp.hypcvgm.top
TIP
  1. NMP 仅支持网易云歌曲,若有需求可以寻找其它播放器

  2. 若想要播放 VIP 歌曲,请在 NMP文档 自行配置 api

Let us go!#

TIP

本文只介绍 浮动模式, 这是最常用的模式,会出现在博客四角处,可以缩小/放大


下载 css 与 js 文件(使用 CDN 可以略过)#

下载链接: Github

下载后解压,拿出 netease-mini-player-v2.cssnetease-mini-player-v2.js,放到博客根目录下的该位置:

  • public/NMP/

配置 Components#

新建文件 NMP.astro

---

---

<!-- NeteaseMiniPlayer -->

<div

class="netease-mini-player"

data-playlist-id="${yourOwnPlaylistId}"

data-embed="false"

data-position="bottom-left"

data-lyric="true"

data-theme="auto">

</div>

<link

rel="stylesheet"

href="/NMP/netease-mini-player-v2.css" />

<script is:inline

src="/NMP/netease-mini-player-v2.js">

</script>

请将 ${yourOwnPlaylistId} 替换为自己的 歌单id

NOTE

如果使用 CDN,请对文件后半部分进行替换:

<link

rel="stylesheet"

href="/NMP/netease-mini-player-v2.css" />

<script is:inline

src="/NMP/netease-mini-player-v2.js">

</script>

<link

rel="stylesheet"

href="https://api.hypcvgm.top/NeteaseMiniPlayer/netease-mini-player-v2.css" />

<script is:inline

src="https://api.hypcvgm.top/NeteaseMiniPlayer/netease-mini-player-v2.js">

</script>

配置 Layout#

更改文件 Layout.astro:

---

import NMP from "@components/NMP.astro";

import "@fontsource/roboto/400.css";

import "@fontsource/roboto/500.css";

import "@fontsource/roboto/700.css";

import ConfigCarrier from "@components/ConfigCarrier.astro";

import { profileConfig, siteConfig } from "@/config";---

import NMP from "@components/NMP.astro";

import "@fontsource/roboto/400.css";

import "@fontsource/roboto/500.css";

import "@fontsource/roboto/700.css";

import ConfigCarrier from "@components/ConfigCarrier.astro";

import { profileConfig, siteConfig } from "@/config";

...

if (window.swup) {

setup()

} else {

document.addEventListener("swup:enable", setup)

}

</script>

<NMP />

上线测试#

已经成功配置!