音趴_内部定制开发

Linux

压缩与解压

压缩

tar -cvzf MusicParty_0.1.tar MusicPartyBak/
tar -cvzf MusicParty_0.2.tar MusicParty/

解压

// linux
tar -xvzf MusicParty_0.2.tar -C ./
// windows
tar -xvzf MusicParty_0.2.tar -C .\

docker镜像制作

最近使用Dockerfile-backend构建后端镜像报错

root@RainYun-3ekCqybn:~/data/docker_data/MusicParty# docker build -t musicparty-backend:latest --file Dockerfile-backend .
[+] Building 0.5s (2/2) FINISHED                                                                                                docker:default
 => [internal] load build definition from Dockerfile-backend                                                                              0.0s
 => => transferring dockerfile: 431B                                                                                                      0.0s
 => ERROR [internal] load metadata for docker.io/bitnami/dotnet-sdk:6                                                                     0.5s
------

原因,docker镜像bitnami/dotnet-sdk命名方式使用了SHA-256哈希值替代了原来的数字版本号

解决办法:修改后端docker构建文件Dockerfile-backend第一行

FROM bitnami/dotnet-sdk:6
改为
FROM vminnovations/dotnet-sdk:6.0

分别是前端、后端、网易音乐api、qq音乐api

docker build -t musicparty-frontend:latest --file Dockerfile-frontend .
docker build -t musicparty-backend:latest --file Dockerfile-backend .
docker build -t musicparty-neteaseapi:latest --file Dockerfile-neteaseapi .
docker build -t musicparty-qqmusicapi:latest --file Dockerfile-qqmusicapi .

注意,没有安装nodejs与npm是构建不了的,会有报错
安装nodejs与npm,正常安装nodejs会自带npm,若没有则手动安装一下

sudo apt install -y nodejs
sudo apt install -y npm

推荐的nodejs安装方式

# 添加 NodeSource 官方源(以 Node.js 18.11.11 为例)
curl -fsSL https://deb.nodesource.com/setup_18.11.11 | sudo -E bash -
# 安装 Node.js 和 npm
sudo apt install -y nodejs

npm镜像源,速度不行就换npm源,淘宝的npm镜像源

npm config set registry https://registry.npmmirror.com/

系统镜像软件源,必要情况下还需要更换系统软件源,我这里使用的debian
https://mirrors.tuna.tsinghua.edu.cn/help/debian/

版本说明

MusicParty_0.1.tar

此版本是修改原项目后,第一个稳定使用的版本

修改的地方:

  • 修复了b站无法使用(修改了两个过时的api)
  • 添加了音量控件

MusicParty_0.2.tar

修改的地方:

  • 使用 localStorage 来持久化音量设置(这样即使页面刷新后,音量值也能够保持
  • 添加封面图片(只添加了网易音乐与B站的,qq的直接返回的空
  • 修改原音乐进度13/36200:13 / 06:02

windows

技术栈

前端是nextjs,后端是C#

nextjs构建

npm run build
或
pnpm build

C#构建

dotnet build

压缩前要忽略

nextjs的

"\MusicParty\music-party\.next"
"\MusicParty\music-party\node_modules"
"\MusicParty\music-party\next-env.d.ts"


"\MusicParty\neteasecloudmusicapi_api\node_modules"

C#的

"\MusicParty\MusicParty\.vs"
"\MusicParty\MusicParty\bin"
"\MusicParty\MusicParty\obj"

"\MusicParty\BilibiliApi\bin"
"\MusicParty\BilibiliApi\obj"

"\MusicParty\NeteaseCloudMusicApi\bin"
"\MusicParty\NeteaseCloudMusicApi\obj"
"\MusicParty\NeteaseCloudMusicApi\.vs"

"\MusicParty\QQMusicApi\bin"
"\MusicParty\QQMusicApi\obj"

"\MusicParty\MusicApiContract\bin"
"\MusicParty\MusicApiContract\obj"

其他

"\MusicParty\.git"
"\MusicParty\neteasecloudmusicapi_api\.git"

解释

node_modules: 是第三方依赖项,
可根据package.json下载,没必要一起打包压缩,占用空间很大,将近1GB

.git:这是Git的版本控制目录,包含了项目的所有历史记录和元数据。

binobj目录,这些目录包含了编译过程中生成的临时文件和构建产物,不应该被包含在源代码库中。

启动脚本

总的

\MusicParty\#totalStart.bat

:: 网易云api项目无法下载的时候可以用 npx NeteaseCloudMusicApi@latest 替代下面命令,从而启动网易云api
start cmd /k "cd .\neteasecloudmusicapi_api && npm start"
:: start cmd /k "cd .\music-party && npm start"
start cmd /k "cd .\music-party && npm run dev"
start cmd /k "cd .\MusicParty && dotnet run -c release"

网易云音乐

\MusicParty\neteasecloudmusicapi_api\#start.bat

npm start

端口修改

\MusicParty\neteasecloudmusicapi_api\package.json第5行

  "scripts": {
    "start": "set PORT=3457 && node app.js",

用途:可以在本地查询api的doc,以及本地查找调试网易云音乐的api

说明

此处api项目从 NeteaseCloudMusicApi 在gitlab
原来在github,但是被DMCA了

保护版权,此仓库不再维护
相关新闻:
https://www.landiannews.com/archives/101953.html
https://www.ithome.com/0/746/942.htm

后端

\MusicParty\MusicParty\#start.bat

dotnet run -c release

端口修改

\MusicParty\MusicParty\appsettings.json第17行

      "applicationUrl": "https://localhost:2706;http://localhost:2706",
端口修改优先级

在ASP.NET Core项目中,关于端口配置的方法有多种,且它们之间存在优先级顺序。以下是对这些修改方法优先级的分析:

  1. WebApplicationBuilder.WebHost.ConfigureKestrel 方法 / appsettings.json 文件:
    • 这两者可以同时起作用,且优先级相对较高。ConfigureKestrel 方法允许在代码中明确指定Kestrel服务器的监听端口,而appsettings.json文件则提供了一种在配置文件中设置端口的方式。当这两种方法都被使用时,通常代码中的设置(即ConfigureKestrel方法)会覆盖配置文件中的设置。
  2. WebApplication.Urls.Add 方法:
    • 这是在.NET 6中引入的新方法,用于在应用程序构建后添加URL。然而,它的优先级低于ConfigureKestrel方法和appsettings.json文件中的设置。如果这些方法已经指定了端口,则Urls.Add方法添加的URL可能会被覆盖。
  3. 命令行参数 --urls
    • 通过命令行参数传递的端口设置优先级较低。当使用dotnet run或其他命令启动应用程序时,可以通过--urls参数指定监听地址和端口。然而,这种设置可以被上述更高优先级的配置方法覆盖。
  4. 环境变量 ASPNETCORE_URLS
    • 环境变量提供了一种在操作系统级别设置应用程序端口的方式。然而,它的优先级同样低于ConfigureKestrel方法和appsettings.json文件中的设置。此外,环境变量具有全局性,可能会影响在同一环境中运行的其他应用程序。
  5. launchSettings.json 文件中的 applicationUrl 属性:
    • 这个属性仅在本地开发计算机上使用,用于指定Visual Studio或IIS Express在启动应用程序时应使用的URL。它的优先级最低,通常只用于开发环境,并且在部署到生产环境时会被忽略。

综上所述,对于ASP.NET Core项目来说,修改端口的优先级顺序大致如下:

  • WebApplicationBuilder.WebHost.ConfigureKestrel 方法 / appsettings.json 文件(两者可同时起作用,优先级最高)
  • WebApplication.Urls.Add 方法(优先级次之)
  • 命令行参数 --urls(优先级较低)
  • 环境变量 ASPNETCORE_URLS(优先级再次之)
  • launchSettings.json 文件中的 applicationUrl 属性(优先级最低,仅用于开发环境)

请注意,这些优先级顺序可能会因ASP.NET Core版本的不同而有所变化,因此在实际开发中应参考相应版本的官方文档。

前端

\MusicParty\music-party\#start.bat

pnpm start

端口修改

\MusicParty\music-party\package.json第6行修改热调试端口,第8行修改生产环境端口

  "scripts": {
    "dev": "next dev -p 3456",
    "build": "next build",
    "start": "next start -p 3456",
调试启动

用途npm run dev 通常用于开发环境,启动开发服务器,支持热更新和快速的开发迭代。

npm run dev -- --port=3456

若无效,则修改文件package.json第6行端口

  "scripts": {
    "dev": "next dev -p 3456",

版本说明

MusicParty_0.1.zip

与linux的MusicParty_0.1.tar对应

此版本是修改原项目后,第一个稳定使用的版本

修改的地方:

  • 修复了b站无法使用(修改了两个过时的api)
  • 添加了音量控件
  • 增加了.bat一键启动脚本

MusicParty_0.2.zip

修改的地方:

  • 使用 localStorage 来持久化音量设置(这样即使页面刷新后,音量值也能够保持
  • 添加封面图片(只添加了网易音乐与B站的,qq的直接返回的空
  • 修改原音乐进度13/36200:13 / 06:02

(实际只对下面几个文件进行了替换更新,暂未构建启动测试

"\MusicParty\BilibiliApi\BilibiliApi.cs"
"\MusicParty\MusicApiContract\Music.cs"
"\MusicParty\music-party\pages\index.tsx"
"\MusicParty\music-party\src\api\api.ts"
"\MusicParty\music-party\src\api\musichub.ts"
"\MusicParty\music-party\src\components\musicplayer.tsx"
"\MusicParty\NeteaseCloudMusicApi\NeteaseCloudMusicApi.cs"
"\MusicParty\QQMusicApi\QQMusicApi.cs"

小工具

正则替换

目的
保留每行开头"\MusicParty及其后面的文本

查找目标

^"([^"]*\\MusicParty)

替换

"\1