User Tools

Site Tools


All external libraries should be treated the same way. There should be an Add-on-API.

Examples of external library types

  • Spotify
  • Google Music
  • Grooveshark
  • DAAP
  • Samba
  • Rdio

Google Music

Steps :

  1. Install the Google Music songs importer tool (work on Windows/Mac/Linux)
  2. Set to watch your Music folder (same as Nightingale)
  3. Write/update the Web Scraper to parse and allow download of songs manually
  4. Write an add-on to automatically check/download songs the user doesn't have on local library (Still no API, may have to reverse engine Google Music)
  5. Ability to import/export playlists
  6. Design a simple interface : A Google Music node in the Left Service Pane, style the web page to remove player controls and maybe bind the Nightingale controls on Google Music instead
  7. Settings :
  • Auto download (check the whole user Google Music account to see what songs are missing on local db) (disabled by default)
  • Google Music importer path : either call the importer settings window, or check where is located the pref
  • Frequency check for new songs uploaded (at each Nightingale start, each X minutes..)

To check :

  • We could bundle the Google Music importer tool but we have to check if the licence allow this
  • How to call the importer settings window from Nightingale
  • Disable Flash applet without errors (improve memory use, and we use Nightingale/GStreamer to play Google Music songs instead)
  • If using the unofficial API, we have to safely store the password
  • Why not just streaming the files?

Risks :

  • Google Music update could broke the add-on
  • Slowing down Nightingale with multiple requests
  • Check that the importer is not uploading the downloaded song (crazy loop :-O)
  • Avoid exceeding Google Music songs limit (20,000) (maybe having songs in a subfolder, then ability to chose which songs to upload by simply moving them into this folder)

Links :

What this API would allow

A gap-less integration of any music streaming service into your local library. A possibility would be to display all tracks as local but they should easily be hidden/shown. This integration allows to search in this libraries and play tracks from them.

Also playlists should be synced between the service and Nightingale.

Special cases

External libraries like spotify, which are impersonal, should not return a list of tracks available. So they would just add properties (webURLs etc.) to existing titles and enhance search results.

How not to do

Recently a player called "Tomahawk" was launched. It displays every source as own tree node, which makes it extremely complicated if you use multiple services. But it was faster.

kitchen/external_libraries.txt · Last modified: 2012/07/23 10:28 by freaktechnik