fix #7
This commit is contained in:
parent
66bafb9199
commit
ef4509d3f6
|
@ -13,6 +13,8 @@ namespace Jellyfin.Plugin.MetaShark.Core
|
||||||
private static readonly Regex yearReg = new Regex(@"[12][890][78901234][0-9]", RegexOptions.Compiled);
|
private static readonly Regex yearReg = new Regex(@"[12][890][78901234][0-9]", RegexOptions.Compiled);
|
||||||
private static readonly Regex seasonSuffixReg = new Regex(@"[ .]S\d{1,2}$", RegexOptions.Compiled);
|
private static readonly Regex seasonSuffixReg = new Regex(@"[ .]S\d{1,2}$", RegexOptions.Compiled);
|
||||||
|
|
||||||
|
private static readonly Regex unusedReg = new Regex(@"\[.+?\]", RegexOptions.Compiled);
|
||||||
|
|
||||||
public static ParseNameResult Parse(string fileName, bool isTvSeries = false)
|
public static ParseNameResult Parse(string fileName, bool isTvSeries = false)
|
||||||
{
|
{
|
||||||
var parseResult = new ParseNameResult();
|
var parseResult = new ParseNameResult();
|
||||||
|
@ -84,6 +86,9 @@ namespace Jellyfin.Plugin.MetaShark.Core
|
||||||
// 电视剧名称后紧跟季信息时,会附加到名称中,需要去掉
|
// 电视剧名称后紧跟季信息时,会附加到名称中,需要去掉
|
||||||
name = seasonSuffixReg.Replace(name, string.Empty);
|
name = seasonSuffixReg.Replace(name, string.Empty);
|
||||||
|
|
||||||
|
// 删除多余的[]信息
|
||||||
|
name = unusedReg.Replace(name, string.Empty);
|
||||||
|
|
||||||
return name.Replace(".", " ").Trim();
|
return name.Replace(".", " ").Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,13 +72,13 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
||||||
{
|
{
|
||||||
// ParseName is required here.
|
// ParseName is required here.
|
||||||
// Caller provides the filename with extension stripped and NOT the parsed filename
|
// Caller provides the filename with extension stripped and NOT the parsed filename
|
||||||
var fileName = Path.GetFileName(info.Path) ?? info.Name;
|
var fileName = info.Name;
|
||||||
var parseResult = NameParser.Parse(fileName);
|
var parseResult = NameParser.Parse(fileName);
|
||||||
var searchName = !string.IsNullOrEmpty(parseResult.ChineseName) ? parseResult.ChineseName : parseResult.Name;
|
var searchName = !string.IsNullOrEmpty(parseResult.ChineseName) ? parseResult.ChineseName : parseResult.Name;
|
||||||
info.Year = parseResult.Year; // 默认parser对anime年份会解析出错,以anitomy为准
|
info.Year = parseResult.Year; // 默认parser对anime年份会解析出错,以anitomy为准
|
||||||
|
|
||||||
|
|
||||||
this.Log($"GuessByDouban of [name]: {info.Name} [fileName]: {fileName} [year]: {info.Year} [search name]: {searchName}");
|
this.Log($"GuessByDouban of [name]: {info.Name} [year]: {info.Year} [search name]: {searchName}");
|
||||||
var result = await this._doubanApi.SearchAsync(searchName, cancellationToken).ConfigureAwait(false);
|
var result = await this._doubanApi.SearchAsync(searchName, cancellationToken).ConfigureAwait(false);
|
||||||
var jw = new JaroWinkler();
|
var jw = new JaroWinkler();
|
||||||
foreach (var item in result)
|
foreach (var item in result)
|
||||||
|
@ -94,18 +94,19 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//英文关键词搜,结果是只有中文/繁体中文时,不适用相似匹配,如Who Am I
|
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||||
if (jw.Similarity(searchName, item.Name) < 0.8 && jw.Similarity(searchName, item.OriginalName) < 0.8)
|
// //英文关键词搜,结果是只有中文/繁体中文时,不适用相似匹配,如Who Am I
|
||||||
{
|
// if (jw.Similarity(searchName, item.Name) < 0.8 && jw.Similarity(searchName, item.OriginalName) < 0.8)
|
||||||
if (!searchName.IsSameLanguage(item.Name) && !searchName.IsSameLanguage(item.OriginalName))
|
// {
|
||||||
{
|
// if (!searchName.IsSameLanguage(item.Name) && !searchName.IsSameLanguage(item.OriginalName))
|
||||||
// 特殊处理下使用英文搜索,只有中文标题的情况
|
// {
|
||||||
}
|
// // 特殊处理下使用英文搜索,只有中文标题的情况
|
||||||
else
|
// }
|
||||||
{
|
// else
|
||||||
continue;
|
// {
|
||||||
}
|
// continue;
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// 不存在年份需要比较时,直接返回
|
// 不存在年份需要比较时,直接返回
|
||||||
if (info.Year == null || info.Year == 0)
|
if (info.Year == null || info.Year == 0)
|
||||||
|
@ -142,19 +143,20 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this.Log($"GuestDoubanSeasonByYear name: {name} douban_name: {item.Name} douban_sid: {item.Sid} douban_year: {item.Year} score: {score} ");
|
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||||
//英文关键词搜,结果是只有中文/繁体中文时,不适用相似匹配,如Who Am I
|
// // this.Log($"GuestDoubanSeasonByYear name: {name} douban_name: {item.Name} douban_sid: {item.Sid} douban_year: {item.Year} score: {score} ");
|
||||||
if (jw.Similarity(name, item.Name) < 0.8 && jw.Similarity(name, item.OriginalName) < 0.8)
|
// //英文关键词搜,结果是只有中文/繁体中文时,不适用相似匹配,如Who Am I
|
||||||
{
|
// if (jw.Similarity(name, item.Name) < 0.8 && jw.Similarity(name, item.OriginalName) < 0.8)
|
||||||
if (!name.IsSameLanguage(item.Name) && !name.IsSameLanguage(item.OriginalName))
|
// {
|
||||||
{
|
// if (!name.IsSameLanguage(item.Name) && !name.IsSameLanguage(item.OriginalName))
|
||||||
// 特殊处理下使用英文搜索,只有中文标题的情况
|
// {
|
||||||
}
|
// // 特殊处理下使用英文搜索,只有中文标题的情况
|
||||||
else
|
// }
|
||||||
{
|
// else
|
||||||
continue;
|
// {
|
||||||
}
|
// continue;
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if (year == item.Year)
|
if (year == item.Year)
|
||||||
{
|
{
|
||||||
|
@ -171,12 +173,12 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
||||||
{
|
{
|
||||||
// ParseName is required here.
|
// ParseName is required here.
|
||||||
// Caller provides the filename with extension stripped and NOT the parsed filename
|
// Caller provides the filename with extension stripped and NOT the parsed filename
|
||||||
var fileName = Path.GetFileName(info.Path) ?? info.Name;
|
var fileName = info.Name;
|
||||||
var parseResult = NameParser.Parse(fileName);
|
var parseResult = NameParser.Parse(fileName);
|
||||||
var searchName = !string.IsNullOrEmpty(parseResult.ChineseName) ? parseResult.ChineseName : parseResult.Name;
|
var searchName = !string.IsNullOrEmpty(parseResult.ChineseName) ? parseResult.ChineseName : parseResult.Name;
|
||||||
info.Year = parseResult.Year; // 默认parser对anime年份会解析出错,以anitomy为准
|
info.Year = parseResult.Year; // 默认parser对anime年份会解析出错,以anitomy为准
|
||||||
|
|
||||||
this.Log($"GuestByTmdb of [name]: {info.Name} [fileName]: {fileName} [year]: {info.Year} [search name]: {searchName}");
|
this.Log($"GuestByTmdb of [name]: {info.Name} [year]: {info.Year} [search name]: {searchName}");
|
||||||
var jw = new JaroWinkler();
|
var jw = new JaroWinkler();
|
||||||
|
|
||||||
switch (info)
|
switch (info)
|
||||||
|
@ -185,36 +187,42 @@ namespace Jellyfin.Plugin.MetaShark.Providers
|
||||||
var movieResults = await this._tmdbApi.SearchMovieAsync(searchName, info.Year ?? 0, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
var movieResults = await this._tmdbApi.SearchMovieAsync(searchName, info.Year ?? 0, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||||
foreach (var item in movieResults)
|
foreach (var item in movieResults)
|
||||||
{
|
{
|
||||||
if (jw.Similarity(searchName, item.Title) > 0.8
|
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||||
|| jw.Similarity(searchName, item.OriginalTitle) > 0.8)
|
// if (jw.Similarity(searchName, item.Title) > 0.8
|
||||||
{
|
// || jw.Similarity(searchName, item.OriginalTitle) > 0.8)
|
||||||
this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
// {
|
||||||
return item.Id.ToString(CultureInfo.InvariantCulture);
|
// this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
||||||
}
|
// return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
// 特殊处理下使用英文搜索,只有中文标题的情况,当匹配成功
|
// }
|
||||||
if (!searchName.IsSameLanguage(item.Title) && !searchName.IsSameLanguage(item.OriginalTitle))
|
// // 特殊处理下使用英文搜索,只有中文标题的情况,当匹配成功
|
||||||
{
|
// if (!searchName.IsSameLanguage(item.Title) && !searchName.IsSameLanguage(item.OriginalTitle))
|
||||||
this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
// {
|
||||||
return item.Id.ToString(CultureInfo.InvariantCulture);
|
// this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
||||||
}
|
// return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
|
// }
|
||||||
|
|
||||||
|
return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SeriesInfo:
|
case SeriesInfo:
|
||||||
var seriesResults = await this._tmdbApi.SearchSeriesAsync(searchName, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
var seriesResults = await this._tmdbApi.SearchSeriesAsync(searchName, info.MetadataLanguage, cancellationToken).ConfigureAwait(false);
|
||||||
foreach (var item in seriesResults)
|
foreach (var item in seriesResults)
|
||||||
{
|
{
|
||||||
if (jw.Similarity(searchName, item.Name) > 0.8
|
// bt种子都是英文名,但电影是中日韩泰印法地区时,都不适用相似匹配,去掉限制
|
||||||
|| jw.Similarity(searchName, item.OriginalName) > 0.8)
|
// if (jw.Similarity(searchName, item.Name) > 0.8
|
||||||
{
|
// || jw.Similarity(searchName, item.OriginalName) > 0.8)
|
||||||
this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
// {
|
||||||
return item.Id.ToString(CultureInfo.InvariantCulture);
|
// this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
||||||
}
|
// return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
// 特殊处理下使用英文搜索,只有中文标题的情况,当匹配成功
|
// }
|
||||||
if (!searchName.IsSameLanguage(item.Name) && !searchName.IsSameLanguage(item.OriginalName))
|
// // 特殊处理下使用英文搜索,只有中文标题的情况,当匹配成功
|
||||||
{
|
// if (!searchName.IsSameLanguage(item.Name) && !searchName.IsSameLanguage(item.OriginalName))
|
||||||
this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
// {
|
||||||
return item.Id.ToString(CultureInfo.InvariantCulture);
|
// this.Log($"GuestByTmdb of [name] found tmdb id: \"{item.Id}\"");
|
||||||
}
|
// return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
|
// }
|
||||||
|
|
||||||
|
return item.Id.ToString(CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue