Skip to content

KRTirtho/spotube

Repository files navigation

Spotube Logo

An open source, cross-platform Spotify client compatible across multiple platforms
utilizing Spotify's data API and YouTube, Piped.video or JioSaavn as an audio source,
eliminating the need for Spotify Premium

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

  • 🚫 No ads, thanks to the use of public & free Spotify and YT Music APIsΒΉ
  • ⬇️ Freely downloadable tracks
  • πŸ–₯️ πŸ“± Cross-platform support
  • πŸͺΆ Small size & less data usage
  • πŸ•΅οΈ Anonymous/guest login
  • πŸ•’ Time synced lyrics
  • βœ‹ No telemetry, diagnostics or user data collection
  • πŸš€ Native performance
  • πŸ“– Open source/libre software
  • πŸ”‰ Playback control is done locally, not on the server

ΒΉ It is still recommended to support creators by engaging with their YouTube channels/Spotify tracks (or preferably by buying their merch/concert tickets/physical media).

❌ Unsupported features

  • πŸ—£οΈ Spotify Shows & Podcasts: Shows and Podcasts will never be supported because the audio tracks are only available on Spotify and accessing them would require Spotify Premium.
  • 🎧 Spotify Listen Along: Coming soon!

πŸ“œ ⬇️ 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 Get it on Google Play
APK download
Download from F-Droid
Flatpak

flatpak install com.github.KRTirtho.Spotube

Download on Flathub
AppImage AppImage's lacking stability led to it's temporal removal. More information at #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 concerned, 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. Spotify API - The Spotify Web API is a RESTful API that provides access to Spotify data
  3. Piped - Piped is a privacy friendly alternative YouTube frontend, which is efficient and scalable by design.
  4. YouTube - YouTube is an American online video-sharing platform headquartered in San Bruno, California. Three former PayPal employeesβ€”Chad Hurley, Steve Chen, and Jawed Karimβ€”created the service in February 2005
  5. JioSaavn - JioSaavn is an Indian online music streaming service and a digital distributor of Bollywood, English and other regional Indian music across the world. Since it was founded in 2007 as Saavn, the company has acquired rights to over 5 crore (50 million) music tracks in 15 languages
  6. SongLink - SongLink is a free smart link service that helps you share music with your audience. It's a one-stop-shop for creating smart links for music, podcasts, and other audio content
  7. LRCLib - A public synced lyric API
  8. 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
  9. AUR - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
  10. Flatpak - Flatpak is a utility for software deployment and package management for Linux
  11. SponsorBlock - SponsorBlock is an open-source crowdsourced browser extension and open API for skipping sponsor segments in YouTube videos.
  12. Inno Setup - Inno Setup is a free installer for Windows programs by Jordan Russell and Martijn Laan
  13. 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
  14. 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. args - Library for defining parsers for parsing raw command-line arguments into a set of options and values using GNU and POSIX style options.
  2. async - Utility functions and classes related to the 'dart:async' library.
  3. audio_service - Flutter plugin to play audio in the background while the screen is off.
  4. 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.
  5. auto_size_text - Flutter widget that automatically resizes text to fit perfectly within its bounds.
  6. buttons_tabbar - A Flutter package that implements a TabBar where each label is a toggle button.
  7. cached_network_image - Flutter library to load and cache network images. Can also be used with placeholder and error widgets.
  8. catcher_2 - Plugin for error catching which provides multiple handlers for dealing with errors when they are not caught by the developer.
  9. collection - Collections and utilities functions and classes related to collections.
  10. cupertino_icons - Default icons asset for Cupertino widgets based on Apple styled icons
  11. curved_navigation_bar - Stunning Animating Curved Shape Navigation Bar. Adjustable color, background color, animation curve, animation duration.
  12. dbus - A native Dart implementation of the D-Bus message bus client. This package allows Dart applications to directly access services on the Linux desktop.
  13. device_info_plus - Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.
  14. device_preview - Approximate how your Flutter app looks and performs on another device.
  15. dio - A powerful HTTP networking package,supports Interceptors,Aborting and canceling a request,Custom adapters, Transformers, etc.
  16. disable_battery_optimization - Flutter plugin to check and disable battery optimizations. Also shows custom steps to disable the optimizations in devices like mi, xiaomi, samsung, oppo, huawei, oneplus etc
  17. 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.
  18. envied - Explicitly reads environment variables into a dart file from a .env file for more security and faster start up times.
  19. file_selector - Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.
  20. fluentui_system_icons - Fluent UI System Icons are a collection of familiar, friendly and modern icons from Microsoft.
  21. flutter_cache_manager - Generic cache manager for flutter. Saves web files on the storages of the device and saves the cache info using sqflite.
  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_hooks - A flutter implementation of React hooks. It adds a new kind of widget with enhanced code reuse.
  25. 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.
  26. flutter_native_splash - Customize Flutter's default white native splash screen with background color and splash image. Supports dark mode, full screen, and more.
  27. flutter_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  28. flutter_secure_storage - Flutter Secure Storage provides API to store data in secure storage. Keychain is used in iOS, KeyStore based solution is used in Android.
  29. flutter_svg - An SVG rendering and widget library for Flutter, which allows painting and displaying Scalable Vector Graphics 1.1 files.
  30. form_validator - Simplest form validation library for flutter's form field widgets
  31. fuzzywuzzy - An implementation of the popular fuzzywuzzy package in Dart, to suit all your fuzzy string matching/searching needs!
  32. go_router - A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more
  33. google_fonts - A Flutter package to use fonts from fonts.google.com. Supports HTTP fetching, caching, and asset bundling.
  34. hive - Lightweight and blazing fast key-value database written in pure Dart. Strongly encrypted using AES-256.
  35. hive_flutter - Extension for Hive. Makes it easier to use Hive in Flutter apps.
  36. hooks_riverpod - A reactive caching and data-binding framework. Riverpod makes working with asynchronous code a breeze.
  37. html - APIs for parsing and manipulating HTML content outside the browser.
  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. introduction_screen - Introduction/Onboarding package for flutter app with some customizations possibilities
  42. json_annotation - Classes and helper functions that support JSON code generation via the json_serializable package.
  43. logger - Small, easy to use and extensible logger which prints beautiful logs.
  44. media_kit - A cross-platform video player & audio player for Flutter & Dart. Performant, stable, feature-proof & modular.
  45. media_kit_libs_audio - package:media_kit audio (only) playback native libraries for all platforms.
  46. metadata_god - Plugin for retrieving and writing audio tags/metadata from audio files
  47. mime - Utilities for handling media (MIME) types, including determining a type from a file extension and file contents.
  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. popover - A popover is a transient view that appears above other content onscreen when you tap a control or in an area.
  54. scroll_to_index - Scroll to a specific child of any scrollable widget in Flutter
  55. sidebarx - flutter multiplatform navigation sidebar / side navigationbar / drawer widget
  56. shared_preferences - Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.
  57. skeleton_text - A package that provides an easy way to add skeleton text loading animation in Flutter project. This project is a part of 101Loop community.
  58. smtc_windows - Windows SystemMediaTransportControls implementation for Flutter giving access to Windows OS Media Control applet.
  59. stroke_text - A Simple Flutter plugin for applying stroke (border) style to a text widget
  60. system_theme - A plugin to get the current system theme info. Supports Android, Web, Windows, Linux and macOS
  61. titlebar_buttons - A package which provides most of the titlebar buttons from windows, linux and macos.
  62. url_launcher - Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes.
  63. uuid - RFC4122 (v1, v4, v5, v6, v7, v8) UUID Generator and Parser for Dart
  64. version - Provides a simple class for parsing and comparing semantic versions as defined by http://semver.org/
  65. visibility_detector - A widget that detects the visibility of its child and notifies a callback.
  66. window_manager - This plugin allows Flutter desktop apps to resizing and repositioning the window.
  67. youtube_explode_dart - A port in dart of the youtube explode library. Supports several API functions without the need of Youtube API Key.
  68. simple_icons - The Simple Icon pack available as Flutter Icons. Provides over 1500 Free SVG icons for popular brands.
  69. audio_service_mpris - audio_service platform interface supporting Media Player Remote Interfacing Specification.
  70. 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.
  71. jiosaavn - Unofficial API client for jiosaavn.com
  72. very_good_infinite_list - A library for easily displaying paginated data, created by Very Good Ventures. Great for activity feeds, news feeds, and more.
  73. gap - Flutter widgets for easily adding gaps inside Flex widgets such as Columns and Rows or scrolling views.
  74. sliver_tools - A set of useful sliver tools that are missing from the flutter framework
  75. html_unescape - A small library for un-escaping HTML. Supports all Named Character References, Decimal Character References and Hexadecimal Character References.
  76. wikipedia_api - Wikipedia API for dart and flutter
  77. skeletonizer - Converts already built widgets into skeleton loaders with no extra effort.
  78. app_links - Android App Links, Deep Links, iOs Universal Links and Custom URL schemes handler for Flutter (desktop included).
  79. win32_registry - A package that provides a friendly Dart API for accessing the Windows Registry.
  80. flutter_sharing_intent - A flutter plugin that allow flutter apps to receive photos, videos, text, urls or any other file types from another app.
  81. flutter_broadcasts - A plugin for sending and receiving broadcasts with Android intents and iOS notifications.
  82. freezed_annotation - Annotations for the freezed code-generator. This package does nothing without freezed too.
  83. spotify - An incomplete dart library for interfacing with the Spotify Web API.
  84. bonsoir - A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.
  85. shelf - A model for web server middleware that encourages composition and easy reuse.
  86. shelf_router - A convenient request router for the shelf web-framework, with support for URL-parameters, nested routers and routers generated from source annotations.
  87. shelf_web_socket - A shelf handler that wires up a listener for every connection.
  88. web_socket_channel - StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel.
  89. lrc - A Dart-only package that creates, parses, and handles LRC, which is a format that stores song lyrics.
  90. pub_api_client - An API Client for Pub to interact with public package information.
  91. pubspec_parse - Simple package for parsing pubspec.yaml files with a type-safe API and rich error reporting.
  92. timezone - Time zone database and time zone aware DateTime.
  93. crypto - Implementations of SHA, MD5, and HMAC cryptographic functions.
  94. build_runner - A build system for Dart code generation and modular compilation.
  95. envied_generator - Generator for the Envied package. See https://pub.dev/packages/envied.
  96. flutter_distributor - A complete tool for packaging and publishing your Flutter apps.
  97. flutter_gen_runner - The Flutter code generator for your assets, fonts, colors, … β€” Get rid of all String-based APIs.
  98. flutter_launcher_icons - A package which simplifies the task of updating your Flutter app's launcher icon.
  99. flutter_lints - Recommended lints for Flutter apps, packages, and plugins to encourage good coding practices.
  100. hive_generator - Extension for Hive. Automatically generates TypeAdapters to store any class.
  101. json_serializable - Automatically generate code for converting to and from JSON by annotating Dart classes.
  102. freezed - Code generation for immutable classes that has a simple syntax/API without compromising on the features.
  103. custom_lint - Lint rules are a powerful way to improve the maintainability of a project. Custom Lint allows package authors and developers to easily write custom lint rules.
  104. riverpod_lint - Riverpod_lint is a developer tool for users of Riverpod, designed to help stop common issues and simplify repetitive tasks.
  105. flutter_desktop_tools - Essential collection of tools for flutter desktop app development
  106. piped_client - API Client for piped.video
  107. scrobblenaut - A deadly simple LastFM API Wrapper for Dart. So deadly simple that it's gonna hit the mark.
  108. window_size - Allows resizing and repositioning the window containing Flutter.
  109. draggable_scrollbar - A scrollbar that can be dragged for quickly navigation through a vertical list. Additional option is showing label next to scrollthumb with information about current item.
  110. dart_discord_rpc - Discord Rich Presence for Flutter & Dart apps & games.

Β© Copyright Spotube 2024