diff --git a/README.md b/README.md index 19cd49e..a45ba53 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,7 @@ Searches for `params.query`. - `params` - query: search string + - itemType (optional): 'artistsAndLabels', 'albums' or 'tracks'. Searches all item types if unknown value or omitted. - page (1 if omitted) - `options` (optional) - albumImageFormat diff --git a/examples/search.js b/examples/search.js index 9647617..ab11396 100644 --- a/examples/search.js +++ b/examples/search.js @@ -1,16 +1,28 @@ const bcfetch = require('../'); const util = require('util'); -const params = { - query: 'Coeur de pirate', - page: 1 -} - const options = { albumImageFormat: 'art_app_large', artistImageFormat: 'bio_featured', } -bcfetch.search(params, options).then( results => { - console.log(util.inspect(results, false, null, false)); -}); \ No newline at end of file +function doSearch(itemType) { + const params = { + query: 'Coeur de pirate', + page: 1, + itemType + } + + bcfetch.search(params, options).then( results => { + let title = `Search query: ${ params.query }. Item type: ${ itemType || 'all' }. ${ results.items.length } results.`; + console.log(title); + console.log('-'.repeat(title.length)); + console.log(util.inspect(results, false, null, false)); + console.log(''); + }); +} + +doSearch(); +doSearch('artistsAndLabels'); +doSearch('albums'); +doSearch('tracks'); diff --git a/examples/search_output.txt b/examples/search_output.txt index 775c653..d7c969e 100644 --- a/examples/search_output.txt +++ b/examples/search_output.txt @@ -1,3 +1,55 @@ +Search query: Coeur de pirate. Item type: albums. 5 results. +------------------------------------------------------------ +{ items: + [ { type: 'album', + name: 'Blonde', + url: 'https://musique.coeurdepirate.com/album/blonde', + imageUrl: 'https://f4.bcbits.com/img/a1328452291_16.jpg', + artist: 'Cœur de pirate', + numTracks: 12, + duration: 2160, + releasedDate: '07 November 2011', + tags: 'amour, french pop, Canada, montreal, piano pop, french, Québec, Pop, coeur de pirate, Montréal, grosse boîte' }, + { type: 'album', + name: 'Child of Light', + url: 'https://musique.coeurdepirate.com/album/child-of-light', + imageUrl: 'https://f4.bcbits.com/img/a3984758353_16.jpg', + artist: 'Cœur de pirate', + numTracks: 18, + duration: 3000, + releasedDate: '29 April 2014', + tags: 'Québec, french pop, Pop, Canada, french, instrumental, video game music, piano pop, Montréal' }, + { type: 'album', + name: 'Coeur de pirate', + url: 'https://musique.coeurdepirate.com/album/coeur-de-pirate', + imageUrl: 'https://f4.bcbits.com/img/a2201751482_16.jpg', + artist: 'Cœur de pirate', + numTracks: 12, + duration: 1860, + releasedDate: '16 September 2008', + tags: 'Montréal, french, piano pop, french pop, Québec, Canada, Pop' }, + { type: 'album', + name: 'en cas de tempête, ce jardin sera fermé.', + url: 'https://musique.coeurdepirate.com/album/en-cas-de-temp-te-ce-jardin-sera-ferm', + imageUrl: 'https://f4.bcbits.com/img/a0248413645_16.jpg', + artist: 'Cœur de pirate', + numTracks: 10, + duration: 1920, + releasedDate: '01 June 2018', + tags: 'Canada, french pop, french, Québec, Pop, Montréal, piano pop' }, + { type: 'album', + name: 'Trauma', + url: 'https://musique.coeurdepirate.com/album/trauma', + imageUrl: 'https://f4.bcbits.com/img/a3799110102_16.jpg', + artist: 'Cœur de pirate', + numTracks: 12, + duration: 2760, + releasedDate: '14 January 2014', + tags: 'piano pop, Montréal, Québec, french pop, cover songs, amy winehouse, Canada, french, trauma, Dare To Care Records, Pop' } ], + totalPages: 1 } + +Search query: Coeur de pirate. Item type: all. 15 results. +---------------------------------------------------------- { items: [ { type: 'artist', name: 'Cœur de pirate', @@ -14,7 +66,7 @@ numTracks: 12, duration: 2160, releasedDate: '07 November 2011', - tags: 'french pop, montreal, Québec, french, grosse boîte, Montréal, coeur de pirate, Pop, amour, piano pop, Canada' }, + tags: 'Montréal, Québec, Canada, piano pop, grosse boîte, Pop, french, coeur de pirate, french pop, montreal, amour' }, { type: 'album', name: 'Child of Light', url: 'https://musique.coeurdepirate.com/album/child-of-light', @@ -23,7 +75,7 @@ numTracks: 18, duration: 3000, releasedDate: '29 April 2014', - tags: 'Québec, piano pop, Canada, french, french pop, instrumental, video game music, Pop, Montréal' }, + tags: 'piano pop, Canada, video game music, Pop, Québec, instrumental, Montréal, french, french pop' }, { type: 'album', name: 'Coeur de pirate', url: 'https://musique.coeurdepirate.com/album/coeur-de-pirate', @@ -32,7 +84,7 @@ numTracks: 12, duration: 1860, releasedDate: '16 September 2008', - tags: 'Québec, Montréal, Canada, Pop, french, french pop, piano pop' }, + tags: 'Québec, Canada, french, french pop, Pop, piano pop, Montréal' }, { type: 'album', name: 'en cas de tempête, ce jardin sera fermé.', url: 'https://musique.coeurdepirate.com/album/en-cas-de-temp-te-ce-jardin-sera-ferm', @@ -41,7 +93,7 @@ numTracks: 10, duration: 1920, releasedDate: '01 June 2018', - tags: 'piano pop, french pop, Québec, Montréal, french, Canada, Pop' }, + tags: 'Pop, Montréal, piano pop, french pop, french, Québec, Canada' }, { type: 'track', name: 'Place de la république', url: 'https://arts-crafts.bandcamp.com/track/place-de-la-r-publique', @@ -113,3 +165,151 @@ album: 'Montréal Symphonique', releasedDate: '03 November 2017' } ], totalPages: 1 } + +Search query: Coeur de pirate. Item type: artistsAndLabels. 1 results. +---------------------------------------------------------------------- +{ items: + [ { type: 'artist', + name: 'Cœur de pirate', + url: 'https://musique.coeurdepirate.com', + imageUrl: 'https://f4.bcbits.com/img/0026415167_28.jpg', + location: 'Montréal, Québec', + genre: 'Pop', + tags: 'french, Pop, piano pop, french pop' } ], + totalPages: 1 } + +Search query: Coeur de pirate. Item type: tracks. 18 results. +------------------------------------------------------------- +{ items: + [ { type: 'track', + name: 'Ne m\'appelle pas', + url: 'https://musique.coeurdepirate.com/track/ne-mappelle-pas', + imageUrl: 'https://f4.bcbits.com/img/a2603960871_16.jpg', + artist: 'Cœur de pirate', + releasedDate: '09 May 2019', + tags: 'french, Montréal, Canada, piano pop, french pop, Pop, Québec' }, + { type: 'track', + name: 'T\'es belle', + url: 'https://musique.coeurdepirate.com/track/tes-belle', + imageUrl: 'https://f4.bcbits.com/img/a0774650359_16.jpg', + artist: 'Cœur de pirate', + releasedDate: '01 October 2020', + tags: 'french, Montréal, Canada, piano pop, french pop, Pop, Québec' }, + { type: 'track', + name: 'Plan à trois', + url: 'https://musique.coeurdepirate.com/track/plan-trois', + imageUrl: 'https://f4.bcbits.com/img/a4236666126_16.jpg', + artist: 'Cœur de pirate', + releasedDate: '28 May 2021', + tags: 'piano pop, french pop, Pop, Québec, french, Montréal, Canada' }, + { type: 'track', + name: 'Adieu', + url: 'https://musique.coeurdepirate.com/track/adieu', + imageUrl: 'https://f4.bcbits.com/img/a2927576646_16.jpg', + artist: 'Cœur de pirate', + album: 'Blonde', + releasedDate: '19 September 2011', + tags: 'grosse boîte, amour, coeur de pirate, dare to care, montreal, franco' }, + { type: 'track', + name: 'Comme des enfants (Le Matos remix)', + url: 'https://musique.coeurdepirate.com/track/comme-des-enfants-le-matos-remix', + imageUrl: 'https://f4.bcbits.com/img/a1250129776_16.jpg', + artist: 'Cœur de pirate', + album: 'Comme des enfants (Version originale et remix par Le Matos)', + releasedDate: '07 September 2010' }, + { type: 'track', + name: 'Place de la république', + url: 'https://arts-crafts.bandcamp.com/track/place-de-la-r-publique', + imageUrl: 'https://f4.bcbits.com/img/a3618408300_16.jpg', + artist: 'Coeur De Pirate', + album: 'Live At Massey Hall Vol. 1', + releasedDate: '22 February 2019' }, + { type: 'track', + name: 'Comme des enfants', + url: 'https://mpourmontreal.bandcamp.com/track/comme-des-enfants', + imageUrl: 'https://f4.bcbits.com/img/a2364532545_16.jpg', + artist: 'Coeur de Pirate', + album: 'Franco M SiriusXM - Compilation 2006-2015', + releasedDate: '06 November 2015' }, + { type: 'track', + name: 'Heartbeats Accelerating', + url: 'https://moonmage.bandcamp.com/track/heartbeats-accelerating', + imageUrl: 'https://f4.bcbits.com/img/a1799905378_16.jpg', + artist: 'Cœur de pirate', + album: 'Bloodmoon', + releasedDate: '14 January 2014', + tags: 'Indie' }, + { type: 'track', + name: 'A la gare viger (cover)', + url: 'https://lilyfay.bandcamp.com/track/a-la-gare-viger-cover', + imageUrl: 'https://f4.bcbits.com/img/a1639461967_16.jpg', + artist: 'Coeur de pirate', + album: 'Live in Livingrooms (home) tour', + releasedDate: '17 January 2013' }, + { type: 'track', + name: 'Adieu (Lincoln Remix)', + url: 'https://lincolnplease.bandcamp.com/track/adieu-lincoln-remix', + imageUrl: 'https://f4.bcbits.com/img/a3583685498_16.jpg', + artist: 'Cœur de pirate', + releasedDate: '02 December 2014', + tags: 'Electronic, groove, Dance, future, Funk, piano, United States, bass, dark, House, California, Hip Hop, San Diego' }, + { type: 'track', + name: 'Comme Des Enfants Cle matis Andy CarMicheal remix', + url: 'https://djslim1.bandcamp.com/track/comme-des-enfants-cle-matis-andy-carmicheal-remix', + imageUrl: 'https://f4.bcbits.com/img/a4087143740_16.jpg', + artist: 'Coeur De Pirate', + album: 'Miami COntrol Pt.1', + releasedDate: '06 June 2013' }, + { type: 'track', + name: 'Coeur de pirate', + url: 'https://sergemonette.bandcamp.com/track/coeur-de-pirate', + imageUrl: 'https://f4.bcbits.com/img/a3469921391_16.jpg', + artist: 'Monette', + album: 'Sonnez l\'éveil', + releasedDate: '28 March 2020', + tags: 'folk rock, ONfr, AFO, ontario, franco, francophone' }, + { type: 'track', + name: 'Danse et danse', + url: 'https://promodaretocare.bandcamp.com/track/danse-et-danse', + imageUrl: 'https://f4.bcbits.com/img/a2578420227_16.jpg', + artist: 'Coeur de pirate', + album: 'Compilation de Noël 2012', + releasedDate: '01 December 2012', + tags: 'Grosse Boîte, piano, Pop, french, Montréal' }, + { type: 'track', + name: 'T\'es belle - Coeur de pirate', + url: 'https://pianovoix.bandcamp.com/track/tes-belle-coeur-de-pirate', + imageUrl: 'https://f4.bcbits.com/img/a3645401914_16.jpg', + artist: 'pianovoix', + releasedDate: '15 October 2020', + tags: 'IDF, France, Pop, Paris, chanson française, piano' }, + { type: 'track', + name: 'Francis (Coeur de Pirate cover)', + url: 'https://jeneiffel.bandcamp.com/track/francis-coeur-de-pirate-cover', + imageUrl: 'https://f4.bcbits.com/img/a0532659386_16.jpg', + artist: 'Jen Eiffel', + album: 'Covers', + releasedDate: '26 March 2014' }, + { type: 'track', + name: 'Dans tes rêves (ft. Coeur de pirate)', + url: 'https://omnikromofficiel.bandcamp.com/track/dans-tes-r-ves-ft-coeur-de-pirate', + imageUrl: 'https://f4.bcbits.com/img/a1848345881_16.jpg', + artist: 'Omnikrom', + album: 'Comme à la télévision', + releasedDate: '19 May 2009' }, + { type: 'track', + name: 'Jeter un sort (feat. Coeur de pirate)', + url: 'https://alexnevsky.bandcamp.com/track/jeter-un-sort-feat-coeur-de-pirate', + imageUrl: 'https://f4.bcbits.com/img/a3550838341_16.jpg', + artist: 'Alex Nevsky', + album: 'Nos Eldorados', + releasedDate: '11 November 2016' }, + { type: 'track', + name: 'Coeur De Pirate - Wicked Games Remix', + url: 'https://globalvortex.bandcamp.com/track/coeur-de-pirate-wicked-games-remix', + imageUrl: 'https://f4.bcbits.com/img/a0417515816_16.jpg', + artist: 'OneTwoKno', + album: 'Red Light Special lp', + releasedDate: '02 January 2012' } ], + totalPages: 2 } + diff --git a/lib/utils.js b/lib/utils.js index f6c38d3..6551dcf 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -102,6 +102,18 @@ function getSearchUrl(params = {}) { q: params.query, page: params.page || 1, }; + switch(params.itemType) { + case 'artistsAndLabels': + qs.item_type = 'b'; + break; + case 'albums': + qs.item_type = 'a'; + break; + case 'tracks': + qs.item_type = 't'; + break; + default: + } return getSiteUrl() + '/search?' + querystring.encode(qs); }