music-library-index
Advanced tools
Comparing version 1.1.1 to 1.2.0
15
index.js
@@ -127,5 +127,5 @@ var removeDiacritics = require('diacritics').remove; | ||
if (!track.albumName) { | ||
// ignore album artist if there's no album | ||
track.albumArtistName = track.artistName; | ||
if (track.albumArtistName === this.variousArtistsName) { | ||
track.albumArtistName = ""; | ||
track.compilation = true; | ||
} | ||
@@ -170,2 +170,3 @@ track.albumArtistName = track.albumArtistName || ""; | ||
albumArtistName = ""; | ||
var isCompilation = false; | ||
for (i = 0; i < album.trackList.length; i += 1) { | ||
@@ -179,5 +180,6 @@ track = album.trackList[i]; | ||
if (!albumArtistName) albumArtistName = track.artistName; | ||
albumArtistSet[this.getArtistKey(track.artistName)] = true; | ||
albumArtistSet[this.getArtistKey(albumArtistName)] = true; | ||
isCompilation = isCompilation || track.compilation; | ||
} | ||
if (moreThanOneKey(albumArtistSet)) { | ||
if (isCompilation || moreThanOneKey(albumArtistSet)) { | ||
albumArtistName = this.variousArtistsName; | ||
@@ -188,3 +190,2 @@ artistKey = this.variousArtistsKey; | ||
track.compilation = true; | ||
track.albumArtistName = this.variousArtistsName; | ||
} | ||
@@ -216,3 +217,3 @@ } else { | ||
if (variousArtist) { | ||
this.artistList.splice(0, 0, variousArtist); | ||
this.artistList.unshift(variousArtist); | ||
} | ||
@@ -219,0 +220,0 @@ for (i = 0; i < this.artistList.length; i += 1) { |
{ | ||
"name": "music-library-index", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "build a searchable javascript object model given track metadata objects", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -79,2 +79,18 @@ # Music Library Index | ||
✓ only creates one album | ||
album by an artist | ||
✓ should be filed under the artist | ||
album by an artist | ||
✓ sorts by disc before track | ||
album artist with no album | ||
✓ shouldn't be various artists | ||
unknown artist, unknown album | ||
✓ should be put into the same album | ||
✓ searching should not affect anything | ||
album with album artist | ||
✓ shouldn't be various artists | ||
``` |
@@ -140,6 +140,6 @@ var assert = require('assert'); | ||
assert.strictEqual(library.albumList.length, 2); | ||
assert.strictEqual(library.trackTable["jqvq-tpiu"].albumArtistName, "Various Artists"); | ||
assert.strictEqual(library.trackTable["dldd-itve"].albumArtistName, "Various Artists"); | ||
assert.strictEqual(library.trackTable["ukjv-ndsz"].albumArtistName, "Various Artists"); | ||
assert.strictEqual(library.trackTable["gfkt-esqz"].albumArtistName, "Various Artists"); | ||
assert.strictEqual(library.trackTable["jqvq-tpiu"].albumArtistName, ""); | ||
assert.strictEqual(library.trackTable["dldd-itve"].albumArtistName, ""); | ||
assert.strictEqual(library.trackTable["ukjv-ndsz"].albumArtistName, ""); | ||
assert.strictEqual(library.trackTable["gfkt-esqz"].albumArtistName, ""); | ||
}); | ||
@@ -409,1 +409,42 @@ }); | ||
}); | ||
describe("album with album artist", function() { | ||
var library = new MusicLibraryIndex(); | ||
var id1 = 'imnd-sxde'; | ||
library.addTrack({ | ||
key: id1, | ||
name: 'Palladio', | ||
artistName: 'Escala', | ||
albumArtistName: 'Escala', | ||
albumName: 'Escala', | ||
track: 1, | ||
}); | ||
var id2 = 'vewu-hqbx'; | ||
library.addTrack({ | ||
key: id2, | ||
name: 'Requiem for a Tower', | ||
artistName: 'Escala', | ||
albumArtistName: 'Escala', | ||
albumName: 'Escala', | ||
track: 2, | ||
}); | ||
var id3 = 'ixbc-oshh'; | ||
library.addTrack({ | ||
key: id3, | ||
name: 'Kashmir', | ||
artistName: 'Escala; Slash', | ||
albumArtistName: 'Escala', | ||
albumName: 'Escala', | ||
track: 3, | ||
}); | ||
library.rebuild(); | ||
it("shouldn't be various artists", function() { | ||
assert.strictEqual(library.trackTable[id1].albumArtistName, "Escala"); | ||
assert.strictEqual(library.trackTable[id2].albumArtistName, "Escala"); | ||
assert.strictEqual(library.artistList.length, 1); | ||
}); | ||
}); |
27890
688
96