Convert Figma logo to code with AI

Shabinder logoSpotiFlyer

Kotlin Multiplatform Music Downloader, Supports Spotify / Gaana / Youtube Music / Jio Saavn / SoundCloud.

10,283
769
10,283
483

Top Related Projects

Spotify Downloader and alternative of Spotdl(python) tool made in NodeJS based on youtube-dl

Spotify for the terminal written in Rust 🚀

Open Source Spotify client library

Quick Overview

SpotiFlyer is an open-source, multi-platform music downloader that supports various streaming services including Spotify, YouTube, Gaana, and more. It allows users to download and convert music from these platforms into MP3 format, providing a seamless experience across desktop and mobile devices.

Pros

  • Multi-platform support (Android, iOS, Desktop)
  • Wide range of supported music streaming services
  • User-friendly interface with material design
  • Actively maintained and regularly updated

Cons

  • Potential legal concerns regarding music downloading
  • Dependency on third-party services for some functionality
  • May require manual build process for some platforms
  • Limited documentation for advanced usage

Code Examples

As SpotiFlyer is primarily an application rather than a code library, specific code examples are not applicable. However, here are some relevant code-related aspects:

// Example of how SpotiFlyer uses Kotlin Multiplatform for cross-platform development
expect class PlatformSpecificClass {
    fun platformSpecificFunction()
}

actual class PlatformSpecificClass {
    actual fun platformSpecificFunction() {
        // Platform-specific implementation
    }
}
// Example of how SpotiFlyer handles download requests
fun downloadTrack(track: Track) {
    viewModelScope.launch {
        downloadRepository.downloadTrack(track)
    }
}
// Example of how SpotiFlyer uses Compose for UI
@Composable
fun TrackItem(track: Track, onDownloadClick: () -> Unit) {
    Row(
        modifier = Modifier.fillMaxWidth().padding(8.dp),
        verticalAlignment = Alignment.CenterVertically
    ) {
        // Track details and download button
    }
}

Getting Started

To use SpotiFlyer:

  1. Clone the repository: git clone https://github.com/Shabinder/SpotiFlyer.git
  2. Open the project in Android Studio or IntelliJ IDEA
  3. Build and run the project for your desired platform (Android, iOS, or Desktop)
  4. For mobile devices, you can also download the APK from the releases page
  5. Launch the app and start downloading music from supported platforms

Note: Ensure you have the necessary development tools and SDKs installed for your target platform.

Competitor Comparisons

Spotify Downloader and alternative of Spotdl(python) tool made in NodeJS based on youtube-dl

Pros of spotify-dl

  • Written in Python, which may be more familiar to some developers
  • Supports downloading entire playlists and albums
  • Includes a progress bar for download tracking

Cons of spotify-dl

  • Less actively maintained (last commit over a year ago)
  • Fewer features compared to SpotiFlyer
  • Limited platform support (primarily command-line based)

Code Comparison

SpotiFlyer (Kotlin):

suspend fun downloadTracks(tracks: List<Track>) = withContext(Dispatchers.IO) {
    tracks.forEach { track ->
        val audioInfo = youtubeMusic.getAudioInfo(track)
        downloadAudio(audioInfo, track)
    }
}

spotify-dl (Python):

def download_tracks(tracks):
    for track in tracks:
        audio_info = youtube_music.get_audio_info(track)
        download_audio(audio_info, track)

Both projects aim to download music from Spotify, but SpotiFlyer offers a more comprehensive solution with cross-platform support and a graphical user interface. It's also more actively maintained and provides additional features like metadata editing. spotify-dl, while simpler, may be easier to set up for users familiar with Python and command-line tools.

Spotify for the terminal written in Rust 🚀

Pros of spotify-tui

  • Terminal-based interface, ideal for users who prefer command-line tools
  • Lightweight and efficient, consuming fewer system resources
  • Customizable keybindings for improved workflow

Cons of spotify-tui

  • Limited to Spotify playback control and browsing, no download functionality
  • Requires Spotify Premium account for full functionality
  • Steeper learning curve for users unfamiliar with terminal interfaces

Code Comparison

spotify-tui (Rust):

pub fn play_track(spotify: &Spotify, track_id: &str) -> Result<()> {
    let track_uri = format!("spotify:track:{}", track_id);
    spotify.start_playback(None, None, Some(vec![track_uri]), None, None)
}

SpotiFlyer (Kotlin):

suspend fun downloadTrack(track: Track) {
    val audioFile = youtubeDownloader.downloadAudio(track.youtubeLink)
    audioFile.writeID3Tags(track.metadata)
    audioFile.moveToMusicFolder()
}

The code snippets highlight the different focus of each project: spotify-tui emphasizes playback control, while SpotiFlyer focuses on downloading and managing audio files. spotify-tui uses Rust for efficient performance, while SpotiFlyer employs Kotlin for cross-platform development.

Open Source Spotify client library

Pros of librespot

  • Written in Rust, offering better performance and memory safety
  • More comprehensive Spotify API implementation, including playback functionality
  • Actively maintained with regular updates and contributions

Cons of librespot

  • More complex to set up and use for end-users
  • Primarily focused on streaming, lacking direct download capabilities
  • Requires more technical knowledge to integrate into other projects

Code Comparison

SpotiFlyer (Kotlin):

suspend fun downloadTrack(track: Track) {
    val audioFile = youtubeDownloader.downloadAudio(track.name)
    audioFile.saveToDevice()
}

librespot (Rust):

fn play_track(&mut self, track_id: TrackId) -> Result<(), Error> {
    let audio_key = self.session.audio_key().request(track_id)?;
    let encrypted_file = self.session.cdn().get_file(track_id)?;
    self.player.play(decrypt(encrypted_file, audio_key))?;
    Ok(())
}

SpotiFlyer is designed for easy track downloading, while librespot focuses on streaming implementation. librespot offers more comprehensive Spotify integration but requires more technical expertise. SpotiFlyer provides a simpler solution for users primarily interested in downloading tracks.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

We will from now on publish PLUGINS for Soundbound, which users can install explicitly on their own responsibility (disclaimer).

Feature Soundbound

Soundbound - Get Now!


Please refer above for latest updates.


Web Cover Android Cover Desktop Cover

SpotiFlyer

  • Kotlin Multiplatform Music Downloader ,supports Spotify, Youtube, Gaana, Jio-Saavn and SoundCloud.

Supports- Playlist, Albums, Tracks. (If You know Any Source for Episodes/Podcasts create an Issue sharing It.)

Currently running on:

GitHub stars GitHub forks GitHub watchers

Encourage this repo by giving it a Star⭐ .

SpotiFlyer is an App(Written in Kotlin), which aims to work as:

  • Downloads: Albums, Tracks and Playlists,etc
  • Save your Data ,by not Streaming your Fav Songs Online again & again(Just Download Them!)
  • No ADS!
  • Works straight out of the box and does not require you to generate or mess with your API keys (already included).

Supported Platforms:

  • Spotify
  • Gaana
  • Youtube
  • Youtube Music
  • Jio-Saavn
  • SoundCloud
  • (more coming soon)

💻 Install

PlatformDownloadStatus
AndroidDownload Button✅ Stable
WindowsDownload Button✅ Stable
Windows-JARDownload Button✅ Stable
MacOS-JARDownload Button✅ Stable
Linux-DEBDownload Button✅ Stable
Linux-JARDownload Button✅ Stable
WebDownload Button⚠️ Beta
  • To run the jar version, you need JAVA installed.
  • MacOs DMG is not notarized and signed using a certificate , so Use jar in mac for now.
Get it on F-Droid

Want to Contribute 🙋‍♂️?

Want to contribute? Great! All contributions are welcome, from code to documentation to graphics to design suggestions to bug reports. Please use GitHub to its fullest-- contribute Pull Requests, contribute tutorials or other wiki content-- whatever you have to offer, we can use it!

Please Donate to support me and my work!
ko-fi
paypal

Want to discuss? 💬

Have any questions, doubts or want to present your opinions, views? You're always welcome. You can start discussions.

Todos 📄

  • Write Tests.
  • Support for Podcasts/Episodes and Shows.
  • Build a Media Player into this app. #113

Note

The availability of YouTube Music / JioSaavn in your country is important for this app to work. The reason behind this is, we use YouTube Music / JioSaavn to filter out our search results and get the desired song downloaded from Youtube Music OR other providers we may use(like Jio Saavn). To check if YouTube Music is available in your country, visit YouTube Music.

I am hosting a server for WEB APP on my own personal device , so expect some downtimes, If you have a server available and would like to share , open an issue or ping me wherever you can get a hold of me.

Permissions Info:

  • NETWORK- (INTERNET, ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE): to access the online streaming services, and Confirm Network Connectivity.
  • STORAGE- READ_STORAGE_PERMISSION, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, MANAGE_EXTERNAL_STORAGE): to save Downloaded Media Files.
  • QUERY_ALL_PACKAGES- in order to check if Youtube Music, Spotify, Gaana, JioSaavn, etc apps are installed and if they are, user can directly open them.
  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: User Allows App to Run in Background at runtime in Permission Dialog.
  • Wake Lock: Don't let Wifi/Internet Sleep in screen off / dozing state when Songs are being downloaded.
  • Foreground Service: Service responsible to download and save songs to storage even after app is exited/background.
  • NOTE: Analytics and Crashlytics are OPT-IN (Disabled by Default) and are Self-Hosted.

License GPL-License

GPL-3.0 License This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Free Software, Hell Yeah!

Credits

  • Some Logos are Based on Logos by Freepik.

Disclaimer

Downloading copyright songs may be illegal in your country. This tool is for educational purposes only and was created only to show how Music Platform's Apis like Spotify's API can be exploited to download music. Please support the artists by buying their music.