Optimize identity. close #32
This commit is contained in:
parent
097b0514c4
commit
fa3166ce63
|
@ -31,7 +31,7 @@ namespace Jellyfin.Plugin.MetaShark.Test
|
|||
[TestMethod]
|
||||
public void TestGetMetadata()
|
||||
{
|
||||
var info = new SeriesInfo() { Name = "奔跑吧兄弟" };
|
||||
var info = new SeriesInfo() { Name = "一年一度喜剧大赛" };
|
||||
var doubanApi = new DoubanApi(loggerFactory);
|
||||
var tmdbApi = new TmdbApi(loggerFactory);
|
||||
var omdbApi = new OmdbApi(loggerFactory);
|
||||
|
|
|
@ -286,7 +286,15 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
{
|
||||
case MovieInfo:
|
||||
var movieResults = await this._tmdbApi.SearchMovieAsync(name, year ?? 0, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||
var movieItem = movieResults.FirstOrDefault();
|
||||
// 结果可能多个,优先取名称完全相同的,可能综艺会有纯享版等非标准版本
|
||||
var movieItem = movieResults.Where(x => x.Title == name || x.OriginalTitle == name).FirstOrDefault();
|
||||
if (movieItem != null)
|
||||
{
|
||||
this.Log($"Found tmdb [id]: {movieItem.Title}({movieItem.Id})");
|
||||
return movieItem.Id.ToString(CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
movieItem = movieResults.FirstOrDefault();
|
||||
if (movieItem != null)
|
||||
{
|
||||
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||
|
@ -296,7 +304,14 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
break;
|
||||
case SeriesInfo:
|
||||
var seriesResults = await this._tmdbApi.SearchSeriesAsync(name, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||
var seriesItem = seriesResults.FirstOrDefault();
|
||||
// 结果可能多个,优先取名称完全相同的,可能综艺会有纯享版等非标准版本
|
||||
var seriesItem = seriesResults.Where(x => x.Name == name || x.OriginalName == name).FirstOrDefault();
|
||||
if (seriesItem != null)
|
||||
{
|
||||
this.Log($"Found tmdb [id]: -> {seriesItem.Name}({seriesItem.Id})");
|
||||
return seriesItem.Id.ToString(CultureInfo.InvariantCulture);
|
||||
}
|
||||
seriesItem = seriesResults.FirstOrDefault();
|
||||
if (seriesItem != null)
|
||||
{
|
||||
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||
|
@ -310,7 +325,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
}
|
||||
|
||||
|
||||
protected async Task<string?> GetTmdbIdByImdbAsync(string imdb, string language, CancellationToken cancellationToken)
|
||||
protected async Task<string?> GetTmdbIdByImdbAsync(string imdb, string language, ItemLookupInfo info, CancellationToken cancellationToken)
|
||||
{
|
||||
if (string.IsNullOrEmpty(imdb))
|
||||
{
|
||||
|
@ -319,19 +334,28 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
|
||||
// 通过imdb获取tmdbId
|
||||
var findResult = await this._tmdbApi.FindByExternalIdAsync(imdb, TMDbLib.Objects.Find.FindExternalSource.Imdb, language, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
switch (info)
|
||||
{
|
||||
case MovieInfo:
|
||||
if (findResult?.MovieResults != null && findResult.MovieResults.Count > 0)
|
||||
{
|
||||
var tmdbId = findResult.MovieResults[0].Id;
|
||||
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
|
||||
return $"{tmdbId}";
|
||||
}
|
||||
|
||||
break;
|
||||
case SeriesInfo:
|
||||
if (findResult?.TvResults != null && findResult.TvResults.Count > 0)
|
||||
{
|
||||
var tmdbId = findResult.TvResults[0].Id;
|
||||
this.Log($"Found tmdb [id]: {tmdbId} by imdb id: {imdb}");
|
||||
return $"{tmdbId}";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
movie.SetProviderId(MetadataProvider.Imdb, newImdbId);
|
||||
|
||||
// 通过imdb获取TMDB id
|
||||
var newTmdbId = await this.GetTmdbIdByImdbAsync(subject.Imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||
var newTmdbId = await this.GetTmdbIdByImdbAsync(subject.Imdb, info.MetadataLanguage, info, cancellationToken).ConfigureAwait(false);
|
||||
if (!string.IsNullOrEmpty(newTmdbId))
|
||||
{
|
||||
tmdbId = newTmdbId;
|
||||
|
|
|
@ -210,11 +210,15 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
|||
// 通过imdb获取TMDB id
|
||||
if (!string.IsNullOrEmpty(imdb))
|
||||
{
|
||||
var tmdbId = await this.GetTmdbIdByImdbAsync(imdb, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||
var tmdbId = await this.GetTmdbIdByImdbAsync(imdb, info.MetadataLanguage, info, cancellationToken).ConfigureAwait(false);
|
||||
if (!string.IsNullOrEmpty(tmdbId))
|
||||
{
|
||||
return tmdbId;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Log($"Can not found tmdb [id] by imdb id: \"{imdb}\"");
|
||||
}
|
||||
}
|
||||
|
||||
// 尝试通过搜索匹配获取tmdbId
|
||||
|
|
Loading…
Reference in New Issue