Giter VIP home page Giter VIP logo

maotoumao / musicfree Goto Github PK

View Code? Open in Web Editor NEW
7.0K 38.0 540.0 16.16 MB

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

Home Page: http://musicfree.upup.fun/

License: GNU General Public License v3.0

JavaScript 0.23% Shell 0.02% Ruby 0.14% TypeScript 91.99% Starlark 0.06% Java 5.93% Makefile 0.16% C++ 0.74% Objective-C 0.25% Objective-C++ 0.47%
free music-player plugin react react-native typescript

musicfree's Introduction

MusicFree

Caution

👎 小米/华为/vivo等应用市场的 MusicFree 和本软件无关,是套用本软件名称和 Logo 的广告软件

👎 速悦音乐基于本软件二次开发,改动点仅仅是内置插件、修改一些 UI 以及引流,并未遵守本项目的开源协议,且拒绝沟通


简介

一个插件化、定制化、无广告的免费音乐播放器,目前只支持 Android 和 Harmony OS。

桌面版来啦:https://github.com/maotoumao/MusicFreeDesktop

如果需要了解后续进展可以关注公众号↓;如果有问题可以在 issue 区或者公众号直接留言反馈。

微信公众号

软件下载方式、插件使用说明、插件开发文档可去站点 https://musicfree.upup.fun 查看。

Note

  • 如果你在其他的平台看到收费版/无广告版/破解版,都是假的,本来就是开源项目,遇到收费版请直接举报
  • 软件首先是自用,顺带分享出来希望可以帮助到有需要的人;是业余作品,会尽量保持维护,不过每天能写的时间有限(半小时左右),目测会有很长一段时间处于不稳定测试版本,且更新频率不定,请谨慎使用;
  • 软件的第三方插件、及其所产生的数据与本软件无关,请合理合法使用,可能产生的版权数据请及时删除。
  • 请不要以 VIP/破解版为噱头进行宣传,示例仓库基于互联网公开接口封装,并过滤掉所有 VIP、试听、付费歌曲,且示例仓库以后也不会提供具备破解功能的插件
  • 本软件的相关信息只会主动投放在 Git 仓库以及公众号“一只猫头猫”中,如果希望写文章介绍本软件请自便,但还烦请如实陈述,涉及到示例仓库请给插件源打个码,不要给软件增加一些不实的功能(尽管我也想有);描述冲突的地方以本仓库为准。

项目使用约定:

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

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

特性

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

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

  • 定制化、无广告:本软件提供了浅色、深色模式;支持自定义背景;本软件基于 GPL 协议开源,一个 star 做交易 将会保持免费。

  • 隐私:所有的数据都存储在本地,本软件不会收集你的任何个人信息。

  • 歌词关联:你可以把两首歌的歌词关联起来,比如将歌曲 A 的歌词关联到歌曲 B,关联后 A、B 两首歌都将显示歌曲 B 的歌词。你也可以关联多首歌的歌词,如 A->B->C,这样 A、B、C 三首歌都将显示 C 的歌词。

插件

插件简介

插件本质上是一个满足插件协议的 commonjs 模块。插件中定义了搜索(音乐、专辑、作者)、播放、查看专辑、作者详细信息、导入歌单、获取歌词等基本函数,插件的开发者只需要关心输入输出逻辑,至于分页、缓存等全都交给 MusicFree 控制即可。本软件通过插件来完成播放器的所有功能,这样解耦的设计也可以使得本软件可以专注于做一个功能完善的播放器,我直呼小而美。

插件开发文档可以参考 这里

需要注意的是:

  • 如果你是使用第三方下载的插件,那么请自行鉴别插件的安全性(基本上看下没有奇怪的网络请求什么的就好了;自己写的最安全,不要安装来路不明的东西),防止恶意代码破坏。因为第三方恶意插件导致的可能的损失与本软件无关。

  • 插件使用过程中可能会产生某些和本软件无关的版权数据,插件、以及插件产生的任何数据与本软件无关,请使用者自行斟酌,及时删除数据,本软件不提倡也不会提供任何破解行为,你可以搭建自己的离线音乐仓库使用。

插件使用

下载 app 之后,只需要在侧边栏设置-插件设置中安装插件即可。支持安装本地插件和从网络安装插件(支持解析.js 文件和.json 描述文件;已经写了几个示意的插件:指路这个仓库,不过可能功能不是很完善);

你可以直接点击从网络安装插件,然后输入https://gitee.com/maotoumao/MusicFreePlugins/raw/master/plugins.json ,点击确认即可安装。

图文版详细使用说明可以参考公众号:MusicFree 插件使用指南,或者站点: https://musicfree.upup.fun/usage/mobile/install-plugin.html

下载地址

请转到发布页查看:指路 (如果打不开可以把 github 换成 gitee),公众号回复 Musicfree 也可以。

Q&A

使用时遇到的常见问题可以看这里:MusicFree 使用 Q&A

技术交流/一起写点有意思的东西/技术向的闲聊欢迎加群:683467814~ (不是答疑群)

闲聊可以到 QQ 频道~

WIP

如果有需要讨论的新需求,可以在公众号后台留言/提issue/或者去discussion开个话题。

支持这个项目

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

  1. Star 这个项目,分享给你身边的人;
  2. 关注公众号👇或 b 站 不想睡觉猫头猫 获取最新信息;

微信公众号

感谢以下小伙伴的推荐,很意外也很惊喜 ~~~

来自果核剥壳的安利~ https://mp.weixin.qq.com/s/F6hMbLv_a-Ty0fPA_0P0Rg

来自小棉袄的安利~ https://mp.weixin.qq.com/s/Fqe3o7vcTw0KDKoB-gsQfg

ChangeLog

点击这里


本项目仅供学习参考使用,基于 GPL3.0 协议开源;请在符合法律法规的情况下合理使用本项目,禁止用于商业目的使用。

应用截图

以下截图仅为 UI 样例,软件内部不提供任何音源,不代表实际使用时表现如下图。

主界面

主界面

侧边栏

  • 基础设置 基础设置

  • 主题设置 主题设置

音乐相关

  • 歌单页 歌单页

  • 歌单内检索 歌单内检索

  • 播放页 播放页

  • 歌词页 歌词页

搜索相关

  • 作者信息 专辑信息

musicfree's People

Contributors

282931 avatar gugumur avatar maotoumao avatar zhuguibiao 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  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

musicfree's Issues

[BUG] Mac客户端歌词面板显示重合

注意事项

  • 确保该bug可能是软件的本身问题,不是由于插件导致(如搜索结果不全,无法导入等都属于插件问题);如果是插件问题请去对应第三方插件仓库提issue。
  • 确保已经搜索过issue区,并阅读过QA

问题描述
Mac 桌面版,打开桌面歌词后,歌词翻滚时历史歌词与现歌词会产生重合

详细的复现步骤
打开桌面歌词,播放歌曲

预期行为
歌词正常显示

截图
image

其他信息:

  • OS: Mac OS M1
  • 版本号 13.3.1 (22E261)

[FEATURE] 在win11的安卓子系统下使用,APP分辨率不能自适应的问题

注意事项

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

需求描述
在win11的安卓子系统下使用,APP分辨率不能自适应。希望能自适应下分辨率。可以参考头条APP

Musicfree:
image

今日头条:
image

建议

建议:能不能在歌单收藏那里加一个排序,正向排序和逆向排序,这样就能从最近的或者很久以前的开始听。

1、可以把播放器添加到鸿蒙3.0的下拉控制中心吗。2、想添加为手机默认播放器,但是列表没有本软件

注意事项

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

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

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

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

网易云云盘功能

有可能通过插件功能实现网易云盘功能吗,我看网易云api里有这个
不过大多数第三方都没做这个功能就是了

建议

您好,请问可以和安卓的全面屏手势做一下适配吗,每次打开软件,界面最底下有小白条,看着很难受,谢谢

IMG_20230130_230523.jpg

[FEATURE] 希望加一个将歌曲设为铃声的功能

注意事项

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

需求描述
希望像网易云等软件一样可以将歌曲设为铃声

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

其他信息
示例ui如下:
image

功能建议

1、希望增加个一个其他app歌单导入的功能
2、希望增加一个云盘备份歌单的功能
3、希望适配ipad之类的大屏设备
4、希望适配一下华为手机负一屏那个音乐软件识别的问题,现在在华为手机负一屏上不能识别咱们的播放软件

目标歌单是空的哦

尝试了Q&A中的方法 始终为空。 还有就是QQ音乐现在的歌单似乎无法复制链接

听书资源搜索

非常感谢大神的musicfree,如果能够搜索喜马拉雅等听书资源 和 spotify 则万分大喜。

在华为平板上的问题

我将该app安装到我的华为pad上,发现样式完全乱套了,插件导入也不能使用,组件ui超出屏幕显示宽度等问题,不知道能不能兼容一下

是否有加入smb或者webdav等协议的支持

对于有nas,并且有些资源的使用者来说,这个功能还是不错的,比较期待加入
主要有两个方向:

  1. smb或webdav在线播放(可以本地简历歌单,然后文件从nas读取)
  2. 从nas把音乐复制到本地,当然这是次选方案,因为有些音乐的体积也不小,大多数场景,需要听高品质的时候,多数都是在家或者有wifi的地方,也就是上一条

[FEATURE] xxxxx

注意事项

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

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

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

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

下载清单能不能保留下载过的歌曲,而不仅仅显示下载中的歌曲,不然下载了什么歌曲都不知道,而且也难找

希望能添加按文件夹筛选

希望能添加按文件夹显示的功能,本地文件已经把歌曲按照喜欢的分好类别在各个文件夹,扫描添加后可以按文件夹来听,谢谢

Music Free ios 开发问题记录

Music Free ios 开发问题记录

开发环境

[email protected]官网搭建ios开发环境

我这边的开发环境:

  • 代码库版本:2022.10.30 v0.0.1-alpha.7
  • react-native-cli: 2.0.1
  • react-native: 0.69.6
  • yarn: 1.22.19
  • ruby: 2.7.5
  • cocoapods: 1.11.3
  • node: 16.17.0
  • xcode: 14

开始

yarn install
cd ios && pod install
npx react-native start

# simulator 是你ios的模拟器版本
npx react-native run-ios --simulator='iPhone 14 Pro'

样式问题

  1. textAlignVertical: 'center'只支持安卓,不支持ios,需要用lineHeight替代
  2. 运行到模拟器的时候,可能会出现icon找不到,参考react-native-vector-icons

ios卡片切换背景

由于ios默认卡片动画,在切换下一个card的过程中会显示前一个card,使得滑动看起来很奇怪

卡片切换问题

解决思路:

  1. 每个路由页面里面添加背景色或图片
  2. 使用react-navigation/native,自定义你想要的切换动画

播放问题

问题及解决方案:

  1. 在src/core/musicQueue.ts 399行

    await TrackPlayer.add([track, getFakeNextTrack()]);
    // getFakeNextTrack 方法返回值
    if (track) {
        return produce(track, _ => {
            _.url = '';
        });
    } else {
        return { url: ''};
    }
  • 调用TrackPlayer.add方法,ios版本url必须有值,不能为空,所以播放失败,可以使用

    if (!!LocalMusicSheet.isLocalMusic(track) && !track.url) {
        // 本地音乐url 处理
        return produce(track, _ => {
             _.url = _?.$?.localPath || '';
            // 自动下一首歌标记
            _.nextPalySign = 1;
        });
    }
    // 其他音频url
    return produce(track, _ => {
        _.nextPalySign = 1;
    });
    // 104行的事件里面判断改成
    !(await TrackPlayer.getTrack(evt.nextTrack))?.nextPalySign
  1. ios后台播放需要自己开启支持react-native-track-player

文件权限

  • 由于react-native-documente-picker选择的外部文件,只能在当前app的生命周期使用,重新打开的时候没有

  • 引用 UIDocumentPickerViewController apple开发文档 里面的话在 iOS13 中,用户可以使用. 文档选择器返回目录的安全范围 URL,允许您的应用访问其容器外的内容。在这种情况下,URL 允许您的应用程序递归地访问目录及其所有内容,包括访问您将来添加到目录中的任何新项目。你的应用甚至可以为这个 URL 保存一个书签,让它在下次启动时访问该目录

解决思路:

  1. 因为自己使用(就是懒),我是把需要导入的音乐文件放到app文件夹内就可以访问
  2. 添加书签方案
  3. 虽然文件看不到,但是react-native-track-player可以播放,可以从媒体路径这方面下手
  4. @maotoumao 开发,哈哈~~~

后续

后续可以跟着@maotoumao 大佬主版本开发,完~

无法下载

为什么无法下载了,上一个版本可以下载,这一个版本无法下载

希望支持 opus 格式

作为一个移动端的本地播放器,希望支持 o · 有损界的冉冉新星 · 全能的瑞士军刀 · 省流助手与存储救星 · pus 格式。(.m4a 容器内的 xHE-AAC 都能播放,没理由不支持 opus 呀)

v0.0.1-alpha.12 现状是不能被扫描到,本地的也不能指定它来播放。

[FEATURE] 加一个歌词翻译吧

注意事项

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

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

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

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

发现了一个播放本地音乐的BUG

如果在设置里将 ‘使用移动网络播放’功能关闭,然后选择播放下载的本地音乐,一旦手机有别的消息弹出,音乐会终止播放,不会自动播放,点继续播放会提示无法播放,要重新换一首本地音乐重新播放才能继续听歌。

[FEATURE] 建议适配电视盒子

注意事项

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

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

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

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

[FEATURE] 希望本地歌曲界面可以按不同类别进行划分

注意事项

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

需求描述
希望可以按歌曲、专辑、歌手等不同形式进行分类,使用不同的tab进行不同类别的分页,下面按字典顺序排列相应的歌曲,右侧如果能带有一个可按字母定位的索引会更方便一些

其他信息
示例ui如图所示:
image

问题及建议

先谢谢作者提供的好软件。两个建议或问题:
指定下载文件夹后,被指定的和原来data文件夹里都下不了,显示下载完成实际没有下载。
保存的歌单应该能导出备份,以供导入。我为了下载问题清楚app数据,只能一个个重新找回来。

webdave

希望可以加上这么个功能保存个人下载的或者,个人歌单
尤其个人歌单同步,这样就算有版本改动或者软件新装也不受影响。辛苦作者了

[FEATURE] 非歌单入口的支持

注意事项

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

需求描述
音乐软件的专辑页面和艺人热曲首页逻辑上也是一个歌单,而且是事实上常常被用户拿来直接循环的常用“歌单”。
但由于专辑和艺人页面的接口完全不同于技术意义上的歌单,所以目前插件没有支持

替代方案
目前想要实现相同效果唯有进入第一方软件然后批量制作和目标专辑/艺人hot50完全一样的dummy歌单,很不方便,也很麻烦。因为享用MF来作为集中了的歌单维护中心的话,再去各大app创建站位歌单其实比较折腾。

其他信息
album的接口我试着根据直觉改了一下,包括post和get的差别,url的差别,正则的差别,但始终无法成功。
我看了一下NeteaseNodeAPI那个项目,似乎album:POST接口的协议(至少返回体结构)可能和playlist:GET完全不同。本想着自己解决但是抱着app真的很难调试这些js,想着还是你们这边有完善的调试环境,所以先以issue ticket的形式爆出了。
一些其他类似的app也是偶有这个功能的,即比如识别专辑链接为一个逻辑歌单。确实并不是任何app都有支持,估计兼容协议并不是那么轻松吧。Just a thought。

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.