change(backend): nur noch der erste Kuenstler im Dateinamen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8d25bf0404
commit
073593d963
5 files changed
+84
-6
No files matched your search
@@ -170,3 +170,53 @@ test('Mehrere Kuenstler: Ordner haengt am ersten', () => {
|
||||
test('Kein Treffer bleibt null', () => {
|
||||
assert.equal(albumDirFromTags(SLASH_ROOT, 'Niemand', 'Nichts'), null);
|
||||
});
|
||||
|
||||
// ─── Kuenstler im Dateinamen ────────────────────────────────────────────────
|
||||
// Frueher stand die vollstaendige Gaesteliste im Namen und wurde bei 100 Zeichen mitten im
|
||||
// letzten Namen abgeschnitten. Jetzt nur noch der erste Kuenstler.
|
||||
const { dateinamensKuenstler } = require('../lib/metadata');
|
||||
|
||||
test('Nur der erste Kuenstler landet im Dateinamen', () => {
|
||||
assert.equal(
|
||||
dateinamensKuenstler('K/DA;Madison Beer;i-dle;Lexie Liu;Jaira Burns;Seraphine;League of Legends'),
|
||||
'K/DA',
|
||||
);
|
||||
assert.equal(dateinamensKuenstler('Dove Cameron, Sofia Carson'), 'Dove Cameron');
|
||||
assert.equal(dateinamensKuenstler('Calvin Harris & Dua Lipa'), 'Calvin Harris');
|
||||
});
|
||||
|
||||
test('Bandnamen mit & bleiben ganz, wenn sie keine Liste sind', () => {
|
||||
// "&" trennt nur MIT umgebenden Leerzeichen — "Earth, Wind & Fire" waere ohnehin durch das
|
||||
// Komma getrennt, aber ein reiner Bandname ohne Liste darf nicht zerlegt werden.
|
||||
assert.equal(dateinamensKuenstler('AC/DC'), 'AC/DC');
|
||||
assert.equal(dateinamensKuenstler('Simon&Garfunkel'), 'Simon&Garfunkel');
|
||||
});
|
||||
|
||||
test('Leerer Kuenstler faellt auf den Album-Kuenstler zurueck', () => {
|
||||
assert.equal(dateinamensKuenstler('', 'K/DA;Madison Beer'), 'K/DA');
|
||||
assert.equal(dateinamensKuenstler(undefined, undefined), '');
|
||||
});
|
||||
|
||||
test('Der Dateiname bleibt kurz genug fuers Dateisystem', () => {
|
||||
const lang = 'K/DA;Madison Beer;(G)I-DLE;Lexie Liu;Jaira Burns;Seraphine;League of Legends;Bea Miller;Wolftyla;Duckwrth';
|
||||
const teil = dateinamensKuenstler(lang);
|
||||
assert.equal(teil, 'K/DA');
|
||||
assert.ok(teil.length < 100, 'wird nie von sanitize() abgeschnitten');
|
||||
});
|
||||
|
||||
test('Dublettenpruefung findet auch die alt benannten Dateien', () => {
|
||||
// Nach der Umstellung liegen beide Namensformen nebeneinander. Beide muessen als "schon da"
|
||||
// erkannt werden, sonst laedt der Downloader die alten Dateien ein zweites Mal.
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'ns-namen-'));
|
||||
const put = (album, file) => {
|
||||
const dir = path.join(root, 'K_DA', album);
|
||||
fs.mkdirSync(dir, { recursive: true });
|
||||
fs.writeFileSync(path.join(dir, file), '');
|
||||
};
|
||||
put('MORE', '01 - K_DA,Madison Beer,i-dle,Lexie Liu,Jaira Burns,Seraphine - MORE.mp3'); // alt
|
||||
put('ALL OUT', '03 - K_DA - VILLAIN.mp3'); // neu
|
||||
assert.ok(findExistingTrack(root, 'K/DA', 'MORE'), 'alte Namensform nicht erkannt');
|
||||
assert.ok(findExistingTrack(root, 'K/DA', 'VILLAIN'), 'neue Namensform nicht erkannt');
|
||||
assert.equal(findExistingTrack(root, 'K/DA', 'POP/STARS'), null);
|
||||
fs.rmSync(root, { recursive: true, force: true });
|
||||
});
|
||||
Reference in new issue
Block a user