1
1
using Wasari . Tvdb . Abstractions ;
2
+ using Wasari . Tvdb . Api . Extensions ;
2
3
3
4
namespace Wasari . Tvdb . Api . Services ;
4
5
@@ -14,21 +15,36 @@ public TvdbEpisodesService(ITvdbApi tvdbApi)
14
15
public async ValueTask < IResult > GetEpisodes ( string query )
15
16
{
16
17
var searchResult = await TvdbApi . SearchAsync ( query ) ;
17
-
18
- if ( searchResult . Data . Count != 1 )
18
+ var tvdbSearchResponseSeries = searchResult . Data ;
19
+
20
+ if ( tvdbSearchResponseSeries . Count > 1 )
21
+ {
22
+ var normalizedQuery = query . NormalizeUsingRegex ( ) ;
23
+
24
+ var matchByAlias = tvdbSearchResponseSeries
25
+ . Where ( i => i . Aliases != null && i . Aliases . Any ( x => string . Equals ( x , normalizedQuery , StringComparison . InvariantCultureIgnoreCase ) ) )
26
+ . ToArray ( ) ;
27
+
28
+ if ( matchByAlias . Length == 1 )
29
+ {
30
+ tvdbSearchResponseSeries = matchByAlias ;
31
+ }
32
+ }
33
+
34
+ if ( tvdbSearchResponseSeries . Count != 1 )
19
35
return Results . BadRequest ( new
20
36
{
21
37
Status = StatusCodes . Status400BadRequest ,
22
38
Title = "Invalid query" ,
23
39
Detail = "Query must return exactly one result"
24
40
} ) ;
25
-
26
- var series = searchResult . Data . Single ( ) ;
41
+
42
+ var series = tvdbSearchResponseSeries . Single ( ) ;
27
43
var seriesWithEpisodes = await TvdbApi . GetSeriesAsync ( series . TvdbId ) ;
28
44
29
45
return Results . Ok ( seriesWithEpisodes . Data . Episodes
30
46
. Where ( i => ! string . IsNullOrEmpty ( i . Name ) )
31
- . Select ( i => new Episode ( i . Name , i . SeasonNumber , i . Number , i . IsMovie switch
47
+ . Select ( i => new WasariTvdbEpisode ( i . Name , i . SeasonNumber , i . Number , i . IsMovie switch
32
48
{
33
49
0 => false ,
34
50
1 => true ,
0 commit comments