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

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智能小助手)
公众号二维码

posted @ 2025-06-28 09:05  qife  阅读(59)  评论(0)    收藏  举报