Format actor overview
This commit is contained in:
parent
7656bb6094
commit
fefcc7ab11
|
@ -0,0 +1,56 @@
|
||||||
|
using Jellyfin.Plugin.MetaShark.Api;
|
||||||
|
using Jellyfin.Plugin.MetaShark.Core;
|
||||||
|
using Jellyfin.Plugin.MetaShark.Providers;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Moq;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Jellyfin.Plugin.MetaShark.Test
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class PersonProviderTest
|
||||||
|
{
|
||||||
|
|
||||||
|
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
|
||||||
|
builder.AddSimpleConsole(options =>
|
||||||
|
{
|
||||||
|
options.IncludeScopes = true;
|
||||||
|
options.SingleLine = true;
|
||||||
|
options.TimestampFormat = "hh:mm:ss ";
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void TestGetMetadata()
|
||||||
|
{
|
||||||
|
|
||||||
|
var doubanApi = new DoubanApi(loggerFactory);
|
||||||
|
var tmdbApi = new TmdbApi(loggerFactory);
|
||||||
|
var omdbApi = new OmdbApi(loggerFactory);
|
||||||
|
var httpClientFactory = new DefaultHttpClientFactory();
|
||||||
|
var libraryManagerStub = new Mock<ILibraryManager>();
|
||||||
|
var httpContextAccessorStub = new Mock<IHttpContextAccessor>();
|
||||||
|
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var info = new PersonLookupInfo() { Name = "柊瑠美", ProviderIds = new Dictionary<string, string>() { { BaseProvider.DoubanProviderId, "1023337" } } };
|
||||||
|
var provider = new PersonProvider(httpClientFactory, loggerFactory, libraryManagerStub.Object, httpContextAccessorStub.Object, doubanApi, tmdbApi, omdbApi);
|
||||||
|
var result = await provider.GetMetadata(info, CancellationToken.None);
|
||||||
|
Assert.IsNotNull(result);
|
||||||
|
|
||||||
|
var str = result.ToJson();
|
||||||
|
Console.WriteLine(result.ToJson());
|
||||||
|
}).GetAwaiter().GetResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -79,7 +79,8 @@ namespace Jellyfin.Plugin.MetaShark.Api
|
||||||
Regex regFamily = new Regex(@"家庭成员: \n(.+?)\n", RegexOptions.Compiled);
|
Regex regFamily = new Regex(@"家庭成员: \n(.+?)\n", RegexOptions.Compiled);
|
||||||
Regex regCelebrityImdb = new Regex(@"imdb编号:\s+?(nm\d+)", RegexOptions.Compiled);
|
Regex regCelebrityImdb = new Regex(@"imdb编号:\s+?(nm\d+)", RegexOptions.Compiled);
|
||||||
Regex regImgHost = new Regex(@"\/\/(img\d+?)\.", RegexOptions.Compiled);
|
Regex regImgHost = new Regex(@"\/\/(img\d+?)\.", RegexOptions.Compiled);
|
||||||
Regex regIntroduceSpace = new Regex(@"\n\s+", RegexOptions.Compiled);
|
// 匹配除了换行符之外所有空白
|
||||||
|
Regex regOverviewSpace = new Regex(@"\n[^\S\n]+", RegexOptions.Compiled);
|
||||||
|
|
||||||
// 默认200毫秒请求1次
|
// 默认200毫秒请求1次
|
||||||
private TimeLimiter _defaultTimeConstraint = TimeLimiter.GetFromMaxCountByInterval(1, TimeSpan.FromMilliseconds(200));
|
private TimeLimiter _defaultTimeConstraint = TimeLimiter.GetFromMaxCountByInterval(1, TimeSpan.FromMilliseconds(200));
|
||||||
|
@ -332,7 +333,7 @@ namespace Jellyfin.Plugin.MetaShark.Api
|
||||||
var img = contentNode.GetAttr("a.nbgnbg>img", "src") ?? string.Empty;
|
var img = contentNode.GetAttr("a.nbgnbg>img", "src") ?? string.Empty;
|
||||||
var category = contentNode.QuerySelector("div.episode_list") == null ? "电影" : "电视剧";
|
var category = contentNode.QuerySelector("div.episode_list") == null ? "电影" : "电视剧";
|
||||||
var intro = contentNode.GetText("div.indent>span") ?? string.Empty;
|
var intro = contentNode.GetText("div.indent>span") ?? string.Empty;
|
||||||
intro = formatIntroduce(intro);
|
intro = formatOverview(intro);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -536,7 +537,7 @@ namespace Jellyfin.Plugin.MetaShark.Api
|
||||||
celebrity.Imdb = imdb;
|
celebrity.Imdb = imdb;
|
||||||
celebrity.Birthplace = birthplace;
|
celebrity.Birthplace = birthplace;
|
||||||
celebrity.Name = name;
|
celebrity.Name = name;
|
||||||
celebrity.Intro = intro;
|
celebrity.Intro = formatOverview(intro);
|
||||||
celebrity.Constellation = constellation;
|
celebrity.Constellation = constellation;
|
||||||
celebrity.Role = role;
|
celebrity.Role = role;
|
||||||
_memoryCache.Set<DoubanCelebrity?>(cacheKey, celebrity, expiredOption);
|
_memoryCache.Set<DoubanCelebrity?>(cacheKey, celebrity, expiredOption);
|
||||||
|
@ -819,10 +820,10 @@ namespace Jellyfin.Plugin.MetaShark.Api
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string formatIntroduce(string intro)
|
private string formatOverview(string intro)
|
||||||
{
|
{
|
||||||
intro = intro.Replace("©豆瓣", string.Empty);
|
intro = intro.Replace("©豆瓣", string.Empty);
|
||||||
return regIntroduceSpace.Replace(intro, "\n");
|
return regOverviewSpace.Replace(intro, "\n").Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsEnableAvoidRiskControl()
|
private bool IsEnableAvoidRiskControl()
|
||||||
|
|
Loading…
Reference in New Issue