一个开源的跨平台 Spotify 客户端,兼容多个平台
利用 Spotify 的数据 API 和 YouTube、Piped.video 或 JioSaavn 作为音频源,
无需 Spotify Premium
顺便说一句,这不仅仅是另一个 Electron 应用 😉
🌃 特性
- 🚫 无广告,得益于使用公共和免费的 Spotify 和 YT Music API¹
- ⬇️ 可自由下载音轨
- 🖥️ 📱 跨平台支持
- 🪶 体积小,数据使用量少
- 🕵️ 匿名/访客登录
- 🕒 时间同步歌词
- ✋ 无遥测、诊断或用户数据收集
- 🚀 原生性能
- 📖 开源/自由软件
- 🔉 播放控制在本地完成,而非服务器端
¹ 仍然建议通过与创作者的 YouTube 频道/Spotify 音轨互动来支持他们(或更好的是购买他们的周边/音乐会门票/实体媒介)。
❌ 不支持的功能
- 🗣️ **Spotify 节目和播客:**节目和播客永远不会被支持,因为音频轨道仅在 Spotify 上可用,访问它们需要 Spotify Premium。
- 🎧 Spotify 一起听:即将推出!
📜 ⬇️ 安装指南
新版本通常每 3-4 个月发布一次。
这个方便的表格列出了所有可以安装 Spotube 的方法:
平台 | 安装包/安装方法 |
---|---|
Windows | |
MacOS | |
Android |
|
Flatpak |
|
AppImage | 由于 AppImage 缺乏稳定性,暂时移除。更多信息请参见 https://github.com/KRTirtho/spotube/issues/1082 |
Debian/Ubuntu |
然后运行: |
Arch/Manjaro |
使用 pamac: 使用 yay: |
Fedora/OpenSuse |
对于 Fedora: 对于 OpenSuse: |
Linux(tar 包) | |
Macos - Homebrew |
brew tap krtirtho/apps
brew install --cask spotube
|
Windows - Chocolatey |
|
Windows - Scoop |
|
Windows - WinGet |
|
🔄 每日构建版本
从 GitHub Releases 获取 Spotube 的最新每日构建版本。
🕳️ 从源代码构建
您可以通过遵循这些说明来编译 Spotube 的源代码。
👥 Spotube 团队
- Kingkor Roy Tirtho - 创始人、维护者和首席开发者
- RaptaG - GitHub 版主和社区经理
- Owen Connor - Discord 酷版主
- Meenbeese - Android 开发者
- Piotr Rogowski - MacOS 开发者
- Rusty Apple - 神秘未知人士
💼 许可证
Spotube 是开源的,并根据 BSD-4-Clause 许可证授权。
如果您有疑虑,可以阅读选择此许可证的原因。
[点击展开]
🙏 服务/包/插件致谢
### 服务
[点击展开]
🙏 服务/包/插件致谢-
Flutter - Flutter 改变了应用开发的流程。从单一代码库构建、测试和部署精美的移动、网页、桌面和嵌入式应用
-
Spotify API - Spotify Web API 是一个提供访问 Spotify 数据的 RESTful API
-
Piped - Piped 是一个注重隐私的 YouTube 替代前端,其设计高效且可扩展
-
YouTube - YouTube 是一个总部位于加利福尼亚州圣布鲁诺的美国在线视频分享平台。三位前 PayPal 员工—Chad Hurley、Steve Chen 和 Jawed Karim—于 2005 年 2 月创建了这项服务
-
JioSaavn - JioSaavn 是一个印度在线音乐流媒体服务和数字发行商,在全球范围内提供宝莱坞、英语和其他印度地区音乐。自 2007 年以 Saavn 的名称成立以来,该公司已获得了超过 5000 万首 15 种语言的音乐曲目版权
-
SongLink - SongLink 是一项免费的智能链接服务,帮助你与听众分享音乐。它是创建音乐、播客和其他音频内容智能链接的一站式商店
-
LRCLib - 一个公共同步歌词 API
-
Linux - Linux 是一个基于 Linux 内核的开源类 Unix 操作系统家族,该操作系统内核由 Linus Torvalds 于 1991 年 9 月 17 日首次发布。Linux 通常以 Linux 发行版的形式打包
-
AUR - AUR 代表 Arch 用户仓库。它是一个面向基于 Arch 的 Linux 发行版用户的社区驱动仓库
-
Flatpak - Flatpak 是一个用于 Linux 软件部署和包管理的工具
-
SponsorBlock - SponsorBlock 是一个开源的众包浏览器扩展和开放 API,用于跳过 YouTube 视频中的赞助商片段
-
Inno Setup - Inno Setup 是由 Jordan Russell 和 Martijn Laan 开发的免费 Windows 程序安装器
-
F-Droid - F-Droid 是一个可安装的 Android 平台 FOSS(自由开源软件)应用程序目录。该客户端使用户可以轻松浏览、安装和跟踪设备上的更新
-
LastFM - Last.fm 是一个音乐流媒体和发现平台,帮助用户发现和分享新音乐。它可以跟踪用户在多个设备和平台上的音乐收听习惯
依赖项
- app_links - Flutter 的 Android 应用链接、深层链接、iOS 通用链接和自定义 URL 方案处理程序(包括桌面版)。
- args - 用于定义解析器的库,可将原始命令行参数解析为一组选项和值,使用 GNU 和 POSIX 风格的选项。
- async - 与 'dart:async' 库相关的实用函数和类。
- audio_service_mpris - 支持媒体播放器远程接口规范的 audio_service 平台接口。
- audio_service - 一个 Flutter 插件,可在屏幕关闭时在后台播放音频。
- audio_session - 为您的应用设置 iOS 音频会话类别和 Android 音频属性,并管理应用的音频焦点、混音和音量降低行为。
- auto_size_text - 一个 Flutter 小部件,可自动调整文本大小以完美适应其边界。
- bonsoir - 一个零配置库,允许您发现网络服务并广播您自己的服务。基于 Apple Bonjour 和 Android NSD。
- build_runner - 用于 Dart 代码生成和模块化编译的构建系统。
- buttons_tabbar - 一个 Flutter 包,实现了一个 TabBar,其中每个标签都是一个切换按钮。
- cached_network_image - Flutter 库,用于加载和缓存网络图像。还可以使用占位符和错误小部件。
- catcher_2 - 错误捕获插件,提供多个处理程序来处理开发人员未捕获的错误。
- collection - 与集合相关的集合和实用函数及类。
- crypto - SHA、MD5 和 HMAC 加密函数的实现。
- curved_navigation_bar - 令人惊叹的动画曲线形状导航栏。可调整颜色、背景颜色、动画曲线和动画持续时间。
- custom_lint - Lint 规则是提高项目可维护性的强大方法。Custom Lint 允许包作者和开发人员轻松编写自定义 lint 规则。
- dart_discord_rpc - 适用于 Flutter 和 Dart 应用程序和游戏的 Discord Rich Presence。
- dbus - D-Bus 消息总线客户端的原生 Dart 实现。该包允许 Dart 应用程序直接访问 Linux 桌面上的服务。
- device_info_plus - Flutter 插件,提供有关设备(品牌、型号等)和应用程序运行的 Android 或 iOS 版本的详细信息。
- dio - 一个强大的 HTTP 网络包,支持拦截器、中止和取消请求、自定义适配器、转换器等。
- disable_battery_optimization - Flutter 插件,用于检查和禁用电池优化。还显示在小米、三星、OPPO、华为、一加等设备上禁用优化的自定义步骤。
- draggable_scrollbar - 可拖动的滚动条,用于快速浏览垂直列表。附加选项是在滚动条旁显示带有当前项信息的标签。
- duration - 使处理"Duration"更容易的实用工具。以人类可读的形式格式化持续时间,并将人类可读形式的持续时间解析为 Dart 的 Duration。
- envied_generator - Envied 包的生成器。请参阅 https://pub.dev/packages/envied。
- envied - 明确地从 .env 文件中读取环境变量到 dart 文件中,以提高安全性和更快的启动时间。
- file_picker - 一个包,允许您使用本机文件浏览器选择单个或多个绝对文件路径,支持扩展名过滤。
- file_selector - Flutter 插件,用于使用本机文件选择 UI 打开和保存文件或选择目录。
- fluentui_system_icons - Fluent UI 系统图标是来自微软的一组熟悉、友好和现代的图标。
- flutter_broadcasts - 用于发送和接收 Android 意图和 iOS 通知的广播的插件。
- flutter_cache_manager - Flutter 的通用缓存管理器。将网络文件保存在设备存储中,并使用 sqflite 保存缓存信息。
- flutter_displaymode - 一个 Flutter 插件,用于在 Android 平台上设置显示模式(分辨率、刷新率)。允许在支持的设备上启用高刷新率。
- flutter_feather_icons - Feather 是一个简单美观的开源图标集合。每个图标都设计在 24x24 的网格上,强调简洁、一致性和可用性。
- flutter_gen_runner - 用于资源、字体、颜色等的 Flutter 代码生成器 — 摆脱所有基于字符串的 API。
- flutter_hooks - React hooks 的 Flutter 实现。它添加了一种新型小部件,具有增强的代码重用功能。
- flutter_inappwebview - 一个 Flutter 插件,允许您添加内联网页视图、使用无头网页视图,以及打开应用内浏览器窗口。
- flutter_launcher_icons - 一个简化更新 Flutter 应用启动图标任务的包。
- flutter_lints - 推荐用于 Flutter 应用、包和插件的 lint 规则,以鼓励良好的编码实践。
- flutter_native_splash - 使用背景颜色和启动图像自定义 Flutter 的默认白色原生启动屏幕。支持深色模式、全屏等。
- flutter_riverpod - 一个响应式缓存和数据绑定框架。Riverpod 使处理异步代码变得轻而易举。
- flutter_secure_storage - Flutter 安全存储提供 API 以将数据存储在安全存储中。iOS 中使用钥匙串,Android 中使用基于 KeyStore 的解决方案。
- flutter_sharing_intent - 一个 Flutter 插件,允许 Flutter 应用从其他应用接收照片、视频、文本、URL 或任何其他文件类型。
- flutter_svg - 一个用于 Flutter 的 SVG 渲染和小部件库,可以绘制和显示可缩放矢量图形 1.1 文件。
- form_validator - 最简单的 Flutter 表单字段小部件验证库。
- freezed_annotation - freezed 代码生成器的注解。没有 freezed,这个包什么也做不了。
- freezed - 用于不可变类的代码生成,具有简单的语法/API,同时不影响功能。
- fuzzywuzzy - 流行的 fuzzywuzzy 包在 Dart 中的实现,以满足您所有的模糊字符串匹配/搜索需求!
- gap - Flutter 小部件,用于在 Column 和 Row 等 Flex 小部件或滚动视图中轻松添加间隔。
- go_router - 基于 Navigation 2 的 Flutter 声明式路由器,支持深层链接、数据驱动路由等。
- google_fonts - 一个 Flutter 包,用于使用来自 fonts.google.com 的字体。支持 HTTP 获取、缓存和资源捆绑。
- hive_flutter - Hive 的扩展。使在 Flutter 应用中使用 Hive 更容易。
- hive_generator - Hive 的扩展。自动生成 TypeAdapter 以存储任何类。
- hive - 用纯 Dart 编写的轻量级且速度极快的键值数据库。使用 AES-256 进行强加密。
- hooks_riverpod - 一个响应式缓存和数据绑定框架。Riverpod 使处理异步代码变得轻而易举。
- html_unescape - 一个用于解除HTML转义的小型库。支持所有命名字符引用、十进制字符引用和十六进制字符引用。
- html - 用于在浏览器外解析和操作HTML内容的API。
- http - 一个可组合的、跨平台的、基于Future的HTTP请求API。
- image_picker - Flutter插件,用于从Android和iOS图片库中选择图片,以及使用相机拍摄新照片。
- intl - 包含处理国际化/本地化消息、日期和数字格式化和解析、双向文本以及其他国际化问题的代码。
- introduction_screen - Flutter应用的引导/入门页面包,具有一些自定义可能性。
- io - Dart VM运行时的实用工具,包括支持ANSI颜色、文件复制和标准退出代码值。
- jiosaavn - jiosaavn.com的非官方API客户端。
- json_annotation - 支持通过
json_serializable
包进行JSON代码生成的类和辅助函数。 - json_serializable - 通过注解Dart类自动生成JSON转换代码。
- local_notifier - 此插件允许Flutter桌面应用显示本地通知。
- logger - 小巧、易用且可扩展的日志记录器,可打印漂亮的日志。
- lrc - 一个纯Dart包,用于创建、解析和处理LRC格式的歌词文件。
- media_kit_libs_audio - package:media_kit 音频(仅)播放所有平台的原生库。
- media_kit - Flutter和Dart的跨平台视频播放器和音频播放器。高性能、稳定、功能丰富且模块化。
- metadata_god - 用于从音频文件中检索和写入音频标签/元数据的插件。
- mime - 处理媒体(MIME)类型的实用工具,包括从文件扩展名和文件内容确定类型。
- package_info_plus - Flutter插件,用于查询应用程序包的信息,如iOS上的CFBundleVersion或Android上的versionCode。
- palette_generator - Flutter包,用于从源图像生成调色板颜色。
- path_provider - Flutter插件,用于获取主机平台文件系统上常用位置,如临时和应用数据目录。
- path - 基于字符串的路径操作库。包含您熟悉和喜爱的所有路径操作,对Windows、POSIX(Linux和Mac OS X)以及Web提供可靠支持。
- permission_handler - Flutter的权限插件。该插件提供了跨平台(iOS、Android)API来请求和检查权限。
- piped_client - piped.video的API客户端。
- popover - 弹出框是一个临时视图,当你点击控件或某个区域时,会显示在屏幕上其他内容之上。
- process_run - Linux/Win/Mac的进程运行助手,以及类似which的查找可执行文件功能。
- pub_api_client - 用于与公共包信息交互的Pub API客户端。
- pubspec_parse - 用于解析pubspec.yaml文件的简单包,具有类型安全的API和丰富的错误报告。
- riverpod_lint - Riverpod_lint是Riverpod用户的开发工具,旨在帮助阻止常见问题并简化重复任务。
- scrobblenaut - 一个极其简单的LastFM API封装器,适用于Dart。简单到足以一击命中目标。
- scroll_to_index - 在Flutter中滚动到任何可滚动小部件的特定子项。
- shared_preferences - Flutter插件,用于读写简单的键值对。在iOS上封装NSUserDefaults,在Android上封装SharedPreferences。
- shelf_router - shelf Web框架的便捷请求路由器,支持URL参数、嵌套路由器和从源注解生成的路由器。
- shelf_web_socket - 一个shelf处理程序,为每个连接设置监听器。
- shelf - 一个Web服务器中间件模型,鼓励组合和易于重用。
- sidebarx - Flutter多平台导航侧边栏/侧边导航栏/抽屉小部件。
- simple_icons - 以Flutter图标形式提供的Simple Icon包。提供超过1500个免费的SVG品牌图标。
- skeleton_text - 一个包,提供了在Flutter项目中轻松添加骨架文本加载动画的方法。该项目是101Loop社区的一部分。
- skeletonizer - 无需额外努力即可将已构建的小部件转换为骨架加载器。
- sliver_tools - 一组在Flutter框架中缺失的有用的sliver工具。
- smtc_windows - Windows
SystemMediaTransportControls
的Flutter实现,提供对Windows操作系统媒体控制小程序的访问。 - spotify - 一个不完整的Dart库,用于与Spotify Web API交互。
- stroke_text - 一个简单的Flutter插件,用于为文本小部件应用描边(边框)样式。
- system_theme - 一个获取当前系统主题信息的插件。支持Android、Web、Windows、Linux和macOS。
- timezone - 时区数据库和时区感知的DateTime。
- titlebar_buttons - 一个提供Windows、Linux和macOS大多数标题栏按钮的包。
- tray_manager - 此插件允许Flutter桌面应用定义系统托盘。
- url_launcher - Flutter插件,用于启动URL。支持Web、电话、短信和电子邮件方案。
- uuid - RFC4122(v1、v4、v5、v6、v7、v8)UUID生成器和解析器,适用于Dart。
- version - 提供一个简单的类,用于解析和比较由http://semver.org/定义的语义版本。
- very_good_infinite_list - 由Very Good Ventures创建的库,用于轻松显示分页数据。非常适合活动流、新闻流等。
- visibility_detector - 一个检测其子项可见性并通知回调的小部件。
- web_socket_channel - WebSocket的StreamChannel包装器。提供跨平台的WebSocketChannel API,以及通过底层StreamChannel通信的该API的跨平台实现。
- wikipedia_api - 适用于Dart和Flutter的维基百科API。
- win32_registry - 一个为访问Windows注册表提供友好Dart API的包。
- window_manager - 此插件允许Flutter桌面应用调整窗口大小和重新定位窗口。
- xml - 一个轻量级库,用于解析、遍历、查询、转换和构建XML文档。
- youtube_explode_dart - YouTube explode库的Dart移植版。支持多个API功能,无需YouTube API密钥。