GithubHelp home page GithubHelp logo

yasdown's Introduction

YASDown - Yet Another Spotify Downloader

YASDown is a flexible Spotify song downloader for Spotify Premium members.

###Features

  • Downloads Spotify songs to disk and encodes them in MP3 format. Just paste in the URI and go.
  • Works either as a console program, or as a GUI.
  • Remembers your settings and login information, so you don't have to always re-type your password.
  • Uses the officially supported libspotify from Spotify themselves for maximum possible future-proofing.
  • Cross-platform (Windows and modern desktop Linux, primarily)
  • Dual-interface: headless mode (no GUI, runs on server/VPS, scriptable in the shell) and GUI mode (for you point and clickers)
  • Support for optionally uploading downloaded files to an SFTP server using the SSH protocol (for backups, etc.)

###System Requirements

  • Microsoft .NET Framework 4.5 or Mono 3.2 or newer
  • Your ISP/Network must support the Spotify protocol (to test: if the Spotify desktop player works, you're good)
  • One of the supported platforms for libspotify which happens to also run a valid .NET implementation (see first bullet above)
  • Optional: An SSH/SFTP server for uploads. If you don't have an SFTP server and just want to download music, you can do that, too.

###User Requirements

  • You must have a Spotify Premium account. Note that "Unlimited" accounts are not supported. If you do not have a Spotify Premium account and are not willing to pay for one, you will not be able to use this software. I will not provide you access to my account, so don't ask.
  • You must have a Spotify Developer Key. I am not going to give you mine, so don't ask. Go here to apply to get one (it's free, as of this writing, for Premium accounts.)
  • You must be able to follow basic instructions and understand generally how application programs work on whatever platform you're using. However, you do not have to be a programmer to use this program.

###Library Dependencies Here are the third-party software components that YASDown depends on. These components are not distributed with the YASDown source code, so you will need to download them yourself.

###Technical Overview

  • Written in C#.NET, targeting Microsoft .NET Framework 4.5 and Mono 3.2 or later
  • Platforms: the goal is to support the latest Ubuntu release and latest three Windows desktop releases
  • Currently that's Ubuntu 13.10 and Windows 7/8/8.1
  • Ubuntu doesn't ship an up-to-date Mono, so user will need to download an updated version or compile from source
  • Recent OpenSUSE and Fedora should work too and will be considered for distro-specific fixes if there are problems
  • Bitness (32/64):
  • Only tested on the 32-bit .NET runtime on Windows, because there is no 64-bit Windows libspotify native DLL
  • Should work on either 32-bit or 64-bit Mono on GNU/Linux
  • It is within the realm of plausibility that this will run on top of Mono on iOS or Android, but don't be surprised if some changes are required.

###Compiling

  1. Should be possible to compile this with Mono 3.2 or .NET Framework 4.5 or later.
  2. To compile the project, first assemble the required DLLs (libmp3lame.dll, libspotify.dll, libspotifynet.dll, CommandLineParser.dll, taglib-sharp.dll). The pure .NET dependencies should always have the exact file names specified; however, on Mono on non-Windows platforms, the two native DLLs (libmp3lame.dll and libspotify.dll) can have the extensions .so (Linux) or .dylib (OS X/iOS).
  3. You will need one of: MonoDevelop, Xamarin Studio, SharpDevelop, or Visual Studio 2012 or later.
  4. Open up the Solution file "YASDown.sln" and "Build" the project, either in Release or Debug mode as you prefer.
  5. If you get build-time errors about the dependencies, make sure you have resolved all pure .NET references.
  6. Copy the required native dependencies to the output directory if the build didn't do it for you.
  7. Install your app key that you downloaded from Spotify as "spotify_appkey.key" in the same directory as yasdown.exe.
  8. Run! If you specify any command line arguments, it will be invoked in CLI mode; if you omit command line arguments, it will be invoked in GUI mode.

###Binaries? I will not provide publicly accessible binary downloads. However, if I know you, and ask you me very nicely, I may create a build for your platform and provide it to you individually. But since this build isn't rocket science, please try it on your own first.

###TO DO

  • Linux support needs love.
  • Need to write a dllmap in yasdown.exe.config for Mono.
  • Needs testing to make sure the WinForms code works, and probably fixes.
  • Needs testing on 32-bit and 64-bit Linux, and probably fixes.
  • Need to see if I can downgrade the runtime requirement to .NET 4.0 Client Profile for wider compatibility. Probably doable.
  • Program.cs needs major refactoring to move the engine out of the main class and decouple it from the GUI/CLI.
  • Probably need to implement our own mainloop and do all spotify API calls within that thread, to support both CLI and GUI equally well.
  • CLI mode is currently very unlikely to work well (or at all) even on Windows due to the GUI-first design so far.
  • Better error handling.

###Legal and Licensing "This product uses SPOTIFY CORE but is not endorsed, certified or otherwise approved in any way by Spotify. Spotify is the registered trade mark of the Spotify Group."

Overall, this source code complies with the licenses set out by the components it depends on, and the source code of YASDown itself is licensed under the New BSD license. For additional licensing details, see the file LICENSE.TXT in this repository.

yasdown's People

Contributors

allquixotic avatar bobvul avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.