Coder Social home page Coder Social logo

radishes-music / radishes Goto Github PK

View Code? Open in Web Editor NEW
1.1K 13.0 91.0 153.08 MB

Cross-platform copyright-free music platform(跨平台的无版权的音乐平台). 支持 windows / macos / linux / web

Home Page: https://music.970819.xyz/

License: MIT License

Shell 0.15% Dockerfile 0.11% TypeScript 86.03% Less 10.21% CSS 0.18% Vue 3.33%
radishes music electron vue3 typescript id3-writer id3-reader music-player unblock vip

radishes's Introduction

Radishes 2.0.0

release

后续更新某些功能可能会使用 gyron 这个自研框架,它拥有极小的体积和灵活的组织能力。

Radishes是这个项目的名称,它是由萝卜翻译而来。可以在这里试听和下载“灰色”歌曲哟

界面表现和功能参考 windows 网易云音乐界面和 ios 的网易云音乐,会对一些功能进行移动端支持。希望能找到合适的基于 vue3 的移动端打包工具(非套壳)。

🎡 项目运行

克隆项目

git clone https://github.com/radishes-music/radishes.git --recursive

环境配置

本项目使用 yarn > 3 构建,新版yarn的具体使用可以移步官网
packageJson 已经指定yarn的版本,无需手动设置,只需运行下面命令
# nodejs <16.10
# npm i -g corepack\

corepack enable

安装依赖

yarn
yarn bootstrap

运行项目

web 调试
yarn dev
electron 调试
yarn dev:electron

构建项目

web 端
yarn build
win 端
yarn pkg:win
macos 端
yarn pkg:macos
linux 端
yarn pkg:linux

一键部署

docker-compose up -d
# 然后访问 http://localhost:1234

支持的功能

browser: 浏览器支持
electron: 桌面级支持
mobile: 移动端支持(在线链接: http://112.74.169.178/mobile/music/,分支:next-mobile)
: 已经支持
×: 不打算支持

功能 browser electron mobile
登录和注册(邮箱暂不支持注册)
每日推荐歌单和歌曲
每日轮播图以及新歌播放、查看歌单详情
歌单搜索、查看、收藏、下载
歌曲排行榜以及排行榜的分类支持
支持查看歌手专辑、详情、相似歌手以及歌手按地区等方式过滤
歌曲播放、暂停、歌词(横向、纵向)、音量 MediaSession(Chrome)
浮动歌词支持(在 PC 上为一个子窗口),歌词进度显示 ×
支持设置播放源(QQ、酷狗等)、下载品质和下载位置修改
支持搜索歌手、专辑、歌单和单曲
本地音乐支持(支持拖放播放歌曲、歌曲标签 ID3v2 显示) ×
缓存本地所有状态(比如当前播放歌曲、进度、主题颜色、大小等)
朋友动态查看、点赞等
音乐云盘
视频播放、收藏
通知(已登录) × ×
音效(3D 环绕、淡入淡出、温柔、混合)

Electron

目前已发布第一版,包含听歌等功能,前往 https://github.com/Linkontoask/radishes/releases/tag/2.0.0-alpha.1 下载 windows 版本。
已发布mac版本。v2.0.0-alpha.4 在开发的同时会快速兼容 Electron 。所谓的快速就是调用很少的 API 实现 PC 端的功能,比如放大、缩小、通知、歌词、音乐拖放上传。

目前Electron已经支持对歌曲的标签写入与读取,专辑封面还未压缩处理。所有在radishes平台下载的歌曲都会自动生成歌曲的歌手、专辑、标题等内容。
到现在为止,Electron平台相对于Web平台已经完成了下载进度展示、本地音乐的同步和播放、浮动歌词的展示。

vue3.x已发布,音乐项目已完成基本架构

目前会利用闲暇时间进行重构,如果你也想参与进来,可以发邮件或在这里告诉我

Star History

Star History Chart

相关链接:

radishes's People

Contributors

dependabot[bot] avatar hq001 avatar linkontoask avatar little-buddy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radishes's Issues

新功能列表

@little-buddy 我们在这里持续更新一些新功能的状态,以便于同步给社区小伙伴。

功能描述 状态(完成/进行中/未排期) 更新人
歌单加载异常 未排期 -
关闭按钮可配置 未排期 -

Windows客户端启动速度

启动速度有点缓慢,没有遇到其他问题,希望更新一下,谢谢

系统版本

  • 客户端/网页端: [e.g. 客户端]
  • 客户端版本(如果是) [e.g. 22]

感觉好多歌都找不到链接

详细描述你的问题
感觉好多歌都找不到链接,有的上一秒可以听下一秒就听不了
陶喆的歌基本全部都不能听
播放源也全部勾选了
系统版本

  • 客户端/网页端: [e.g. 客户端]
  • 客户端版本(如果是) [e.g. 22]
    发如雪-周杰伦 2024_6_29 21_20_54
    黑色毛衣-周杰伦 2024_6_29 21_23_20

linux 下编译 electron 版失败

看到 release 没有发布 Linux 包,就想这自己编译一下,但是出错了,node 版本 v16.15.0yarn 版本 1.22.18

失败日志
❯ yarn build:electron:linux
yarn run v1.22.18
$ node script/build.js --linux
4.0.9 4.0.9
 INFO  Bundling render process:

⠧  Building modern bundle for electron.build...

 ERROR  Failed to compile with 22 errors                                                  3:58:41 PM

 error  in ./src/hooks/message.ts

Module parse failed: Unexpected token (11:40)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
| const messageMap = new Map();
| export const suggested = (msg, config) => {
>   const loading = messageMap.get(config?.key);
| 
|   if (loading) {

 @ ./src/hooks/index.ts 4:0-26 4:0-26
 @ ./src/electron/preload/ipc.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/hooks/auth.ts

Module parse failed: Unexpected token (120:12)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|       });
|     } catch (e) {
>       if (e?.response.data.code === -2) {
|         $store.commit('Auth/UPDATE_USER', {
|           key: 'profile',

 @ ./src/hooks/index.ts 3:0-23 3:0-23
 @ ./src/electron/preload/ipc.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/utils/index.ts

Module parse failed: Unexpected token (133:12)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
| };
| export function on(container, type, listener, config) {
>   container?.addEventListener(type, listener, config);
| }
| export function off(container, type, listener) {

 @ ./src/app/index.ts 9:0-43 16:4-14
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/router/index.ts

Module parse failed: Unexpected token (13:15)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|   return nav.filter(n => {
|     if (isBrowser) {
>       return n?.meta?.browser;
|     }
| 

 @ ./src/app/index.ts 3:0-31 12:42-48
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/sidebar/view/index.tsx

Module parse failed: Unexpected token (15:66)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     const route = useRoute();
|     const playlist = useUserPlayList();
>     const nav = navRouter.filter(routerGroup => !routerGroup.meta?.nonav);
|     return () => createVNode("aside", {
|       "class": "sidebar"

 @ ./src/pages/main/view/index.tsx 3:0-53 22:20-27
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/setting/sage.ts

Module parse failed: Unexpected token (18:23)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     } = useFooterModule();
|     const footerState = useState();
>     footerState.effect?.clearBasicEffect();
| 
|     if (basic.includes(BasicEffect.D3)) {

 @ ./src/pages/setting/module.ts 1:0-44 11:2-9 12:2-11
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/cloud/sage.ts

Module parse failed: Unexpected token (27:42)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
| 
|   [CloudMutations.UNSHIFT_CLOUD_LIST](state, song) {
>     if (state.cloudList.some(item => item?.uid === song?.uid)) {
|       return;
|     }

 @ ./src/pages/cloud/module.ts 1:0-44 11:2-9 12:2-11
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/auth/component/auth-view/index.tsx

Module parse failed: Unexpected token (34:28)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           }, null), createVNode("div", {
|             "class": "auth-view__box"
>           }, [slots.default?.()])])]
|         })
|       );

 @ ./src/pages/auth/views/index.tsx 9:0-50 42:49-57
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/store/index.ts

Module parse failed: Unexpected token (38:11)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|   const last = origin[origin.length - 1];
| 
>   if (last?.url !== route) {
|     state.historyRoute[originKey].push({
|       life: Date.now(),

 @ ./src/electron/pages/index.ts 7:0-28 11:31-36
 @ multi ./src/electron/pages/index.ts

 error  in ./src/pages/auth/views/reset-pwd.tsx

Module parse failed: Unexpected token (40:25)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           });
|         }).catch(e => {
>           if (e.response?.data) {
|             setErrorMsg(e.response.data.msg || e.response.data.message || '请求异常');
|           } else if (e.msg) {

 @ ./src/pages/auth/views/index.tsx 6:0-39 12:55-63
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/auth/views/signup.tsx

Module parse failed: Unexpected token (41:25)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           });
|         }).catch(e => {
>           if (e.response?.data) {
|             setErrorMsg(e.response.data.msg || e.response.data.message || '请求异常');
|           } else if (e.msg) {

 @ ./src/pages/auth/views/index.tsx 7:0-34 12:47-53
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/auth/views/sms-code.tsx

Module parse failed: Unexpected token (45:25)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           $router.back();
|         } catch (e) {
>           if (e.response?.data) {
|             setErrorMsg(e.response.data.msg || e.response.data.message || '请求异常');
|           } else if (e.msg) {

 @ ./src/pages/auth/views/index.tsx 11:0-37 12:65-72
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/components-global/icon/main/index.tsx

Module parse failed: Unexpected token (46:23)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|       "style": { ...style.value,
|         width: size.value,
>         height: height?.value || size.value,
|         fill: color.value
|       }

 @ ./src/components-global/icon/index.ts 1:0-32 3:0-4 4:16-20 4:27-31 7:15-19
 @ ./src/components-global/index.ts
 @ ./src/electron/pages/index.ts
 @ multi ./src/electron/pages/index.ts

 error  in ./src/pages/auth/views/email-login.tsx

Module parse failed: Unexpected token (49:25)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           }
|         }).catch(e => {
>           if (e.response?.data) {
|             setErrorMsg(e.response.data.msg || e.response.data.message || '请求异常');
|           } else if (e.msg) {

 @ ./src/pages/auth/views/index.tsx 8:0-43 12:35-45
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/header/component/search.tsx

Module parse failed: Unexpected token (54:15)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
| 
|     const handleSelect = () => {
>       onSelect?.value(value?.value);
|     };
| 

 @ ./src/pages/header/view/index.tsx 7:0-45 73:56-62
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/utils/interceptors/timeout.ts

Module parse failed: Unexpected token (5:23)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
| export default function (http) {
|   http.interceptors.response.use(response => response, error => {
>     if (error.response?.status === 408 || error.code === 'ECONNABORTED') {
|       _message.error(`请求超时,请重试。url: ${error.config.url}`, 5);
|     }

 @ ./src/utils/interceptors/index.ts 3:0-32 7:2-9
 @ ./src/utils/http.ts
 @ ./src/api/search.ts
 @ ./src/pages/header/sage.ts
 @ ./src/pages/header/module.ts
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/footer/view/index.tsx

Module parse failed: Unexpected token (65:50)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|       }),
|       "style": {
>         backgroundImage: `url(${footerState.music?.al.picUrl})`
|       },
|       "onClick": unfoldLyrics

 @ ./src/layout/container.tsx 7:0-51 95:20-26
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/auth/views/phone-login.tsx

Module parse failed: Unexpected token (68:25)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|           $router.back();
|         }).catch(e => {
>           if (e.response?.status === 400) {
|             setErrorMsg('该手机号尚未注册');
|           } else if (e.response?.data) {

 @ ./src/pages/auth/views/index.tsx 5:0-43 12:23-33
 @ ./src/pages/main/view/index.tsx
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/api/index.ts

Module parse failed: Unexpected token (6:19)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     id: Array.isArray(id) ? id.join(',') : id,
|     br: br,
>     source: source?.join(',')
|   });
|   return data.data;

 @ ./src/pages/list/sage.ts 2:0-56 8:23-34 15:23-35
 @ ./src/pages/list/module.ts
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/utils/interceptors/auth.ts

Module parse failed: Unexpected token (7:34)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     return response;
|   }, error => {
>     const config = error.response?.config;
| 
|     if (error.response) {

 @ ./src/utils/interceptors/index.ts 1:0-26 5:2-6
 @ ./src/utils/http.ts
 @ ./src/api/search.ts
 @ ./src/pages/header/sage.ts
 @ ./src/pages/header/module.ts
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/pages/footer/sage.ts

Module parse failed: Unexpected token (85:42)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     const len = lyricsArr.length;
|     const lyrices = lyricsArr.map((item, index) => {
>       let nextTime = lyricsArr[index + 1]?.match(/\[.+\]/);
|       let time = item.match(/\[.+\]/);
|       let lyric = item.match(/\].+/);

 @ ./src/pages/footer/module.ts 1:0-53 4:0-40 4:0-40 12:2-9 13:2-9 14:2-11
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 error  in ./src/utils/interceptors/format.ts

Module parse failed: Unexpected token (8:34)
File was processed with these loaders:
 * ./node_modules/cache-loader/dist/cjs.js
 * ./node_modules/babel-loader/lib/index.js
 * ./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js
 * ./node_modules/eslint-loader/index.js
You may need an additional loader to handle the result of these loaders.
|     return new Promise(resolve => {
|       const cb = () => {
>         if (http.defaults.baseURL?.includes('http://localhost:')) {
|           resolve(http.defaults.baseURL);
|         } else {

 @ ./src/utils/interceptors/index.ts 2:0-30 6:2-8
 @ ./src/utils/http.ts
 @ ./src/api/search.ts
 @ ./src/pages/header/sage.ts
 @ ./src/pages/header/module.ts
 @ ./src/modules/index.ts
 @ ./src/layout/container.tsx
 @ ./src/app/app.tsx
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

 ERROR  Vue CLI build failed. Please resolve any issues with your build and try again.
exit: 1
Done in 21.42s.

是否可以添加一阈值功能,根据不同的阈值播放曲歌

如题,也用过很多播放器,基本的使用逻辑是把特别喜欢的歌曲单独加个歌单,然后随机播放这个歌单,但实际都会喜新厌旧吧 哈哈,如果可以为每首歌添加一个阈值,真正使用时也不会每首歌都添加,把最近喜欢的几首加上就行,其它有一个默认值,这样就不能再新加歌单了,随机播放时总会更多的播放阈值高的也就是最近更想听的。

客户端无法打开悬浮歌词

详细描述你的问题

无法打开悬浮歌词
image

系统版本

  • 客户端/网页端: win11 客户端
  • 客户端版本:2.0.0-alpha.5

cookie在github page中无效

测试发现,无法在github page中发送带有cookie的http请求

表现为:登陆后会一直要求登录,并且每日推荐歌曲和歌单会出现问题

会有iOS版本吗?

大佬,iOS啥音乐软件都没有,大佬能辛苦适配iOS端吗?感谢🙏🏻

增加自动缓存的设置

能否增加自动缓存的开关,当自动缓存的开关打开时,能将播放的歌曲自动保存到缓存目录里,这样也可以尽可能的避免短时间内产生大量下载。另外,可否增加缓存时的音质选择,如果是会员登录,可选择保存更高音质的音乐?

重构RfC

大致功能围绕windows版网易云音乐展开,基于浏览器模拟实现放大缩小(缩小后弄一个音乐可视化)功能。

目前准备实现的功能

  • 音乐相关的控制和视频相关的控制
  • 登录相关的控制
  • 搜索相关的控制
  • 歌单推荐相关的控制
  • 下载相关的控制

如有更好的想法可以在下方回复,很高兴你的参与

下载的音乐文件命名的问题

详细描述你的问题
希望增加功能:
1.增加实时播放时的默认播放音质的设置;
2.增加下载音乐时,音质选择的设置;
3.增加下载的音乐文件命名格式的设置,如:歌名-歌手.mp3、歌手-歌名.mp3、歌名.mp3等;

系统版本

  • 客户端
  • Radishes(2.0.0-alpha.5)

关于联系方式

Hi,觉得你们项目挺有意思,最近我也在做这块内容,不过源不大一样,可以加个vx探讨下吗

歌单无法正常加载吗。

不知道是我这边网络的问题,还是接口的问题;
我这边搜索的歌单, 无法加载出来;
正常歌单里面的也是无法加载;

Linux 下启动报错

打包后启动报错:

render function
Cannot read properties of undefined (reading 'map')
TypeError: Cannot read properties of undefined (reading 'map')
    at Proxy.eval (webpack:///./src/components/swiper/index.tsx?:119:31)
    at renderComponentRoot (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:851:44)
    at componentEffect (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:4327:53)
    at reactiveEffect (webpack:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js?:71:24)
    at effect (webpack:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js?:46:9)
    at setupRenderEffect (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:4310:89)
    at mountComponent (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:4269:9)
    at processComponent (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:4229:17)
    at patch (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:3856:21)
    at mountChildren (webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js?:4029:13)

设置中点击位置会出现异常的问题

详细描述你的问题
在设置中点击链接会导致音乐停止播放,然后这个软件变成一个网页,无法进行任何操作

系统版本

  • 客户端/网页端: Windows
  • 客户端版本:2.0.0-alpha.5

每次都启动都需要重新设置下载保存路径

设置完下载目录以后,下次打开软件就不起作用了,会自动将mp3文件下载到软件安装目录里面,只能每次都重新设置一次才行

-系统版本:Windows 11

  • 客户端版本(如果是) [2.0.0-alpha.4]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.