Package Exports
- bandcamp-scraper
- bandcamp-scraper/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (bandcamp-scraper) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
bandcamp-scraper
A scraper for https://bandcamp.com
The scraper allows you to:
- search
artist,album,track,fan,label - get album urls from an artist url
- get album info from an album url
- get album products from an album url
- get artist info from an artist url
Why ?
Because Bandcamp has shut down their public API and don't plan to reopen it.
https://bandcamp.com/developer
Installation
npm i --save bandcamp-scraperUsage
search(params, callback)
Search any resources that match the given params.query for the current params.page.
- params Object - query String - page Integer (default
1) - callback Function(error, searchResults)
Search Results
An array of resources that have different properties depending on their type property: artist, album, track, fan, or label.
Every resource matches the search-result JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const params = {
query: 'Coeur de pirate',
page: 1
}
bandcamp.search(params, function (error, searchResults) {
if (error) {
console.log(error)
} else {
console.log(searchResults)
}
})getAlbumsWithTag(params, callback)
Search for albums with the tag params.tag for the current params.page.
- params Object - tag String - page Integer (default
1) - callback Function(error, tagResults)
Tag Results
An array of album information. Matches the tag-result JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const params = {
tag: 'nuwrld',
page: 1
}
bandcamp.getAlbumsWithTag(params, function (error, tagResults) {
if (error) {
console.log(error)
} else {
console.log(tagResults)
}
})getAlbumUrls(artistUrl, callback)
Retrieve the album URLs from an artist URL.
Please note: for Bandcamp labels you may want to use the getArtistsUrls function to retrieve the list of signed artists first.
- artistUrl String
- callback Function(error, albumUrls)
Example
const bandcamp = require('bandcamp-scraper')
const artistUrl = 'http://musique.coeurdepirate.com/'
bandcamp.getAlbumUrls(artistUrl, function (error, albumUrls) {
if (error) {
console.log(error)
} else {
console.log(albumUrls)
}
})getAlbumProducts(albumUrl, callback)
Retrieves all the album's products from its URL.
- albumUrl String
- callback Function(error, albumProducts)
Album Products
An array of album products that matches the album-product JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const albumUrl = 'http://musique.coeurdepirate.com/album/blonde'
bandcamp.getAlbumProducts(albumUrl, function (error, albumProducts) {
if (error) {
console.log(error)
} else {
console.log(albumProducts)
}
})getAlbumInfo(albumUrl, callback)
Retrieves the album's info from its URL.
- albumUrl String
- callback Function(error, albumInfo)
Album Info
An Object that represents the album's info. It matches the album-info JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const albumUrl = 'http://musique.coeurdepirate.com/album/blonde'
bandcamp.getAlbumInfo(albumUrl, function (error, albumInfo) {
if (error) {
console.log(error)
} else {
console.log(albumInfo)
}
})getArtistUrls(labelUrl, callback)
Retrieves an array of artist URLs from a label's URL for further scraping.
- labelUrl String
- callback Function(error, albumInfo)
Example
const bandcamp = require('bandcamp-scraper')
const labelUrl = 'https://randsrecords.bandcamp.com'
bandcamp.getArtistUrls(labelUrl, function (error, artistsUrls) {
if (error) {
console.log(error)
} else {
console.log(artistsUrls)
}
})getArtistInfo(artistUrl, callback)
Retrieves the artist's info from its URL.
- artistUrl String
- callback Function(error, artistInfo)
Artist Info
An Object that represents the artist's info. It matches the artist-info JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const artistUrl = 'http://musique.coeurdepirate.com'
bandcamp.getArtistInfo(artistUrl, function (error, artistInfo) {
if (error) {
console.log(error)
} else {
console.log(artistInfo)
}
})getTrackInfo(trackUrl, callback)
Retrieves the track info from its URL.
- trackUrl String
- callback Function(error, trackInfo)
Track Info
An Object that represents the track's info. It matches the track-info JSON schema.
Example
const bandcamp = require('bandcamp-scraper')
const trackUrl = 'https://dafnez.bandcamp.com/track/serenade'
bandcamp.getTrackInfo(trackUrl, function (error, trackInfo) {
if (error) {
console.log(error)
} else {
console.log(trackInfo)
}
})Test
Feature tests are run daily, thanks to GitHub Action schedule actions. This way we know if the scraper is ever broken.
Run the test:
npm testContributing
Contribution is welcome! Open an issue first.
License
MIT.
