Die Medientabelle spricht durchgehend dieselbe Sprache
Die Tonzeile nahm bereits die Formulierung vom Server, die Videozeile baute ihren Text weiter selbst — "240p (H264)" neben "AAC · Mono", zwei Schreibweisen in derselben Tabelle untereinander. Die gemessene Auflösung wandert in den Tooltip, wo sie hingehört: 1040 ist keine Stufe, sondern ein beschnittenes Bild. Dazu: ein Spurtitel, der nur die Sprache wiederholt, fällt weg. "Deutsch · AAC · Mono · ‚Deutsch'" sagt dasselbe zweimal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
632d3efa35
commit
228c318ad2
@@ -108,10 +108,17 @@ public static class Benennung
|
|||||||
if (Codec(codec) is { } c) teile.Add(c);
|
if (Codec(codec) is { } c) teile.Add(c);
|
||||||
if (Kanaele(kanaele) is { } k) teile.Add(k);
|
if (Kanaele(kanaele) is { } k) teile.Add(k);
|
||||||
|
|
||||||
// Der Titel aus der Datei nur, wenn er etwas hinzufügt — „SoundHandler"
|
// **Der Titel nur, wenn er etwas hinzufügt.** „SoundHandler" ist kein
|
||||||
// ist kein Name, sondern ein Rest aus dem Umpacken.
|
// Name, sondern ein Rest aus dem Umpacken. Und ein Titel, der bloss
|
||||||
if (titel is { Length: > 0 } && !Nichtssagend.Contains(titel.Trim()))
|
// die Sprache wiederholt, ergibt „Deutsch · AAC · Mono · ‚Deutsch'".
|
||||||
teile.Add($"„{titel.Trim()}“");
|
var blank = titel?.Trim();
|
||||||
|
if (blank is { Length: > 0 }
|
||||||
|
&& !Nichtssagend.Contains(blank)
|
||||||
|
&& !string.Equals(blank, Sprache(sprache), StringComparison.OrdinalIgnoreCase)
|
||||||
|
&& !string.Equals(blank, sprache?.Trim(), StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
teile.Add($"„{blank}“");
|
||||||
|
}
|
||||||
|
|
||||||
return teile.Count > 0 ? string.Join(" · ", teile) : "Tonspur";
|
return teile.Count > 0 ? string.Join(" · ", teile) : "Tonspur";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,3 +83,22 @@ public class BenennungTests
|
|||||||
public void Die_ganze_Bildspur() =>
|
public void Die_ganze_Bildspur() =>
|
||||||
Assert.That(Benennung.Bildspur("h264", 1040), Is.EqualTo("1080p · H.264"));
|
Assert.That(Benennung.Bildspur("h264", 1040), Is.EqualTo("1080p · H.264"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Nachtrag: Titel, die nichts hinzufügen.</summary>
|
||||||
|
public class SpurtitelTests
|
||||||
|
{
|
||||||
|
/// <summary>„Deutsch · AAC · Mono · ‚Deutsch'" sagt dasselbe zweimal.</summary>
|
||||||
|
[Test]
|
||||||
|
public void Ein_Titel_der_nur_die_Sprache_wiederholt_faellt_weg()
|
||||||
|
{
|
||||||
|
Assert.That(Benennung.Tonspur("deu", "aac", 1, "Deutsch"),
|
||||||
|
Is.EqualTo("Deutsch · AAC · Mono"));
|
||||||
|
Assert.That(Benennung.Tonspur("deu", "aac", 1, "deu"),
|
||||||
|
Is.EqualTo("Deutsch · AAC · Mono"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Ein_Titel_der_etwas_sagt_bleibt() =>
|
||||||
|
Assert.That(Benennung.Tonspur("deu", "aac", 1, "Audiodeskription"),
|
||||||
|
Is.EqualTo("Deutsch · AAC · Mono · „Audiodeskription“"));
|
||||||
|
}
|
||||||
|
|||||||
@@ -260,16 +260,25 @@ export function detailseite(art: Art, id: string, zurueck: () => void): HTMLElem
|
|||||||
|
|
||||||
zeile('Datei', [datei.container?.toUpperCase(), groesse(datei.sizeBytes),
|
zeile('Datei', [datei.container?.toUpperCase(), groesse(datei.sizeBytes),
|
||||||
dauer(datei.durationSeconds)].filter(Boolean).join(' · '));
|
dauer(datei.durationSeconds)].filter(Boolean).join(' · '));
|
||||||
if (bild) zeile('Video', `${bild.height ? `${bild.height}p` : '—'} (${(bild.codec ?? '?').toUpperCase()})`);
|
// **Auch hier die Formulierung vom Server.** Vorher baute diese Zeile
|
||||||
|
// ihren Text selbst — „240p (H264)" statt „240p · H.264" —, und damit
|
||||||
|
// stand in derselben Tabelle zweierlei Schreibweise untereinander.
|
||||||
|
if (bild) {
|
||||||
|
const v = zeile('Video', spurname(bild));
|
||||||
|
// Die gemessene Höhe gehört in den Tooltip: 1040 ist keine Stufe,
|
||||||
|
// sondern ein beschnittenes Bild.
|
||||||
|
if (bild.width && bild.height) v.title = `${bild.width} × ${bild.height}`;
|
||||||
|
}
|
||||||
if (ton.length) zeile('Ton', ton.map(spurname).join(' · '));
|
if (ton.length) zeile('Ton', ton.map(spurname).join(' · '));
|
||||||
if (text.length) zeile('Untertitel', text.map(spurname).join(' · '));
|
if (text.length) zeile('Untertitel', text.map(spurname).join(' · '));
|
||||||
|
|
||||||
function zeile(name: string, wert: string): void {
|
function zeile(name: string, wert: string): HTMLElement {
|
||||||
const dt = document.createElement('dt');
|
const dt = document.createElement('dt');
|
||||||
dt.textContent = name;
|
dt.textContent = name;
|
||||||
const dd = document.createElement('dd');
|
const dd = document.createElement('dd');
|
||||||
dd.textContent = wert;
|
dd.textContent = wert;
|
||||||
liste.append(dt, dd);
|
liste.append(dt, dd);
|
||||||
|
return dd;
|
||||||
}
|
}
|
||||||
|
|
||||||
return liste;
|
return liste;
|
||||||
|
|||||||
Reference in New Issue
Block a user