spotube README

The project's README from github.com/team-spotube/spotube. As one markdown file: README.md.

Spotube Logo

A cross-platform extensible open-source music streaming platform.
Bring your own music metadata/playlist/audio-source with plugins created by community or by yourself. A small step towards the decentralized music streaming era!

Btw it's not just another Electron app 😉

Visit the website Discord Server

Support me on Patron Buy me a Coffee

HackerNews

Donate to our Open Collective


Spotube Desktop

Spotube Mobile

🌃 Features

📜 ⬇️ Installation guide

New versions usually release every 3-4 months.
This handy table lists all the methods you can use to install Spotube:

Platform Package/Installation Method
Windows Windows Download
MacOS MacOS Download
Android APK download
Download from F-Droid
iOS Download iOS IPA
*iPA file only. Requires sideloading with AltStore or similar tools.
Flatpak

flatpak install com.github.KRTirtho.Spotube

Download on Flathub
AppImage AppImage's lacking stability led to it's temporary removal. More information at https://github.com/KRTirtho/spotube/issues/1082
Debian/Ubuntu Debian/Ubuntu Download

Then run: sudo apt install ./Spotube-linux-x86_64.deb

Arch/Manjaro

With pamac: sudo pamac install spotube-bin

With yay: yay -Sy spotube-bin

Fedora/OpenSuse Fedora/OpenSuse Download

For Fedora: sudo dnf install ./Spotube-linux-x86_64.rpm

For OpenSuse: sudo zypper in ./Spotube-linux-x86_64.rpm

Linux (tarball) Tarball Download
Macos - Homebrew
brew tap krtirtho/apps
brew install --cask spotube
Windows - Chocolatey

choco install spotube

Windows - Scoop

scoop bucket add extras

scoop install spotube

Windows - WinGet

winget install --id KRTirtho.Spotube

🔄 Nightly Builds

Grab the latest nightly builds of Spotube from the GitHub Releases.

🕳️ Building from source

GitHub Workflow Status

You can compile Spotube's source code by following these instructions.

👥 The Spotube team

💼 License

Spotube is open source and licensed under the BSD-4-Clause License.

If you are curious, you can read the reason of choosing this license.

[Click to show] 🙏 Services/Package/Plugin Credits

Services

  1. Flutter - Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase
  2. MPV - mpv is a free (as in freedom) media player for the command line. It supports a wide variety of media file formats, audio and video codecs, and subtitle types.
  3. Musicbrainz - MusicBrainz is a MetaBrainz project that aims to create a collaborative music database that is similar to the freedb project.
  4. Listenbrainz - ListenBrainz is a open-source project by the MetaBrainz Foundation that allows users to crowdsource and publicly store their digital music listening data.
  5. Piped - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
  6. Invidious - Invidious is an open source alternative front-end to YouTube.
  7. yt-dlp - A feature-rich command-line audio/video downloader.
  8. NewPipeExtractor - NewPipe's core library for extracting data from streaming sites.
  9. YouTubeExplodeDart - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
  10. LRCLib - A public synced lyric API.
  11. Linux - Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution
  12. AUR - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
  13. Flatpak - Flatpak is a utility for software deployment and package management for Linux
  14. SponsorBlock - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos.
  15. Inno Setup - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan
  16. F-Droid - F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device
  17. LastFM - Last.fm is a music streaming and discovery platform that helps users discover and share new music. It tracks users' music listening habits across many devices and platforms.

Dependencies

  1. app_links - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
  2. args - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
  3. audio_service - Flutter plugin to play audio in the background while the screen is off.
  4. audio_service_mpris - audio_service platform interface supporting Media Player Remote Interfacing Specification.
  5. audio_session - Sets the iOS audio session category and Android audio attributes for your app, and manages your app's audio focus, mixing and ducking behaviour.
  6. auto_route - AutoRoute is a declarative routing solution, where everything needed for navigation is automatically generated for you.
  7. auto_size_text - Flutter widget that automatically resizes text to fit perfectly within its bounds.
  8. bonsoir - A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.
  9. cached_network_image - Flutter library to load and cache network images. Can also be used with placeholder and error widgets.
  10. connectivity_plus - Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS.
  11. device_info_plus - Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
  12. dio - A powerful HTTP networking package,supports Interceptors,Aborting and canceling a request,Custom adapters, Transformers, etc.
  13. drift - Drift is a reactive library to store relational data in Dart and Flutter applications.
  14. duration - Utilities to make working with 'Duration's easier. Formats duration in human readable form and also parses duration in human readable form to Dart's Duration.
  15. encrypt - A set of high-level APIs over PointyCastle for two-way cryptography.
  16. envied - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
  17. file_picker - A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extension filtering support.
  18. file_selector - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
  19. fluentui_system_icons - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.
  20. flutter_cache_manager - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
  21. flutter_discord_rpc - Discord RPC support for Flutter desktop platforms
  22. flutter_displaymode - A Flutter plugin to set display mode (resolution, refresh rate) on Android platform. Allows to enable high refresh rate on supported devices.
  23. flutter_feather_icons - Feather is a collection of simply beautiful open source icons. Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency and usability.
  24. flutter_form_builder - This package helps in creation of forms in Flutter by removing the boilerplate code, reusing validation, react to changes, and collect final user input.
  25. flutter_hooks - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
  26. flutter_inappwebview - A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.
  27. flutter_native_splash - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
  28. flutter_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  29. flutter_sharing_intent - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
  30. flutter_undraw - Undraw.co Illustrations for Flutter with customization options
  31. form_builder_validators - Form Builder Validators set of validators for FlutterFormBuilder. Provides common validators and a way to make your own.
  32. freezed_annotation - Annotations for the freezed code-generator. This package does nothing without freezed too.
  33. fuzzywuzzy - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
  34. home_widget - A plugin to provide a common interface for creating HomeScreen Widgets for Android and iOS.
  35. hooks_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  36. html - APIs for parsing and manipulating HTML content outside the browser.
  37. html_unescape - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
  38. http - A composable, multi-platform, Future-based API for HTTP requests.
  39. image_picker - Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.
  40. intl - Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
  41. local_notifier - This plugin allows Flutter desktop apps to displaying local notifications.
  42. logger - Small, easy to use and extensible logger which prints beautiful logs.
  43. logging - Provides APIs for debugging and error logging, similar to loggers in other languages, such as the Closure JS Logger and java.util.logging.Logger.
  44. lrc - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
  45. metadata_god - Plugin for retrieving and writing audio tags/metadata from audio files
  46. mime - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
  47. open_file - A plug-in that can call native APP to open files with string result in flutter, support iOS(UTI) / android(intent) / PC(ffi) / web(dart:html)
  48. package_info_plus - Flutter plugin for querying information about the application package, such as CFBundleVersion on iOS or versionCode on Android.
  49. palette_generator - Flutter package for generating palette colors from a source image.
  50. path - A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web.
  51. path_provider - Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories.
  52. permission_handler - Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
  53. riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  54. scroll_to_index - Scro

spotube (team-spotube/spotube)

Searching Database…

这是什么?Spotube 是一款开源的跨平台音乐流媒体应用,支持桌面端和移动端。它允许你通过插件接入自己的音乐元数据、播放列表和音频来源,而不是依赖某个锁定的单一后端。
这只是另一个音乐服务的 Electron 套壳吗?不是。它使用 Flutter 构建以获得原生性能,并明确表示自己不是 Electron 应用。它是一个由插件驱动的客户端,通过你配置的任意后端进行流媒体播放,而不是自己托管音乐库。
我该如何在我的平台上安装?每个操作系统都有对应的安装包:Linux 上有 Flatpak、.deb/.rpm 或 AUR;macOS 上有 Homebrew cask;Windows 上有 choco、scoop 或 winget;Android 上有 APK 和 F-Droid;iOS 上则是需要侧载的 IPA 文件。每日构建版本发布在 GitHub Releases 上。
我需要先安装什么吗,比如 MPV?没有单独说明需要手动安装的前置条件。Spotube 内置 MPV 作为其播放引擎,并在构建时引入基于 Flutter 的软件包,因此你只需要使用对应操作系统的安装方式即可。
我能直接从 App Store 或 AppImage 获取它吗?不能。iOS 版只提供需要手动侧载的 IPA 文件,而 AppImage 版本因稳定性问题曾被暂时下架。
Spotube 会追踪我的收听记录或把数据发送到别处吗?不会。该应用明确避免遥测和诊断功能,播放控制在你的设备本地完成,而不是在远程服务器上进行。
插件系统到底是如何工作的?Spotube 由插件驱动,因此任何音乐平台或自定义服务都可以通过社区开发的插件或你自己编写的插件接入,让你自由选择音频来源,而不会被绑定到某一个提供商。
底层是什么在支撑基于 YouTube 的流媒体播放?它使用注重隐私的 YouTube 前端和提取器,例如 Piped、Invidious、yt-dlp、NewPipeExtractor 和 YouTubeExplodeDart,无需官方 YouTube API 密钥即可获取音频。
它支持同步歌词吗?支持。无论音频由哪个插件提供,时间同步歌词都可以正常使用,背后由 LRCLib 等服务提供支持。
曲目元数据和 scrobbling 的数据来自哪里?元数据来自 MusicBrainz,收听历史及类似 scrobbling 的功能则由 ListenBrainz 和 Last.fm 提供。
Size
147.2 MB
Stars
50K
Age
5y
Commits · 90 Days