Skip to content

Commit f1cf9ef

Browse files
authored
Merge pull request #53 from Musi13/master
Allow AniDB as an agent for movies
2 parents 8cf7654 + 3aeb0bb commit f1cf9ef

File tree

4 files changed

+99
-66
lines changed

4 files changed

+99
-66
lines changed

Jellyfin.Plugin.Anime/Providers/AniDB/AniDbExternalId.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MediaBrowser.Controller.Entities.TV;
2+
using MediaBrowser.Controller.Entities.Movies;
23
using MediaBrowser.Controller.Providers;
34
using MediaBrowser.Model.Entities;
45

@@ -7,7 +8,7 @@ namespace Jellyfin.Plugin.Anime.Providers.AniDB
78
public class AniDbExternalId : IExternalId
89
{
910
public bool Supports(IHasProviderIds item)
10-
=> item is Series;
11+
=> item is Series || item is Movie;
1112

1213
public string Name
1314
=> "AniDB";

Jellyfin.Plugin.Anime/Providers/AniDB/Metadata/AniDbSeriesImagesProvider.cs Jellyfin.Plugin.Anime/Providers/AniDB/Metadata/AniDbImageProvider.cs

+6-7
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@
88
using MediaBrowser.Common.Net;
99
using MediaBrowser.Controller.Entities;
1010
using MediaBrowser.Controller.Entities.TV;
11+
using MediaBrowser.Controller.Entities.Movies;
1112
using MediaBrowser.Controller.Providers;
1213
using MediaBrowser.Model.Entities;
1314
using MediaBrowser.Model.Providers;
1415

1516
namespace Jellyfin.Plugin.Anime.Providers.AniDB.Metadata
1617
{
17-
public class AniDbSeriesImagesProvider : IRemoteImageProvider
18+
public class AniDbImageProvider : IRemoteImageProvider
1819
{
20+
public string Name => "AniDB";
1921
private readonly IHttpClient _httpClient;
2022
private readonly IApplicationPaths _appPaths;
2123

22-
public AniDbSeriesImagesProvider(IHttpClient httpClient, IApplicationPaths appPaths)
24+
public AniDbImageProvider(IHttpClient httpClient, IApplicationPaths appPaths)
2325
{
2426
_httpClient = httpClient;
2527
_appPaths = appPaths;
@@ -38,8 +40,7 @@ public async Task<HttpResponseInfo> GetImageResponse(string url, CancellationTok
3840

3941
public Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
4042
{
41-
var series = (Series)item;
42-
var seriesId = series.GetProviderId(ProviderNames.AniDb);
43+
var seriesId = item.GetProviderId(ProviderNames.AniDb);
4344
return GetImages(seriesId, cancellationToken);
4445
}
4546

@@ -70,11 +71,9 @@ public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
7071
return new[] { ImageType.Primary };
7172
}
7273

73-
public string Name => "AniDB";
74-
7574
public bool Supports(BaseItem item)
7675
{
77-
return item is Series;
76+
return item is Series || item is Season || item is Movie;
7877
}
7978

8079
private async Task<string> FindImageUrl(string seriesDataPath)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using System.Collections.Generic;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using MediaBrowser.Common.Configuration;
5+
using MediaBrowser.Common.Net;
6+
using MediaBrowser.Controller.Entities.Movies;
7+
using MediaBrowser.Controller.Providers;
8+
using MediaBrowser.Model.Providers;
9+
using Microsoft.Extensions.Logging;
10+
11+
namespace Jellyfin.Plugin.Anime.Providers.AniDB.Metadata
12+
{
13+
public class AniDbMovieProvider : IRemoteMetadataProvider<Movie, MovieInfo>
14+
{
15+
private readonly AniDbSeriesProvider _seriesProvider;
16+
private readonly ILogger _log;
17+
18+
public string Name => "AniDB";
19+
20+
public AniDbMovieProvider(IApplicationPaths appPaths, IHttpClient httpClient, ILoggerFactory loggerFactory)
21+
{
22+
_seriesProvider = new AniDbSeriesProvider(appPaths, httpClient);
23+
_log = loggerFactory.CreateLogger("AniDB");
24+
}
25+
26+
public async Task<MetadataResult<Movie>> GetMetadata(MovieInfo info, CancellationToken cancellationToken)
27+
{
28+
// Empty result
29+
var result = new MetadataResult<Movie>
30+
{
31+
HasMetadata = false,
32+
Item = new Movie
33+
{
34+
Name = info.Name
35+
}
36+
};
37+
38+
var seriesId = info.ProviderIds.GetOrDefault(ProviderNames.AniDb);
39+
if (seriesId == null)
40+
{
41+
return result;
42+
}
43+
44+
var seriesInfo = new SeriesInfo();
45+
seriesInfo.ProviderIds.Add(ProviderNames.AniDb, seriesId);
46+
47+
var seriesResult = await _seriesProvider.GetMetadata(seriesInfo, cancellationToken);
48+
if (seriesResult.HasMetadata)
49+
{
50+
result = new MetadataResult<Movie>
51+
{
52+
HasMetadata = true,
53+
Item = new Movie
54+
{
55+
Name = seriesResult.Item.Name,
56+
Overview = seriesResult.Item.Overview,
57+
PremiereDate = seriesResult.Item.PremiereDate,
58+
ProductionYear = seriesResult.Item.ProductionYear,
59+
EndDate = seriesResult.Item.EndDate,
60+
CommunityRating = seriesResult.Item.CommunityRating,
61+
Studios = seriesResult.Item.Studios,
62+
Genres = seriesResult.Item.Genres,
63+
ProviderIds = seriesResult.Item.ProviderIds,
64+
},
65+
People = seriesResult.People,
66+
Images = seriesResult.Images
67+
};
68+
}
69+
70+
return result;
71+
}
72+
73+
public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(MovieInfo searchInfo, CancellationToken cancellationToken)
74+
{
75+
var seriesInfo = new SeriesInfo();
76+
var seriesId = searchInfo.ProviderIds.GetOrDefault(ProviderNames.AniDb);
77+
if (seriesId != null)
78+
{
79+
seriesInfo.ProviderIds.Add(ProviderNames.AniDb, seriesId);
80+
}
81+
seriesInfo.Name = searchInfo.Name;
82+
83+
return await _seriesProvider.GetSearchResults(seriesInfo, cancellationToken);
84+
}
85+
86+
public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken)
87+
{
88+
return _seriesProvider.GetImageResponse(url, cancellationToken);
89+
}
90+
}
91+
}

Jellyfin.Plugin.Anime/Providers/AniDB/Metadata/AniDbSeasonImageProvider.cs

-58
This file was deleted.

0 commit comments

Comments
 (0)