node-lyrics
Advanced tools
+12
| 'use strict'; | ||
| exports.LYRICS_API = 'https://lyrics.fandom.com/api.php'; | ||
| exports.parseJSON = function(data) { | ||
| try { | ||
| var text = data && data.replace(/^\s*|\s*$/g, ''); | ||
| return text && JSON.parse(text); | ||
| } catch (e) { | ||
| throw new Error('There was an issue parsing the response.'); | ||
| } | ||
| }; |
+13
-7
@@ -0,9 +1,15 @@ | ||
| const getAlbums = require('./lib/getAlbums'); | ||
| const getArtist = require('./lib/getArtist'); | ||
| const getSong = require('./lib/getSong'); | ||
| const getHometown = require('./lib/getHometown'); | ||
| const { getSOTD } = require('./lib/getRanks'); | ||
| const parseLyrics = require('./lib/parseLyrics'); | ||
| module.exports = { | ||
| getAlbums: require('./lib/getAlbums'), | ||
| getArtist: require('./lib/getArtist'), | ||
| getHometown: require('./lib/getHometown'), | ||
| getSOTD: require('./lib/getRanks').getSOTD, | ||
| getTopSongs: require('./lib/getRanks').getTopSongs, | ||
| getSong: require('./lib/getSong'), | ||
| parseLyrics: require('./lib/parseLyrics') | ||
| getAlbums, | ||
| getArtist, | ||
| getHometown, | ||
| getSOTD, | ||
| getSong, | ||
| parseLyrics, | ||
| } |
+5
-2
| { | ||
| "name": "node-lyrics", | ||
| "version": "2.0.0", | ||
| "version": "2.0.1", | ||
| "description": "Get the lyrics to your favorite songs", | ||
@@ -14,3 +14,6 @@ "main": "index.js", | ||
| }, | ||
| "engine": "node >= 8.0.0", | ||
| "files": [ | ||
| "index.js", | ||
| "lib/*" | ||
| ], | ||
| "keywords": [ | ||
@@ -17,0 +20,0 @@ "lyrics", |
+1
-1
@@ -1,2 +0,2 @@ | ||
| # node-lyrics [](https://travis-ci.org/ricardomatias/node-lyrics) | ||
| # node-lyrics | ||
@@ -3,0 +3,0 @@ > Get the lyrics to your favorite songs (via LyricWikia API) |
| # editorconfig.org | ||
| root = true | ||
| [*] | ||
| indent_style = space | ||
| indent_size = 4 | ||
| end_of_line = lf | ||
| charset = utf-8 | ||
| trim_trailing_whitespace = true | ||
| insert_final_newline = true | ||
| [*.md] | ||
| trim_trailing_whitespace = false |
-13
| { | ||
| "node": true, | ||
| "esnext": true, | ||
| "bitwise": true, | ||
| "camelcase": true, | ||
| "curly": true, | ||
| "immed": true, | ||
| "newcap": true, | ||
| "noarg": true, | ||
| "undef": true, | ||
| "unused": "vars", | ||
| "strict": true | ||
| } |
| { | ||
| "timeout": 10000 | ||
| } |
| language: node_js | ||
| node_js: | ||
| - "12" | ||
| - "10" | ||
| - "8" |
-12
| 'use strict'; | ||
| exports.LYRICS_API = 'https://lyrics.fandom.com/api.php'; | ||
| exports.parseJSON = function(data, cb) { | ||
| try { | ||
| var text = data && data.replace(/^\s*|\s*$/g, ''); | ||
| return text && JSON.parse(text); | ||
| } catch (e) { | ||
| throw new Error('There was an issue parsing the response.'); | ||
| } | ||
| }; |
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| 'use strict'; | ||
| const chai = require('chai'); | ||
| const expect = chai.expect; | ||
| const getAlbums = require('../lib/getAlbums'); | ||
| describe('getAlbums', function() { | ||
| it('should return an array of albums', async function() { | ||
| const albums = await getAlbums('Local Natives'); | ||
| expect(albums).to.be.eql([ | ||
| 'Gorilla Manor', | ||
| 'Hummingbird', | ||
| 'Sunlit Youth', | ||
| 'Violet Street' | ||
| ]); | ||
| }); | ||
| it('should return an array of albums ignoring one', async function() { | ||
| const albums = await getAlbums('Foals', { ignore: 'Other Songs' }); | ||
| expect(albums).to.be.eql([ | ||
| 'Antidotes', | ||
| 'Total Life Forever', | ||
| 'Holy Fire', | ||
| 'What Went Down', | ||
| 'Everything Not Saved Will Be Lost - Part 1' | ||
| ]); | ||
| }); | ||
| }); |
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| /* global before: false*/ | ||
| 'use strict'; | ||
| var fs = require('fs'); | ||
| var chai = require('chai'); | ||
| var expect = chai.expect; | ||
| var getArtist = require('../lib/getArtist'); | ||
| describe('getArtist', function() { | ||
| describe('Errors', function() { | ||
| it('should return an Error when its called without a name', async function() { | ||
| try { | ||
| await getArtist(''); | ||
| } catch (err) { | ||
| expect(err.message).to.eql('"artist" cannot be an empty string'); | ||
| } | ||
| }); | ||
| it('should return an Error when artist couldn\'t be found or has no records', async function() { | ||
| try { | ||
| await getArtist('Frodo Baggins'); | ||
| } catch (err) { | ||
| expect(err.message).to.eql('Frodo Baggins couldn\'t be found in the api'); | ||
| } | ||
| }); | ||
| }); | ||
| describe('Options', function() { | ||
| describe('fmt: json', function() { | ||
| var testJSON; | ||
| before(function(done) { | ||
| fs.readFile('./test/testJSON.json', function(err, data) { | ||
| if (err) { | ||
| return done(err); | ||
| } | ||
| testJSON = JSON.parse(data.toString()).getArtist; | ||
| done(); | ||
| }); | ||
| }); | ||
| it('should return an json response by default', async function() { | ||
| const artistInfo = await getArtist('Local Natives'); | ||
| expect(artistInfo).to.deep.eql(testJSON); | ||
| }); | ||
| }); | ||
| describe('fmt: xml', function() { | ||
| var testXML; | ||
| before(function(done) { | ||
| fs.readFile('./test/testXML.xml', function(err, data) { | ||
| if (err) { | ||
| return done(err); | ||
| } | ||
| testXML = data.toString(); | ||
| done(); | ||
| }); | ||
| }); | ||
| it('should return a valid xml response', async function() { | ||
| const artistInfo = await getArtist('Local Natives', { | ||
| fmt: 'xml' | ||
| }); | ||
| expect(artistInfo).to.deep.eql(testXML); | ||
| }); | ||
| }); | ||
| describe('fmt: html', function() { | ||
| var testHTML; | ||
| before(function(done) { | ||
| fs.readFile('./test/testHTML.html', function(err, data) { | ||
| if (err) { | ||
| return done(err); | ||
| } | ||
| testHTML = data.toString(); | ||
| done(); | ||
| }); | ||
| }); | ||
| it('should return a valid html response', async function() { | ||
| const artistInfo = await getArtist('Local Natives', { | ||
| fmt: 'html' | ||
| }); | ||
| expect(artistInfo).to.deep.eql(testHTML); | ||
| }); | ||
| }); | ||
| }); | ||
| }); |
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| /* global before: false*/ | ||
| 'use strict'; | ||
| const chai = require('chai'); | ||
| const expect = chai.expect; | ||
| const getHometown = require('../lib/getHometown'); | ||
| describe('getHomeTown', function() { | ||
| let artistInfo; | ||
| before(async function() { | ||
| artistInfo = await getHometown('Radiohead'); | ||
| }); | ||
| it('should fetch the artist\'s country', function() { | ||
| expect(artistInfo.country).to.eql('England'); | ||
| }); | ||
| it('should fetch the artist\'s state', function() { | ||
| expect(artistInfo.state).to.eql('Oxfordshire'); | ||
| }); | ||
| it('should fetch the artist\'s hometown', function() { | ||
| expect(artistInfo.hometown).to.eql('Abingdon'); | ||
| }); | ||
| it('should match the tag <getHometownResponse> when format is xml', async function() { | ||
| const data = await getHometown('Radiohead', { | ||
| fmt: 'xml' | ||
| }); | ||
| expect(data).to.match(/.*<getHometownResponse>.*/g); | ||
| }); | ||
| }); |
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| /* global before: false*/ | ||
| 'use strict'; | ||
| const chai = require('chai'); | ||
| const expect = chai.expect; | ||
| const {getSOTD, getTopSongs } = require('../lib/getRanks'); | ||
| describe('getSOTD', function() { | ||
| it('should at least return the keys of artist, song, lyrics from json', async function() { | ||
| const data = await getSOTD(); | ||
| expect(data).to.include.keys(['artist', 'song', 'lyrics']); | ||
| }); | ||
| it('should have the tag <songOfTheDay> when format is xml', async function() { | ||
| const data = await getSOTD({ fmt: 'xml' }); | ||
| expect(data).to.match(/.*<songOfTheDay>.*/g); | ||
| }); | ||
| }); | ||
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| 'use strict'; | ||
| const chai = require('chai'); | ||
| const expect = chai.expect; | ||
| const getSong = require('../lib/getSong'); | ||
| describe('getSong', function() { | ||
| it('should return the url to the lyrics page in json', async function() { | ||
| const { url } = await getSong('Radiohead', 'Reckoner'); | ||
| expect(url).to.eql('http://lyrics.wikia.com/Radiohead:Reckoner'); | ||
| }); | ||
| it('should return the url to the lyrics page in xml', async function() { | ||
| const body = await getSong('Radiohead', 'Reckoner', { | ||
| fmt: 'xml' | ||
| }); | ||
| expect(body).to.match(/.*<LyricsResult>.*/g); | ||
| }); | ||
| it('should return the url to the lyrics page in html', async function() { | ||
| const body = await getSong('Radiohead', 'Reckoner', { | ||
| fmt: 'html' | ||
| }); | ||
| expect(body).to.match(/.*Radiohead Reckoner lyrics.*/g); | ||
| }); | ||
| it('should return an error object when lyrics aren\'t found', async function() { | ||
| try { | ||
| await getSong('Radiohead', 'Bonkers'); | ||
| } catch (err) { | ||
| expect(err.message).to.eql('Lyrics for Radiohead - Bonkers not found'); | ||
| } | ||
| }); | ||
| }); |
| /* global describe: false*/ | ||
| /* global it: false*/ | ||
| /* global before: false*/ | ||
| 'use strict'; | ||
| var chai = require('chai'); | ||
| var expect = chai.expect; | ||
| var fs = require('fs'); | ||
| var parseLyrics = require('../lib/parseLyrics'); | ||
| describe('parseLyrics', function() { | ||
| var testData; | ||
| before(function(done) { | ||
| fs.readFile('./test/testJSON.json', function(err, data) { | ||
| if (err) { | ||
| done(err); | ||
| } | ||
| testData = JSON.parse(data.toString()).parseLyrics; | ||
| done(); | ||
| }); | ||
| }); | ||
| describe('James Blake:Unluck', function() { | ||
| var artistData; | ||
| before(async function() { | ||
| artistData = await parseLyrics('James Blake', 'Unluck'); | ||
| }); | ||
| it('should return an object', function() { | ||
| expect(artistData).to.be.a('object'); | ||
| }); | ||
| it('should have the keys: artist, album, lyrics, song', function() { | ||
| expect(artistData).to.have.keys(['artist', 'album', 'song', 'lyrics']); | ||
| }); | ||
| it('should match the artist\'s name', function() { | ||
| expect(artistData).to.have.deep.property('artist', 'James Blake'); | ||
| }); | ||
| it('should match the song\'s name', function() { | ||
| expect(artistData).to.have.deep.property('song', 'Unluck'); | ||
| }); | ||
| it('should match the album\'s name', function() { | ||
| expect(artistData).to.have.deep.property('album', 'James Blake'); | ||
| }); | ||
| it('should have the same lyrics', function() { | ||
| expect(artistData.lyrics).to.eql(testData[0].lyrics); | ||
| }); | ||
| }); | ||
| describe('Thom Yorke:A Rat\'s Nest', function() { | ||
| var artistData; | ||
| before(async function() { | ||
| artistData = await parseLyrics('Thom Yorke', 'A Rat\'s Nest'); | ||
| }); | ||
| it('should return an object', function() { | ||
| expect(artistData).to.be.a('object'); | ||
| }); | ||
| it('should have the keys: artist, album, lyrics, song', function() { | ||
| expect(artistData).to.have.keys(['artist', 'album', 'song', 'lyrics']); | ||
| }); | ||
| it('should match the artist\'s name', function() { | ||
| expect(artistData).to.have.deep.property('artist', 'Thom Yorke'); | ||
| }); | ||
| it('should match the song\'s name', function() { | ||
| expect(artistData).to.have.deep.property('song', 'A Rat\'s Nest'); | ||
| }); | ||
| it('should match the album\'s name', function() { | ||
| expect(artistData).to.have.deep.property('album', 'Spitting Feathers'); | ||
| }); | ||
| it('should have the same lyrics', function() { | ||
| expect(artistData.lyrics).to.eql(testData[1].lyrics); | ||
| }); | ||
| }); | ||
| }); |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> | ||
| <head> | ||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
| <title>Local Natives</title> | ||
| </head> | ||
| <body><h3><a href='http://lyrics.wikia.com/Local_Natives'>Local Natives</a></h3> | ||
| <ul class='albums'> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Gorilla_Manor_%282009%29'>Gorilla Manor_(2009)</a> - (at <a href='http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Gorilla%20Manor' title="Gorilla Manor at amazon">amazon</a>)<ul class='songs'> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Wide_Eyes'>Wide Eyes</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Airplanes'>Airplanes</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Sun_Hands'>Sun Hands</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:World_News'>World News</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Shape_Shifter'>Shape Shifter</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Camera_Talk'>Camera Talk</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Cards_%26_Quarters'>Cards & Quarters</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Warning_Sign'>Warning Sign</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Who_Knows_Who_Cares'>Who Knows Who Cares</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Cubism_Dream'>Cubism Dream</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Stranger_Things'>Stranger Things</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Sticky_Thread'>Sticky Thread</a></li> | ||
| </ul> | ||
| </li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Hummingbird_%282013%29'>Hummingbird_(2013)</a> - (at <a href='http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Hummingbird' title="Hummingbird at amazon">amazon</a>)<ul class='songs'> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:You_%26_I'>You & I</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Heavy_Feet'>Heavy Feet</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Ceilings'>Ceilings</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Black_Spot'>Black Spot</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Breakers'>Breakers</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Three_Months'>Three Months</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Black_Balloons'>Black Balloons</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Wooly_Mammoth'>Wooly Mammoth</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Mt._Washington'>Mt. Washington</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Colombia'>Colombia</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Bowery'>Bowery</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Palms'>Palms</a></li> | ||
| <li><a href='http://lyrics.wikia.com/11:11'>11:11</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Ingrid'>Ingrid</a></li> | ||
| </ul> | ||
| </li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Sunlit_Youth_%282016%29'>Sunlit Youth_(2016)</a> - (at <a href='http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Sunlit%20Youth' title="Sunlit Youth at amazon">amazon</a>)<ul class='songs'> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Villainy'>Villainy</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Past_Lives'>Past Lives</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Dark_Days'>Dark Days</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Fountain_Of_Youth'>Fountain Of Youth</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Masters'>Masters</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Jellyfish'>Jellyfish</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Coins'>Coins</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Mother_Emanuel'>Mother Emanuel</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Ellie_Alice'>Ellie Alice</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Psycho_Lovers'>Psycho Lovers</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Everything_All_At_Once'>Everything All At Once</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Sea_Of_Years'>Sea Of Years</a></li> | ||
| </ul> | ||
| </li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Violet_Street_%282019%29'>Violet Street_(2019)</a> - (at <a href='http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Violet%20Street' title="Violet Street at amazon">amazon</a>)<ul class='songs'> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Vogue'>Vogue</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:When_Am_I_Gonna_Lose_You'>When Am I Gonna Lose You</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Caf%C3%A9_Amarillo'>Café Amarillo</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Munich_II'>Munich II</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Megaton_Mile'>Megaton Mile</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Someday_Now'>Someday Now</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Shy'>Shy</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Garden_Of_Elysian'>Garden Of Elysian</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Gulf_Shores'>Gulf Shores</a></li> | ||
| <li><a href='http://lyrics.wikia.com/Local_Natives:Tap_Dancer'>Tap Dancer</a></li> | ||
| </ul> | ||
| </li> | ||
| </ul> | ||
| </body> | ||
| </html> |
| { | ||
| "parseLyrics": [ | ||
| { | ||
| "song": "Unluck", | ||
| "artist": "James Blake", | ||
| "album": "James Blake", | ||
| "lyrics": "Treated walls, care for me,\n,When crossings call out one of three,\n,\n,Treated walls care for me,\n,When crossings call out one of three,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Treated walls care for me,\n,When crossings call out one of three,\n,\n,Treated walls care for me,\n,When crossings call out one of three,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,Only child take good care, I wouldn't like you,\n,Playing, falling there,\n,\n,Only child take good care, I wouldn't like you,\n,Playing, falling,\n,Only child take good care, I wouldn't like you,\n,Playing" | ||
| }, | ||
| { | ||
| "song": "A Rat's Nest", | ||
| "artist": "Thom Yorke", | ||
| "album": "Spitting Feathers", | ||
| "lyrics": "Clicks on the phone,\n,I cannot help you,\n,Caught by own worm,\n,Caught in a rat's nest,\n,\n,Eat own young,\n,Chew through wires,\n,Sewn up in stitches, stitches,\n,Deny all knowledge,\n,Paragraph 5,\n,Subsection b,\n,The committee is content, content,\n,To live in a rat's nest,\n,Rat's nest" | ||
| } | ||
| ], | ||
| "getArtist": { | ||
| "artist": "Local Natives", | ||
| "albums": [ | ||
| { | ||
| "album": "Gorilla Manor", | ||
| "year": "2009", | ||
| "amazonLink": "http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Gorilla%20Manor", | ||
| "songs": [ | ||
| "Wide Eyes", | ||
| "Airplanes", | ||
| "Sun Hands", | ||
| "World News", | ||
| "Shape Shifter", | ||
| "Camera Talk", | ||
| "Cards & Quarters", | ||
| "Warning Sign", | ||
| "Who Knows Who Cares", | ||
| "Cubism Dream", | ||
| "Stranger Things", | ||
| "Sticky Thread" | ||
| ] | ||
| }, | ||
| { | ||
| "album": "Hummingbird", | ||
| "year": "2013", | ||
| "amazonLink": "http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Hummingbird", | ||
| "songs": [ | ||
| "You & I", | ||
| "Heavy Feet", | ||
| "Ceilings", | ||
| "Black Spot", | ||
| "Breakers", | ||
| "Three Months", | ||
| "Black Balloons", | ||
| "Wooly Mammoth", | ||
| "Mt. Washington", | ||
| "Colombia", | ||
| "Bowery", | ||
| "Palms", | ||
| "11:11", | ||
| "Ingrid" | ||
| ] | ||
| }, | ||
| { | ||
| "album": "Sunlit Youth", | ||
| "year": "2016", | ||
| "amazonLink": "http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Sunlit%20Youth", | ||
| "songs": [ | ||
| "Villainy", | ||
| "Past Lives", | ||
| "Dark Days", | ||
| "Fountain Of Youth", | ||
| "Masters", | ||
| "Jellyfish", | ||
| "Coins", | ||
| "Mother Emanuel", | ||
| "Ellie Alice", | ||
| "Psycho Lovers", | ||
| "Everything All At Once", | ||
| "Sea Of Years" | ||
| ] | ||
| }, | ||
| { | ||
| "album": "Violet Street", | ||
| "year": "2019", | ||
| "amazonLink": "http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Violet%20Street", | ||
| "songs": [ | ||
| "Vogue", | ||
| "When Am I Gonna Lose You", | ||
| "Café Amarillo", | ||
| "Munich II", | ||
| "Megaton Mile", | ||
| "Someday Now", | ||
| "Shy", | ||
| "Garden Of Elysian", | ||
| "Gulf Shores", | ||
| "Tap Dancer" | ||
| ] | ||
| } | ||
| ] | ||
| } | ||
| } |
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <getArtistResponse> | ||
| <artist>Local Natives</artist> | ||
| <albums> | ||
| <album>Gorilla Manor</album> | ||
| <year>2009</year> | ||
| <amazonLink>http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Gorilla%20Manor</amazonLink> | ||
| <songs> | ||
| <item>Wide Eyes</item> | ||
| <item>Airplanes</item> | ||
| <item>Sun Hands</item> | ||
| <item>World News</item> | ||
| <item>Shape Shifter</item> | ||
| <item>Camera Talk</item> | ||
| <item>Cards & Quarters</item> | ||
| <item>Warning Sign</item> | ||
| <item>Who Knows Who Cares</item> | ||
| <item>Cubism Dream</item> | ||
| <item>Stranger Things</item> | ||
| <item>Sticky Thread</item> | ||
| </songs> | ||
| <album>Hummingbird</album> | ||
| <year>2013</year> | ||
| <amazonLink>http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Hummingbird</amazonLink> | ||
| <songs> | ||
| <item>You & I</item> | ||
| <item>Heavy Feet</item> | ||
| <item>Ceilings</item> | ||
| <item>Black Spot</item> | ||
| <item>Breakers</item> | ||
| <item>Three Months</item> | ||
| <item>Black Balloons</item> | ||
| <item>Wooly Mammoth</item> | ||
| <item>Mt. Washington</item> | ||
| <item>Colombia</item> | ||
| <item>Bowery</item> | ||
| <item>Palms</item> | ||
| <item>11:11</item> | ||
| <item>Ingrid</item> | ||
| </songs> | ||
| <album>Sunlit Youth</album> | ||
| <year>2016</year> | ||
| <amazonLink>http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Sunlit%20Youth</amazonLink> | ||
| <songs> | ||
| <item>Villainy</item> | ||
| <item>Past Lives</item> | ||
| <item>Dark Days</item> | ||
| <item>Fountain Of Youth</item> | ||
| <item>Masters</item> | ||
| <item>Jellyfish</item> | ||
| <item>Coins</item> | ||
| <item>Mother Emanuel</item> | ||
| <item>Ellie Alice</item> | ||
| <item>Psycho Lovers</item> | ||
| <item>Everything All At Once</item> | ||
| <item>Sea Of Years</item> | ||
| </songs> | ||
| <album>Violet Street</album> | ||
| <year>2019</year> | ||
| <amazonLink>http://www.amazon.com/exec/obidos/redirect?link_code=ur2&tag=wikia-20&camp=1789&creative=9325&path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Violet%20Street</amazonLink> | ||
| <songs> | ||
| <item>Vogue</item> | ||
| <item>When Am I Gonna Lose You</item> | ||
| <item>Café Amarillo</item> | ||
| <item>Munich II</item> | ||
| <item>Megaton Mile</item> | ||
| <item>Someday Now</item> | ||
| <item>Shy</item> | ||
| <item>Garden Of Elysian</item> | ||
| <item>Gulf Shores</item> | ||
| <item>Tap Dancer</item> | ||
| </songs> | ||
| </albums> | ||
| </getArtistResponse> |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
1
-66.67%14614
-61.69%11
-54.17%308
-53.26%