Ein falscher Treffer verhinderte seine eigene Korrektur
„Doctor Strange" war fälschlich auf ein Making-of von 2022 gelaufen. Beim Korrigieren hängte die Vorschlagssuche `year=2022` an — aus genau der Zuordnung, die weg sollte — und lieferte nur noch Titel von 2022. Der richtige Film von 2016 konnte gar nicht erscheinen, egal wie oft man suchte. An TMDB nachgemessen: query='Doctor Strange' ohne Jahr → 2016 Doctor Strange, 2022 Multiverse … query='Doctor Strange' mit year=2022 → genau die drei Treffer aus der Meldung Gesucht wird jetzt mit dem Jahr aus dem Dateinamen, nie mit dem aus dem Treffer. Die Oberfläche trägt ebenfalls keines mehr vor: das angezeigte stammt aus derselben falschen Zuordnung. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
74c625b829
commit
0c07d4efc7
@@ -55,7 +55,9 @@ public sealed class VorgegebenerAnbieter : IMetadataProvider
|
||||
|
||||
public Task<IReadOnlyList<MovieMetadata>> SearchMoviesAsync(string t, int? j, CancellationToken ct = default)
|
||||
{
|
||||
Gefragt.Add($"suchFilm:{t}");
|
||||
// Mit Jahr: genau daran hing der Fehler, dass ein falscher Treffer
|
||||
// seine eigene Korrektur verhinderte.
|
||||
Gefragt.Add($"suchFilm:{t}:{j}");
|
||||
return Task.FromResult<IReadOnlyList<MovieMetadata>>(Film is null ? [] : [Film]);
|
||||
}
|
||||
|
||||
@@ -314,6 +316,44 @@ public class MetadataTests
|
||||
Assert.That(nachher!.Items[0].Title, Is.EqualTo("Von Hand"));
|
||||
}
|
||||
|
||||
/// <summary>Eine falsche Zuordnung darf ihre eigene Korrektur nicht verhindern.</summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// <b>Aus dem echten Bestand.</b> „Doctor Strange" war fälschlich auf ein
|
||||
/// Making-of von 2022 gelaufen. Beim Korrigieren hängte die Suche
|
||||
/// <c>year=2022</c> an — aus genau der Zuordnung, die gerade weg sollte —
|
||||
/// und lieferte nur noch Titel von 2022. Der richtige Film von 2016 konnte
|
||||
/// gar nicht erscheinen. Gesucht wird deshalb mit dem Jahr aus dem
|
||||
/// Dateinamen, nie mit dem aus dem Treffer.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public async Task Die_Vorschlagssuche_nimmt_das_Jahr_aus_dem_Dateinamen()
|
||||
{
|
||||
Datei("Doctor Strange (2016).mkv");
|
||||
var anbieter = new VorgegebenerAnbieter
|
||||
{
|
||||
// Der falsche Treffer: anderes Jahr als im Dateinamen.
|
||||
Film = new MovieMetadata(980017, "Das Making of", 2022, null, null, null)
|
||||
{
|
||||
Language = "de-DE",
|
||||
},
|
||||
};
|
||||
|
||||
using var server = MitAnbieter(anbieter);
|
||||
var (client, bibliothek) = await Einrichten(server, "Movies");
|
||||
await Scannen(client, bibliothek);
|
||||
|
||||
var filme = await client.GetFromJsonAsync<Page<MovieResponse>>("/api/v1/movies");
|
||||
Assert.That(filme!.Items[0].Year, Is.EqualTo(2022), "Der falsche Treffer sitzt.");
|
||||
|
||||
anbieter.Gefragt.Clear();
|
||||
await client.GetFromJsonAsync<List<MatchCandidate>>(
|
||||
$"/api/v1/movies/{filme.Items[0].Id}/matches");
|
||||
|
||||
Assert.That(anbieter.Gefragt, Does.Contain("suchFilm:Doctor Strange:2016"),
|
||||
"Gesucht wird mit 2016 aus dem Dateinamen, nicht mit 2022 aus dem Treffer.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Ein_Film_ohne_Treffer_behaelt_seinen_Dateinamen()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user