Giter Club home page Giter Club logo

musicfreedesktop's Introduction

MusicFree 桌面版

本项目基于 GPL 3.0 协议开源,不禁止二次分发,但使用代码时请遵守如下规则:

  1. 二次分发版必须同样遵循 GPL 3.0 协议,开源且免费
  2. 合法合规使用代码,禁止用于商业用途; 修改后的软件造成的任何问题由使用此代码的开发者承担
  3. 打包、二次分发 请保留代码出处https://github.com/maotoumao/MusicFree
  4. 如果使用此代码的开发者不同意以上三条,则视为 二次分发版遵守 CC0 协议
  5. 如果开源协议变更,将在此 Github 仓库更新,不另行通知

简介

一个插件化、定制化、无广告的免费音乐播放器。

当前测试版支持 windows 和 macos x64;macos m1/m2 和 linux 可自行打包。

下载地址

蓝奏云下载地址

特性

  • 插件化:本软件仅仅是一个播放器,本身并不集成任何平台的任何音源,所有的搜索、播放、歌单导入等功能全部基于插件。这也就意味着,只要可以在互联网上搜索到的音源,只要有对应的插件,你都可以使用本软件进行搜索、播放等功能。 关于插件的详细说明请参考 安卓版 Readme 的插件部分

  • 插件支持的功能:搜索(音乐、专辑、作者、歌单)、播放、查看专辑、查看作者详细信息、导入单曲、导入歌单、获取歌词等。

  • 定制化:本软件可以通过主题包定义软件外观及背景,详见下方主题包一节。

  • 无广告:基于 GPL3.0 协议开源,将会保持免费。

  • 隐私:软件所有数据存储在本地,本软件不会上传你的个人信息。

插件

插件协议和安卓版完全相同。

示例插件仓库,你可以根据插件开发文档 开发适配于任意音源的插件。

主题包

主题包是一个文件夹,文件夹内必须包含两个文件:

index.css
config.json

index.css

index.css 中可以覆盖界面中的任何样式。你可以通过定义 css 变量来完成大部分颜色的替换,也可以查看源代码,根据类名等覆盖样式。

支持的 css 变量如下:

:root {
  --primaryColor: #f17d34; // 主色调
  --backgroundColor: #fdfdfd; // 背景色
  --dividerColor: rgba(0, 0, 0, 0.1); // 分割线颜色
  --listHoverColor: rgba(0, 0, 0, 0.05); // 列表悬浮颜色
  --listActiveColor: rgba(0, 0, 0, 0.1); // 列表选中颜色
  --textColor: #333333; // 主文本颜色
  --maskColor: rgba(51, 51, 51, 0.2); // 遮罩层颜色
  --shadowColor: rgba(0, 0, 0, 0.2); // 对话框等阴影颜色
  /** --shadow:  // shadow属性 */
  --placeholderColor: #f4f4f4; // 输入区背景颜色
  --successColor: #08A34C; // 成功颜色
  --dangerColor: #FC5F5F; // 危险颜色
  --infoColor: #0A95C8; // 通知颜色
  --headerTextColor: white; // 顶部文本颜色
}

具体的例子可以参考 暗黑模式

除了通过 css 定义常规样式外,也可以通过在 config.json 中定义 iframes 字段,用来把任意的 html 文件作为软件背景,这样可以实现一些单纯用 css 无法实现的效果。

config.json

config.json 是一个配置文件。

{
    "name": "主题包的名称",
    "preview": "#000000", // 预览图,支持颜色或图片;
    "description": "描述文本",
    "iframes": {
        "app": "http://musicfree.upup.fun", // 整个软件的背景
        "header": "", // 头部区域的背景
        "body": "", // 侧边栏+主页面区域的背景
        "side-bar": "", // 侧边栏区域的背景
        "page": "", // 主页面区域的背景
        "music-bar": "", // 底部音乐栏的背景

    }
}

如果需要指向本地的图片,可以通过 @/ 表示主题包的路径;preview、iframes、以及 iframes 指向的 html 文件都会把 @/ 替换为 主题包路径。详情可参考 樱花主题

主题包示例

示例仓库:https://github.com/maotoumao/MusicFreeThemePacks

几个主题包效果截图:

暗黑模式

源代码

暗黑模式

背景图片

源代码

背景图片

fliqlo

源代码

fliqlo

樱花

源代码

樱花

雨季

源代码

雨季

启动项目

下载仓库代码之后,在根目录下执行:

npm install
npm start

支持这个项目

如果你喜欢这个项目,或者希望我可以持续维护下去,你可以通过以下任何一种方式支持我;)

  1. Star 这个项目,分享给你身边的人;
  2. 关注公众号【一只猫头猫】获取最新信息;

截图

screenshot

screenshot

screenshot

musicfreedesktop's People

Contributors

maotoumao avatar matsuko97 avatar tiamed 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

musicfreedesktop's Issues

一些新功能的建议

首先感谢大佬制作的播放器,挺不错的,但是还有很多功能需要添加,建议如下:
先说明我只是导入本地歌曲使用的

  1. 主题只有几个,虽然挺好看,但是和整体配色方案有点点奇怪。而且我更喜欢用歌曲专辑封面模糊做背景,希望添加。
  2. 能读到本地文件内嵌的歌词挺好,希望可以处理一下翻译分行,就是根据“/”分开原歌词和翻译,看着更舒服些。
  3. 一个基本的窗口缩小放大全屏,自动拉伸功能希望能做一下。
  4. 音量需要鼠标点击移动,希望可以加滚轮操控。
  5. 点开歌曲详情需要点左下角的封面才可以,有点麻烦,可以做成点最下面的控制栏即可。
  6. 好像侧键是可以用的,我可以返回,希望在歌曲详情界面按侧键返回也可以生效,返回上一个界面。
  7. 歌词字体和封面大小都有点小,主要是歌词字体希望可以自己调大小,这个我是真的嫌小,应该放在第一个建议。封面的话可能如果可以拉伸播放器界面就会缓解一些吧。
  8. 希望可以显示歌曲的比特率和采样频率和位深。
  9. 桌面焦点在播放器的时候按空格不能暂停,播放器也不支持什么快捷键。
    以上都是我基于本地播放器的要求提出的建议,大佬可以酌情考虑,有空可以更新一下,万分感谢!!!

关于外部音乐播放

能否通过webdav听歌。比如我在阿里云盘存了很多音乐,然后挂载到alist上,软件能通过webdav播放云盘上的音乐

陷入本地音乐扫描死循环

添加本地音乐自动扫描文件夹后,陷入死循环,不停从头到尾扫描目录,无法播放。

截图 2023-11-07 11-34-37

2023-11-07.11-36-16.webm

一些建议

1.能不能更改下载音乐的命名格式,增加一个“歌手 - 歌名”
2.增加调整歌源顺序的功能
3.在歌单页面可以批量选择本地歌曲加入,而不是只能选择某个歌曲后加入某个歌单
4.对歌曲增加排序功能,包括歌单内歌曲和本地歌曲

建议增加任务栏播放控制功能

当歌曲图标在任务栏(非托盘)时,可以提供播放控制按钮,就想某Q音乐那样,上面是专辑封面,下面是上一首、暂停、下一首3个按钮,专辑封面得等其他功能实现了才行,希望能够先把控制按钮加上去。

npm run package 的时候异常了

ERROR in ./src/renderer/pages/main-page/views/search-view/store/search-result.ts:24:14
TS2741: Property 'lyric' is missing in type '{ music: {}; album: {}; artist: {}; sheet: {}; }' but required in type 'ISearchResults'.

根据歌单批量下载

有时候想保存歌单的歌曲,因为有时候歌曲会过期,所以能否加个根据歌单批量下载

macOS v13.5 node v18.17打包出现错误

git clone https://github.com/maotoumao/MusicFreeDesktop.git

进入MusicFreeDesktop文件夹 执行:
```bash
npm install
npm run make 或者 npm run package

生成的文件在根目录的out文件夹下

Originally posted by @maotoumao in #2 (comment)

npm install出现错误

npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
npm WARN deprecated [email protected]: Please use @electron/asar moving forward. There is no API change, just a package name change
npm ERR! code 1
npm ERR! path /Users/yy.feng/Downloads/MusicFreeDesktop-master/node_modules/electron
npm ERR! command failed
npm ERR! command sh -c node install.js
npm ERR! RequestError: socket hang up
npm ERR! at ClientRequest. (/Users/yy.feng/Downloads/MusicFreeDesktop-master/node_modules/got/dist/source/core/index.js:970:111)
npm ERR! at Object.onceWrapper (node:events:629:26)
npm ERR! at ClientRequest.emit (node:events:526:35)
npm ERR! at origin.emit (/Users/yy.feng/Downloads/MusicFreeDesktop-master/node_modules/@szmarczak/http-timer/dist/source/index.js:43:20)
npm ERR! at TLSSocket.socketOnEnd (node:_http_client:525:9)
npm ERR! at TLSSocket.emit (node:events:526:35)
npm ERR! at endReadableNT (node:internal/streams/readable:1359:12)
npm ERR! at connResetException (node:internal/errors:720:14)
npm ERR! at TLSSocket.socketOnEnd (node:_http_client:525:23)
npm ERR! at TLSSocket.emit (node:events:526:35)
npm ERR! at endReadableNT (node:internal/streams/readable:1359:12)
npm ERR! at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

npm ERR! A complete log of this run can be found in: /Users/yy.feng/.npm/_logs/2023-08-01T12_48_19_973Z-debug-0.log

[FEATURE] win版 有下载音乐的功能么?

注意事项

  • 确保已经阅读过ReadMe并了解本软件的定位
  • 确保你的新需求/想法合理合法,且不是因为无解决方案的众口难调导致的个例问题

需求描述
请详细描述一下需求场景,以及可能导致的问题;以及你预期的解决方案或效果

替代方案
如果无法实现,请描述一下预期的替代方案或最低期望

其他信息
是否能提供一些其他的帮助,包括但不限于代码、UI、测试 ... 如果有的话,辛苦描述一下,感谢~

Linux版无法播放本地音乐

版本:Linux0.0.2
问题:扫描本地音乐后,播放本地音乐没有反应,音乐列表快速跳过,播放网络音乐正常
测试系统:Deepin20.9(实机)、Ubuntu23.04(虚拟机)

感谢大佬的更新!0.0.2 DeskTop版本“搜索歌词”功能的建议~

现在增加“搜索歌词”的功能,体验很好,在这里非常感谢佬的付出!

一个建议可优化:

Tips:中文歌词可以搜到,但是限于当前歌曲链接展现出的“标题”,是包含歌曲的标题,具体的歌名还得把其他多余的文字删去再搜索,个人感觉挺麻烦?建议增加一个识别歌曲全名的功能!

Feature Request: 歌单同步/订阅歌单

需求背景

当前需要同步以前导入的歌单时,每次要重新找到插件、输入地址并选择导入的歌单,而且后续导入的顺序不一致,实际操作时需要删掉原歌单后再重新导入

期望功能

提供一个歌单订阅或歌单同步功能,保存原先输入的歌单地址,点击可进行歌单同步(覆盖原有歌单)

一些建议 谢谢大佬的软件!!!

目前能听歌就很满足了, 不过如果你什么时候有时间的话, 可以考虑加入以下功能. 谢谢!

  1. 同步手机跟windows版本的歌曲的功能.
  2. 自选快捷键 喜欢正在播放的歌曲
  3. 最后这个只是个idea, 感觉可能比较难. 增加 不喜欢一个歌曲的 选项. 然后用machine learning 学习这些pattern, 就可以快速排除掉不喜欢的歌曲.

[FEATURE] 增加代理功能

注意事项

  • 确保已经阅读过ReadMe并了解本软件的定位
  • 确保你的新需求/想法合理合法,且不是因为无解决方案的众口难调导致的个例问题

需求描述
单位电脑需要使用HTTP代理(带用户名密码验证)才能访问互联网,MusicFree目前没有该功能,在这种情况下MusicFree无法访问网络,建议程序里内置代理功能。

替代方案

其他信息

Desktop版本增加“关联歌词”的建议~

大佬膜拜!非常感谢佬的贡献,简直就是白嫖党的福音!
在这里提个小小的建议,手机版的上面有“关联歌词”,Desktop上面好像还莫有这个功能呢(是我不知道还是没找到哈哈)?希望优化或指导下!感谢~
image

经过几天的使用, 又多了一些建议,

  1. 用鼠标拖拽的方式改歌单排列顺序.
  2. 手机可以改音源顺序, windows版本也能加这个吗?
  3. back up 可以不止back up歌单, 可以一起把目前的setting放进去吗?
  4. 有没有办法filter搜索到的歌曲结果, 目前想到比较有用的如下: 能播的优先, 其次是有歌词的优先.
  5. 可以所有音源都aggregate在一起吗?
  6. 如果没有歌词的歌曲, 可以找类似的歌曲 (现在好像是可以用ID找歌词? 但是感觉用歌名比较方便) 然后match这两首歌的歌词吗?

以上是目前的建议, 感谢.

导入插件一直失败!

通过网络安装报下面两个错
导入GitHub的
image
导入gitee的
image

把这个json下载下来本地导入报下面的错
image

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.