音趴_内部定制开发
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/362为00: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的版本控制目录,包含了项目的所有历史记录和元数据。
bin和obj目录,这些目录包含了编译过程中生成的临时文件和构建产物,不应该被包含在源代码库中。
启动脚本
总的
\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项目中,关于端口配置的方法有多种,且它们之间存在优先级顺序。以下是对这些修改方法优先级的分析:
WebApplicationBuilder.WebHost.ConfigureKestrel方法 /appsettings.json文件:- 这两者可以同时起作用,且优先级相对较高。
ConfigureKestrel方法允许在代码中明确指定Kestrel服务器的监听端口,而appsettings.json文件则提供了一种在配置文件中设置端口的方式。当这两种方法都被使用时,通常代码中的设置(即ConfigureKestrel方法)会覆盖配置文件中的设置。
- 这两者可以同时起作用,且优先级相对较高。
WebApplication.Urls.Add方法:- 这是在.NET 6中引入的新方法,用于在应用程序构建后添加URL。然而,它的优先级低于
ConfigureKestrel方法和appsettings.json文件中的设置。如果这些方法已经指定了端口,则Urls.Add方法添加的URL可能会被覆盖。
- 这是在.NET 6中引入的新方法,用于在应用程序构建后添加URL。然而,它的优先级低于
- 命令行参数
--urls:- 通过命令行参数传递的端口设置优先级较低。当使用
dotnet run或其他命令启动应用程序时,可以通过--urls参数指定监听地址和端口。然而,这种设置可以被上述更高优先级的配置方法覆盖。
- 通过命令行参数传递的端口设置优先级较低。当使用
- 环境变量
ASPNETCORE_URLS:- 环境变量提供了一种在操作系统级别设置应用程序端口的方式。然而,它的优先级同样低于
ConfigureKestrel方法和appsettings.json文件中的设置。此外,环境变量具有全局性,可能会影响在同一环境中运行的其他应用程序。
- 环境变量提供了一种在操作系统级别设置应用程序端口的方式。然而,它的优先级同样低于
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/362为00: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