Returns pricing data for all available Spotify countries
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

spotify-crawler Build Status Dependency Status Gitter

Returns pricing data for all available Spotify countries

Crawls the list of countries where Spotify is available. Fetches the listed premium price for each country and finally converts the price into USD.

Thanks to restcoutries.eu and Open Exchange Rates.

Installation

$ npm install spotify-crawler

Usage

Methods:

  • fetch - returns array with all the countries.
  • getCatalogSize - takes the two-letter country code, returns number of total tracks.
Example:
var spotify = require('spotify-crawler');

spotify.fetch()
  .then(saveCountries)
  .catch(console.log);

function saveCountries(countries){
  console.log('Inserting {0} countries in DB'.format(countries.length));

  var save = Country.create(countries);
}
Output

The country object consists of:

  • link - Spotify href
  • title - the country title, localized version(Österreich)
  • originalRel - the rel directly from Spotify
  • rel - stripped the originalRel of the language(be-fr)
  • currency - the currency code from restcoutries.eu, but corrected for the countries that doesn't display price in their own currency on the website.
  • originalCurrency - the raw currency code from restcoutries.eu.
  • countryCode - the alpha3Code from restcoutries.eu.
  • internationalName - the international name from restcoutries.eu.
  • region - the region from restcoutries.eu.
  • subRegion - the subregion from restcoutries.eu.
  • demonym - the demonym from restcoutries.eu.
  • originalPrice - the whole text from the HTML element
  • price - strip all text from originalPrice
  • convertedPrice - local price converted into USD with rate from Open Exchange Rates
  • catalogSize - amount of tracks available in the country

Output data example for a single country:

{
    "link": "/au/",
    "title": "Australia",
    "originalRel": "au",
    "rel": "au",
    "currency": "AUD",
    "originalCurrency": "AUD",
    "countryCode": "AUS",
    "internationalName": "Australia",
    "region": "Oceania",
    "subRegion": "Australia and New Zealand",
    "demonym": "Australian",
    "originalPrice": "$11.99 per month",
    "price": "11.99",
    "convertedPrice": 11.25280616267109,
    "catalogSize": 30695608
}

todo

  • Multiple methods
    • getCountries
    • getRawPrices
    • getCatalogSize
    • etc.
  • Split up index.js into modules
  • Tests
  • CLI support
  • Supply own app_id for Open Exchange Rates