Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

node-lyrics

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-lyrics - npm Package Compare versions

Comparing version
2.0.0
to
2.0.1
+12
lib/Utils.js
'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,
}
{
"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,2 +0,2 @@

# node-lyrics [![Build Status](https://travis-ci.org/ricardomatias/node-lyrics.svg)](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
{
"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"
'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&amp;tag=wikia-20&amp;camp=1789&amp;creative=9325&amp;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 &amp; 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&amp;tag=wikia-20&amp;camp=1789&amp;creative=9325&amp;path=external-search%3Fsearch-type=ss%26index=music%26keyword=Local%20Natives%20Hummingbird</amazonLink>
<songs>
<item>You &amp; 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&amp;tag=wikia-20&amp;camp=1789&amp;creative=9325&amp;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&amp;tag=wikia-20&amp;camp=1789&amp;creative=9325&amp;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>