mirror of
https://github.com/cxfksword/jellyfin-plugin-danmu.git
synced 2026-02-02 17:59:58 +08:00
@@ -15,7 +15,8 @@ namespace Jellyfin.Plugin.Danmu.Test
|
||||
{
|
||||
var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?><i><chatserver>chat.bilibili.com</chatserver><chatid>13113033</chatid><mission>0</mission><maxlimit>3000</maxlimit><state>0</state><real_name>0</real_name><source>k-v</source>
|
||||
<d p=""253.09700,1,30,16777215,1665229999,0,e890f28,1158792239837718272,11"">杨笑汝有受到羽海野千花影响啦</d>
|
||||
<d p=""225.85500,1,25,16777215,1665229198,0,e890f28,1158785518893433856,11"">风间笑死我了</d>
|
||||
<d p=""225.85500,1,25,16777215,1665229198,0,e890f28,1158785518893433856,11"">风间🎉笑死我了</d>
|
||||
<d p=""225.85500,1,25,16777215,1665229198,0,e890f28,1158785518893433856,11"">🥳🥳😂</d>
|
||||
<d p=""213.22500,1,25,16777215,1665229172,0,e890f28,1158785301788090624,11"">有搬运车的</d>
|
||||
<d p=""253.71600,1,25,16777215,1663566786,0,4cd9e142,1144840193279505664,11"">杨笑汝最喜欢的就是野海羽千花!</d>
|
||||
<d p=""634.75000,1,25,16777215,1663517171,0,43c9cec0,1144424000059966464,11"">给女儿买衣服哈哈哈哈哈</d>
|
||||
@@ -24,6 +25,7 @@ namespace Jellyfin.Plugin.Danmu.Test
|
||||
<d p=""55.38000,1,25,16777215,1660413677,0,9c28a5a9,1118390004910248704,11"">这个op看得我好迷茫</d></i>
|
||||
";
|
||||
|
||||
Danmaku2Ass.Bilibili.GetInstance().SetCustomFilter(true);
|
||||
var ass = Danmaku2Ass.Bilibili.GetInstance().ToASS(Encoding.UTF8.GetBytes(xml), new Config());
|
||||
Console.WriteLine(ass);
|
||||
Assert.IsNotNull(ass);
|
||||
|
||||
@@ -42,6 +42,11 @@ public class PluginConfiguration : BasePluginConfiguration
|
||||
/// </summary>
|
||||
public string AssSpeed { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 删除 emoji 表情。
|
||||
/// </summary>
|
||||
public bool AssRemoveEmoji { get; set; } = true;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 检测弹幕数和视频剧集数需要一致才自动下载弹幕.
|
||||
|
||||
@@ -15,7 +15,8 @@ namespace Danmaku2Ass
|
||||
{
|
||||
{ "top_filter", false },
|
||||
{ "bottom_filter", false },
|
||||
{ "scroll_filter", false }
|
||||
{ "scroll_filter", false },
|
||||
{ "custom_filter", false }
|
||||
};
|
||||
|
||||
private readonly Dictionary<int, string> mapping = new Dictionary<int, string>
|
||||
@@ -93,6 +94,17 @@ namespace Danmaku2Ass
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否启用自定义过滤处理
|
||||
/// </summary>
|
||||
/// <param name="isFilter"></param>
|
||||
/// <returns></returns>
|
||||
public Bilibili SetCustomFilter(bool isFilter)
|
||||
{
|
||||
config["custom_filter"] = isFilter;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void Create(long avid, long cid, Config subtitleConfig, string assFile)
|
||||
{
|
||||
//// 弹幕转换
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Danmaku2Ass
|
||||
{
|
||||
@@ -79,10 +80,21 @@ namespace Danmaku2Ass
|
||||
/// </summary>
|
||||
public class CustomFilter : Filter
|
||||
{
|
||||
private Regex regEmoj = new Regex(@"(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])", RegexOptions.Compiled);
|
||||
public override List<Danmaku> DoFilter(List<Danmaku> danmakus)
|
||||
{
|
||||
// TODO
|
||||
return base.DoFilter(danmakus);
|
||||
{
|
||||
// 过滤 emoji 和非法字符
|
||||
List<Danmaku> keep = new List<Danmaku>();
|
||||
foreach (var danmaku in danmakus)
|
||||
{
|
||||
danmaku.Content = this.regEmoj.Replace(danmaku.Content, string.Empty).Trim();
|
||||
if (string.IsNullOrWhiteSpace(danmaku.Content))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
keep.Add(danmaku);
|
||||
}
|
||||
return keep;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,10 +39,10 @@ namespace Danmaku2Ass
|
||||
{
|
||||
Filters.Add("scroll_filter", new ScrollFilter());
|
||||
}
|
||||
//if (Config["custom_filter"])
|
||||
//{
|
||||
// Filters.Add("custom_filter", new CustomFilter());
|
||||
//}
|
||||
if (Config["custom_filter"])
|
||||
{
|
||||
Filters.Add("custom_filter", new CustomFilter());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -52,18 +52,17 @@ namespace Danmaku2Ass
|
||||
{ "top_filter", 0},
|
||||
{ "bottom_filter", 0},
|
||||
{ "scroll_filter", 0},
|
||||
//{ "custom_filter",0}
|
||||
{ "custom_filter", 0}
|
||||
};
|
||||
|
||||
List<Danmaku> danmakus = Danmakus;
|
||||
//string[] orders = { "top_filter", "bottom_filter", "scroll_filter", "custom_filter" };
|
||||
string[] orders = { "top_filter", "bottom_filter", "scroll_filter" };
|
||||
string[] orders = { "top_filter", "bottom_filter", "scroll_filter", "custom_filter" };
|
||||
foreach (string name in orders)
|
||||
{
|
||||
Filter filter;
|
||||
if (!this.Filters.TryGetValue(name, out filter))
|
||||
{
|
||||
continue;
|
||||
if (!this.Filters.TryGetValue(name, out filter))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
int count = danmakus.Count;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Danmaku2Ass
|
||||
{
|
||||
|
||||
@@ -927,6 +927,10 @@ public class LibraryManagerEventsHelper : IDisposable
|
||||
{
|
||||
assConfig.TuneDuration = this.Config.AssSpeed.Trim().ToInt() - 8;
|
||||
}
|
||||
if (this.Config.AssRemoveEmoji)
|
||||
{
|
||||
Danmaku2Ass.Bilibili.GetInstance().SetCustomFilter(true);
|
||||
}
|
||||
|
||||
var assPath = Path.Combine(item.ContainingFolderPath, item.FileNameWithoutExtension + ".danmu.ass");
|
||||
Danmaku2Ass.Bilibili.GetInstance().Create(bytes, assConfig, assPath);
|
||||
|
||||
Reference in New Issue
Block a user