spotify-crawler
v0.2.0
Published
Crawls all international Spotify pages and returns prices for each country.
Downloads
44
Maintainers
Readme
spotify-crawler
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
- returnsarray
with all the countries.getCatalogSize
- takes the two-letter country code, returnsnumber
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 hreftitle
- the country title, localized version(Österreich)originalRel
- the rel directly from Spotifyrel
- stripped theoriginalRel
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
- thealpha3Code
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 elementprice
- strip all text fromoriginalPrice
convertedPrice
- local price converted into USD with rate from Open Exchange RatescatalogSize
- 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
- etc.
- Split up index.js into modules
- Tests
- CLI support
- Supply own
app_id
for Open Exchange Rates