Nuclear - 基于流媒体的隐私优先音乐播放器

项目描述

Nuclear是一款专注于从免费来源流媒体播放音乐的桌面应用,具有以下核心特点:

  • 隐私优先设计,不进行用户追踪或数据分析
  • 无广告干扰的纯净音乐体验
  • 支持多平台(Windows/macOS/Linux)
  • 内置多种音乐源整合搜索
  • 支持Last.fm同步和歌词显示
  • 本地音乐库管理功能

功能特性

核心功能

  • 从多个免费来源流媒体播放音乐
  • :magnifying_glass_tilted_left: 统一搜索多个音乐源
  • 支持电台和直播流媒体
  • :computer_disk: 本地音乐库扫描和管理
  • 内置音频均衡器
  • 歌词自动查找和显示

隐私保护

  • ️ 无用户追踪或行为分析
  • :locked: 不收集个人身份信息
  • :prohibited: 无广告和第三方跟踪

社交集成

  • Last.fm 同步和记录
  • Mastodon 分享支持
  • Discord 社区集成

安装指南

系统要求

  • Node.js 14+
  • npm/yarn
  • Electron 4.2+

安装步骤

  1. 克隆仓库:

    git clone https://github.com/nukeop/nuclear.git
    cd nuclear
  2. 安装依赖:

    npm install
    # 或
    yarn install
  3. 运行开发模式:

    npm start
    # 或
    yarn start
  4. 构建应用:

    npm run build
    # 或
    yarn build

下载预编译版本

GitHub Releases下载最新版本。

使用说明

基本使用

// 初始化音乐播放
import { PlayerActions } from '@nuclear/core'; // 播放指定曲目
dispatch(PlayerActions.startPlayback()); // 暂停播放
dispatch(PlayerActions.pausePlayback());

搜索音乐

import { SearchActions } from '@nuclear/core';

// 执行统一搜索
dispatch(SearchActions.unifiedSearchStart('search query'));

Last.fm 集成

import { lastFmLoginAction } from '@nuclear/core';

// 连接Last.fm账号
dispatch(lastFmLoginAction(authToken));

核心代码

音乐播放控制

// src/actions/player.ts
export const startPlayback = createStandardAction(Player.START_PLAYBACK).map((fromMain: boolean) => {
return {
meta: { fromMain }
};
}); export const pausePlayback = createStandardAction(Player.PAUSE_PLAYBACK).map((fromMain: boolean) => {
return {
meta: { fromMain }
};
});

流媒体搜索

// src/actions/search.ts
export const SearchActions = {
unifiedSearchStart: createStandardAction(Search.UNIFIED_SEARCH_START)<string>(),
unifiedSearchSuccess: createStandardAction(Search.UNIFIED_SEARCH_SUCCESS)(),
unifiedSearchError: createStandardAction(Search.UNIFIED_SEARCH_ERROR)()
};

隐私保护实现

// src/actions/plugins.ts
export function createPlugins(pluginClasses) {
const plugins = {};
// 初始化插件系统,确保所有数据本地处理
for (const category of Object.keys(pluginClasses)) {
plugins[category] = [];
// ...插件初始化逻辑
}
return plugins;
}

贡献指南

欢迎通过以下方式贡献项目:

  • 报告问题和功能请求
  • 提交代码改进
  • 改进文档
  • 翻译本地化

详见贡献指南

许可证

Nuclear采用AGPL-3.0许可证开源。

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)

公众号二维码

Nuclear - 基于流媒体的隐私优先音乐播放器的更多相关文章

  1. 基于Qt Phonon模块实现音乐播放器

    这次使用Qt实现的是一个本地音乐播放器,可以播放下载在计算机本地的音乐,提供了添加歌曲,歌曲列表,清空列表的功能.默认歌曲列表循环播放.音乐播放的实现主要依赖的是Qt 的多媒体框架phonon.该音乐 ...

  2. 一个基于H5audio标签的vue音乐播放器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. SE Springer小组之《Spring音乐播放器》可行性研究报告一、二(转载)

         此文转载自组员小明处~~ 1 引言 1.1编写目的 <软件工程>课程,我们团队计划开发一个音乐播放器.本文档是基于网络上现有的音乐播放器的特点,团队计划实现的音乐播放器功能和团队 ...

  4. SE Springer小组《Spring音乐播放器》可行性研究报告一、二

    1 引言 1.1编写目的 <软件工程>课程,我们团队计划开发一个音乐播放器.本文档是基于网络上现有的音乐播放器的特点,团队计划实现的音乐播放器功能和团队人员的综合实力等情况,说明该软件开发 ...

  5. Swift - 制作一个在线流媒体音乐播放器(使用StreamingKit库)

    在之前的文章中,我介绍了如何使用 AVPlayer 制作一个简单的音乐播放器(点击查看1.点击查看2).虽然这个播放器也可以播放网络音频,但其实际上是将音频文件下载到本地后再播放的. 本文演示如何使用 ...

  6. 基于Qt的开源音乐播放器(CZPlayer)

    CZPlayer CZPlayer是基于Qt开发的一款功能强大的音乐播放器,该播放器的论坛地址请点击here,目前CZPlayer已经是第四个版本了,历史版本也分别在我的github上, github ...

  7. 网页播放音频、视频文件——基于web的html 5的音乐播放器(转载)

    文章转载自:开源中国社区 [http://www.oschina.net] 想通过手机客户端(支持 Android.iPhone 和 Windows Phone)访问开源中国:请点这里 HTML5 是 ...

  8. Android基于发展Service音乐播放器

    这是一个基于Service组件的音乐播放器,程序的音乐将会由后台的Service组件负责播放,当后台的播放状态改变时,程序将会通过发送广播通知前台Activity更新界面:当用户单击前台Activit ...

  9. 基于jQuery虾米音乐播放器样式代码

    分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div c ...

  10. 基于jQuery仿QQ音乐播放器网页版代码

    基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="m ...

随机推荐

  1. final关键字、Object类--java进阶day01

    1.规则 被final修饰的变量,名称都要大写,多单词的名称则需_来分隔 1.修饰方法 method方法已经不能被重写了,因为修饰该方法的是final 2.修饰类 当一个类中所有的成员方法都不想被重写 ...

  2. 在 .NET 中 使用 ANTLR4

    前言 本文将介绍如何在 .NET 中使用 ANTLR4 构建语法分析器.由于篇幅限制,本文不会深入讲解 ANTLR4 的语法规则,相关内容可参考 ANTLR4 的官方文档或其他资料.本文将涵盖以下内容 ...

  3. Audio DSP boot 过程

    在智能手机或智能手表等SoC上通常有一块专门的audio DSP(简称ADSP)来做音频处理.要做音频处理,ADSP首先要被boot起来.本文以CEVA BX2为例来讲讲ADSP的boot过程. 在上 ...

  4. 使用Python+SymPy计算无穷级数

    引言 在数学中,级数是指由数列的无限项组成的求和表达式.无穷级数的求和是一个非常重要且具有挑战性的数学问题,特别是在信号处理.物理学和工程学等领域.今天,我们将介绍如何利用 Python 中的 Sym ...

  5. python,下载图片到本地自定文件夹内的方法

    比如,我们需要下载下面这张图,图片的网络地址:"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000 ...

  6. 从 MySQL 获取数据,是从磁盘读取的吗?(buffer pool)

    从 MySQL 获取数据,是从磁盘读取的吗?(Buffer Pool) 在 MySQL 中,数据是否从磁盘读取取决于数据是否已经被加载到内存中.MySQL 使用 InnoDB 存储引擎 中的 Buff ...

  7. 网鼎杯-phpweb

    找了一些php读取文件的函数尝试读取源码,试了一个readfile就成功了 <?php $disable_fun = array("exec","shell_exe ...

  8. 在Podman中配置Dify Sandbox服务与外部PostgreSQL服务的网络连接

    在Podman中配置Dify Sandbox服务与外部PostgreSQL服务的网络连接 引言 在容器化环境中,确保不同服务之间的可靠通信是至关重要的.本文将指导你如何使用Podman来配置Dify ...

  9. GitLab CI/CD 的配置文件 .gitlab-ci.yml 简介

    〇.前言 .gitlab-ci.yml 文件主要用于项目的自动化部署配置,自动化可以大大提升团队效率,但同时这个文件的内容也比较复杂,弄清楚也并非易事,本文将对此文件的内容进行简单介绍,供参考. 另外 ...

  10. 细节解析 JavaScript 中 bind 函数的模拟实现

    大家的阅读是我发帖的动力,本文首发于我的博客:deerblog.gu-nami.com/,欢迎大家来玩,转载请注明出处喵. 前言 bind是一个改变函数this指针指向的一个常用函数,经常用在涉及th ...