mirror of
https://github.com/BililiveRecorder/BililiveRecorder.git
synced 2024-11-16 11:42:22 +08:00
parent
b5e6bec0ea
commit
58bebb2eb8
|
@ -384,7 +384,7 @@ namespace BililiveRecorder.Cli
|
||||||
|
|
||||||
{
|
{
|
||||||
using var key = RSA.Create();
|
using var key = RSA.Create();
|
||||||
var req = new CertificateRequest("CN=B站录播姬", key, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
|
var req = new CertificateRequest("CN=mikufans录播姬", key, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
|
||||||
|
|
||||||
var subjectAltName = new SubjectAlternativeNameBuilder();
|
var subjectAltName = new SubjectAlternativeNameBuilder();
|
||||||
subjectAltName.AddDnsName("BililiveRecorder");
|
subjectAltName.AddDnsName("BililiveRecorder");
|
||||||
|
|
|
@ -163,7 +163,7 @@ namespace BililiveRecorder.Core.Config.V3
|
||||||
public uint TimingCheckInterval => this.GetPropertyValue<uint>();
|
public uint TimingCheckInterval => this.GetPropertyValue<uint>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求B站API超时时间 毫秒
|
/// 请求mikufansAPI超时时间 毫秒
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint TimingApiTimeout => this.GetPropertyValue<uint>();
|
public uint TimingApiTimeout => this.GetPropertyValue<uint>();
|
||||||
|
|
||||||
|
@ -388,7 +388,7 @@ namespace BililiveRecorder.Core.Config.V3
|
||||||
public Optional<uint> OptionalTimingCheckInterval { get => this.GetPropertyValueOptional<uint>(nameof(this.TimingCheckInterval)); set => this.SetPropertyValueOptional(value, nameof(this.TimingCheckInterval)); }
|
public Optional<uint> OptionalTimingCheckInterval { get => this.GetPropertyValueOptional<uint>(nameof(this.TimingCheckInterval)); set => this.SetPropertyValueOptional(value, nameof(this.TimingCheckInterval)); }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求B站API超时时间 毫秒
|
/// 请求mikufansAPI超时时间 毫秒
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public uint TimingApiTimeout { get => this.GetPropertyValue<uint>(); set => this.SetPropertyValue(value); }
|
public uint TimingApiTimeout { get => this.GetPropertyValue<uint>(); set => this.SetPropertyValue(value); }
|
||||||
public bool HasTimingApiTimeout { get => this.GetPropertyHasValue(nameof(this.TimingApiTimeout)); set => this.SetPropertyHasValue<uint>(value, nameof(this.TimingApiTimeout)); }
|
public bool HasTimingApiTimeout { get => this.GetPropertyHasValue(nameof(this.TimingApiTimeout)); set => this.SetPropertyHasValue<uint>(value, nameof(this.TimingApiTimeout)); }
|
||||||
|
|
|
@ -222,7 +222,7 @@ namespace BililiveRecorder.Core.Danmaku
|
||||||
writer.WriteStartDocument();
|
writer.WriteStartDocument();
|
||||||
writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"#s\"");
|
writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"#s\"");
|
||||||
writer.WriteStartElement("i");
|
writer.WriteStartElement("i");
|
||||||
writer.WriteComment("\nB站录播姬 " + GitVersionInformation.InformationalVersion + "\nhttps://rec.danmuji.org/user/danmaku/\n本文件的弹幕信息兼容B站主站视频弹幕XML格式\n本XML自带样式可以在浏览器里打开(推荐使用Chrome)\n\nsc 为SuperChat\ngift为礼物\nguard为上船\n\nattribute \"raw\" 为原始数据\n");
|
writer.WriteComment("\nmikufans录播姬 " + GitVersionInformation.InformationalVersion + "\nhttps://rec.danmuji.org/user/danmaku/\n本文件的弹幕信息兼容mikufans主站视频弹幕XML格式\n本XML自带样式可以在浏览器里打开(推荐使用Chrome)\n\nsc 为SuperChat\ngift为礼物\nguard为上船\n\nattribute \"raw\" 为原始数据\n");
|
||||||
writer.WriteElementString("chatserver", "chat.bilibili.com");
|
writer.WriteElementString("chatserver", "chat.bilibili.com");
|
||||||
writer.WriteElementString("chatid", "0");
|
writer.WriteElementString("chatid", "0");
|
||||||
writer.WriteElementString("mission", "0");
|
writer.WriteElementString("mission", "0");
|
||||||
|
@ -246,7 +246,7 @@ namespace BililiveRecorder.Core.Danmaku
|
||||||
writer.WriteEndElement();
|
writer.WriteEndElement();
|
||||||
|
|
||||||
// see BililiveRecorder.ToolBox\Tool\DanmakuMerger\DanmakuMergerHandler.cs
|
// see BililiveRecorder.ToolBox\Tool\DanmakuMerger\DanmakuMergerHandler.cs
|
||||||
const string style = @"<z:stylesheet version=""1.0"" id=""s"" xml:id=""s"" xmlns:z=""http://www.w3.org/1999/XSL/Transform""><z:output method=""html""/><z:template match=""/""><html><meta name=""viewport"" content=""width=device-width""/><title>B站录播姬弹幕文件 - <z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></title><style>body{margin:0}h1,h2,p,table{margin-left:5px}table{border-spacing:0}td,th{border:1px solid grey;padding:1px}th{position:sticky;top:0;background:#4098de}tr:hover{background:#d9f4ff}div{overflow:auto;max-height:80vh;max-width:100vw;width:fit-content}</style><h1><a href=""https://rec.danmuji.org"">B站录播姬</a>弹幕XML文件</h1><p>本文件不支持在 IE 浏览器里预览,请使用 Chrome Firefox Edge 等浏览器。</p><p>文件用法参考文档 <a href=""https://rec.danmuji.org/user/danmaku/"">https://rec.danmuji.org/user/danmaku/</a></p><table><tr><td>录播姬版本</td><td><z:value-of select=""/i/BililiveRecorder/@version""/></td></tr><tr><td>房间号</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@roomid""/></td></tr><tr><td>主播名</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></td></tr><tr><td>录制开始时间</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@start_time""/></td></tr><tr><td><a href=""#d"">弹幕</a></td><td>共<z:value-of select=""count(/i/d)""/>条记录</td></tr><tr><td><a href=""#guard"">上船</a></td><td>共<z:value-of select=""count(/i/guard)""/>条记录</td></tr><tr><td><a href=""#sc"">SC</a></td><td>共<z:value-of select=""count(/i/sc)""/>条记录</td></tr><tr><td><a href=""#gift"">礼物</a></td><td>共<z:value-of select=""count(/i/gift)""/>条记录</td></tr></table><h2 id=""d"">弹幕</h2><div id=""dm""><table><tr><th>用户名</th><th>出现时间</th><th>用户ID</th><th>弹幕</th><th>参数</th></tr><z:for-each select=""/i/d""><tr><td><z:value-of select=""@user""/></td><td></td><td></td><td><z:value-of select="".""/></td><td><z:value-of select=""@p""/></td></tr></z:for-each></table></div><script>Array.from(document.querySelectorAll('#dm tr')).slice(1).map(t=>t.querySelectorAll('td')).forEach(t=>{let p=t[4].textContent.split(','),a=p[0];t[1].textContent=`${(Math.floor(a/60/60)+'').padStart(2,0)}:${(Math.floor(a/60%60)+'').padStart(2,0)}:${(a%60).toFixed(3).padStart(6,0)}`;t[2].innerHTML=`<a target=_blank rel=""nofollow noreferrer"" href=""https://space.bilibili.com/${p[6]}"">${p[6]}</a>`})</script><h2 id=""guard"">舰长购买</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>舰长等级</th><th>购买数量</th><th>出现时间</th></tr><z:for-each select=""/i/guard""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@level""/></td><td><z:value-of select=""@count""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""sc"">SuperChat 醒目留言</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>内容</th><th>显示时长</th><th>价格</th><th>出现时间</th></tr><z:for-each select=""/i/sc""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select="".""/></td><td><z:value-of select=""@time""/></td><td><z:value-of select=""@price""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""gift"">礼物</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>礼物名</th><th>礼物数量</th><th>出现时间</th></tr><z:for-each select=""/i/gift""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@giftname""/></td><td><z:value-of select=""@giftcount""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div></html></z:template></z:stylesheet>";
|
const string style = @"<z:stylesheet version=""1.0"" id=""s"" xml:id=""s"" xmlns:z=""http://www.w3.org/1999/XSL/Transform""><z:output method=""html""/><z:template match=""/""><html><meta name=""viewport"" content=""width=device-width""/><title>mikufans录播姬弹幕文件 - <z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></title><style>body{margin:0}h1,h2,p,table{margin-left:5px}table{border-spacing:0}td,th{border:1px solid grey;padding:1px}th{position:sticky;top:0;background:#4098de}tr:hover{background:#d9f4ff}div{overflow:auto;max-height:80vh;max-width:100vw;width:fit-content}</style><h1><a href=""https://rec.danmuji.org"">mikufans录播姬</a>弹幕XML文件</h1><p>本文件不支持在 IE 浏览器里预览,请使用 Chrome Firefox Edge 等浏览器。</p><p>文件用法参考文档 <a href=""https://rec.danmuji.org/user/danmaku/"">https://rec.danmuji.org/user/danmaku/</a></p><table><tr><td>录播姬版本</td><td><z:value-of select=""/i/BililiveRecorder/@version""/></td></tr><tr><td>房间号</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@roomid""/></td></tr><tr><td>主播名</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></td></tr><tr><td>录制开始时间</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@start_time""/></td></tr><tr><td><a href=""#d"">弹幕</a></td><td>共<z:value-of select=""count(/i/d)""/>条记录</td></tr><tr><td><a href=""#guard"">上船</a></td><td>共<z:value-of select=""count(/i/guard)""/>条记录</td></tr><tr><td><a href=""#sc"">SC</a></td><td>共<z:value-of select=""count(/i/sc)""/>条记录</td></tr><tr><td><a href=""#gift"">礼物</a></td><td>共<z:value-of select=""count(/i/gift)""/>条记录</td></tr></table><h2 id=""d"">弹幕</h2><div id=""dm""><table><tr><th>用户名</th><th>出现时间</th><th>用户ID</th><th>弹幕</th><th>参数</th></tr><z:for-each select=""/i/d""><tr><td><z:value-of select=""@user""/></td><td></td><td></td><td><z:value-of select="".""/></td><td><z:value-of select=""@p""/></td></tr></z:for-each></table></div><script>Array.from(document.querySelectorAll('#dm tr')).slice(1).map(t=>t.querySelectorAll('td')).forEach(t=>{let p=t[4].textContent.split(','),a=p[0];t[1].textContent=`${(Math.floor(a/60/60)+'').padStart(2,0)}:${(Math.floor(a/60%60)+'').padStart(2,0)}:${(a%60).toFixed(3).padStart(6,0)}`;t[2].innerHTML=`<a target=_blank rel=""nofollow noreferrer"" href=""https://space.bilibili.com/${p[6]}"">${p[6]}</a>`})</script><h2 id=""guard"">舰长购买</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>舰长等级</th><th>购买数量</th><th>出现时间</th></tr><z:for-each select=""/i/guard""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@level""/></td><td><z:value-of select=""@count""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""sc"">SuperChat 醒目留言</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>内容</th><th>显示时长</th><th>价格</th><th>出现时间</th></tr><z:for-each select=""/i/sc""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select="".""/></td><td><z:value-of select=""@time""/></td><td><z:value-of select=""@price""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""gift"">礼物</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>礼物名</th><th>礼物数量</th><th>出现时间</th></tr><z:for-each select=""/i/gift""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@giftname""/></td><td><z:value-of select=""@giftcount""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div></html></z:template></z:stylesheet>";
|
||||||
|
|
||||||
writer.WriteStartElement("BililiveRecorderXmlStyle");
|
writer.WriteStartElement("BililiveRecorderXmlStyle");
|
||||||
writer.WriteRaw(style);
|
writer.WriteRaw(style);
|
||||||
|
|
|
@ -238,7 +238,7 @@ namespace BililiveRecorder.Core.Recording
|
||||||
value["Title"] = (ScriptDataString)this.room.Title;
|
value["Title"] = (ScriptDataString)this.room.Title;
|
||||||
value["Artist"] = (ScriptDataString)$"{this.room.Name} ({this.room.RoomConfig.RoomId})";
|
value["Artist"] = (ScriptDataString)$"{this.room.Name} ({this.room.RoomConfig.RoomId})";
|
||||||
value["Comment"] = (ScriptDataString)
|
value["Comment"] = (ScriptDataString)
|
||||||
($"B站直播间 {this.room.RoomConfig.RoomId} 的直播录像\n" +
|
($"mikufans直播间 {this.room.RoomConfig.RoomId} 的直播录像\n" +
|
||||||
$"主播名: {this.room.Name}\n" +
|
$"主播名: {this.room.Name}\n" +
|
||||||
$"直播标题: {this.room.Title}\n" +
|
$"直播标题: {this.room.Title}\n" +
|
||||||
$"直播分区: {this.room.AreaNameParent}·{this.room.AreaNameChild}\n" +
|
$"直播分区: {this.room.AreaNameParent}·{this.room.AreaNameChild}\n" +
|
||||||
|
@ -246,11 +246,11 @@ namespace BililiveRecorder.Core.Recording
|
||||||
$"直播服务器:\n" +
|
$"直播服务器:\n" +
|
||||||
$"{this.streamHostFull}\n" +
|
$"{this.streamHostFull}\n" +
|
||||||
$"\n" +
|
$"\n" +
|
||||||
$"使用 B站录播姬 录制 https://rec.danmuji.org\n" +
|
$"使用 mikufans录播姬 录制 https://rec.danmuji.org\n" +
|
||||||
$"录播姬版本: {GitVersionInformation.FullSemVer}");
|
$"录播姬版本: {GitVersionInformation.FullSemVer}");
|
||||||
value["BililiveRecorder"] = new ScriptDataEcmaArray
|
value["BililiveRecorder"] = new ScriptDataEcmaArray
|
||||||
{
|
{
|
||||||
["RecordedBy"] = (ScriptDataString)"BililiveRecorder B站录播姬",
|
["RecordedBy"] = (ScriptDataString)"BililiveRecorder mikufans录播姬",
|
||||||
["RecordedFrom"] = (ScriptDataString)(this.streamHost ?? string.Empty),
|
["RecordedFrom"] = (ScriptDataString)(this.streamHost ?? string.Empty),
|
||||||
["StreamServers"] = (ScriptDataString)(this.streamHostFull ?? string.Empty),
|
["StreamServers"] = (ScriptDataString)(this.streamHostFull ?? string.Empty),
|
||||||
["RecorderVersion"] = (ScriptDataString)GitVersionInformation.InformationalVersion,
|
["RecorderVersion"] = (ScriptDataString)GitVersionInformation.InformationalVersion,
|
||||||
|
|
|
@ -113,7 +113,7 @@ namespace BililiveRecorder.Flv.Writer
|
||||||
this.textFile = new StreamWriter(this.targetProvider.CreateAccompanyingTextLogStream(), Encoding.UTF8);
|
this.textFile = new StreamWriter(this.targetProvider.CreateAccompanyingTextLogStream(), Encoding.UTF8);
|
||||||
|
|
||||||
await this.textFile.WriteLineAsync("此文件内记录了对应的视频文件中可能存在的问题").ConfigureAwait(false);
|
await this.textFile.WriteLineAsync("此文件内记录了对应的视频文件中可能存在的问题").ConfigureAwait(false);
|
||||||
await this.textFile.WriteAsync("B站录播姬 ").ConfigureAwait(false);
|
await this.textFile.WriteAsync("mikufans录播姬 ").ConfigureAwait(false);
|
||||||
await this.textFile.WriteLineAsync(GitVersionInformation.FullSemVer).ConfigureAwait(false);
|
await this.textFile.WriteLineAsync(GitVersionInformation.FullSemVer).ConfigureAwait(false);
|
||||||
await this.textFile.WriteLineAsync().ConfigureAwait(false);
|
await this.textFile.WriteLineAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,7 +132,7 @@ namespace BililiveRecorder.ToolBox.Tool.DanmakuMerger
|
||||||
writer.WriteStartDocument();
|
writer.WriteStartDocument();
|
||||||
writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"#s\"");
|
writer.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"#s\"");
|
||||||
writer.WriteStartElement("i");
|
writer.WriteStartElement("i");
|
||||||
writer.WriteComment("\nB站录播姬 " + GitVersionInformation.InformationalVersion + " 使用工具箱合并\nhttps://rec.danmuji.org/user/danmaku/\n本文件的弹幕信息兼容B站主站视频弹幕XML格式\n本XML自带样式可以在浏览器里打开(推荐使用Chrome)\n\nsc 为SuperChat\ngift为礼物\nguard为上船\n\nattribute \"raw\" 为原始数据\n");
|
writer.WriteComment("\nmikufans录播姬 " + GitVersionInformation.InformationalVersion + " 使用工具箱合并\nhttps://rec.danmuji.org/user/danmaku/\n本文件的弹幕信息兼容mikufans主站视频弹幕XML格式\n本XML自带样式可以在浏览器里打开(推荐使用Chrome)\n\nsc 为SuperChat\ngift为礼物\nguard为上船\n\nattribute \"raw\" 为原始数据\n");
|
||||||
writer.WriteElementString("chatserver", "chat.bilibili.com");
|
writer.WriteElementString("chatserver", "chat.bilibili.com");
|
||||||
writer.WriteElementString("chatid", "0");
|
writer.WriteElementString("chatid", "0");
|
||||||
writer.WriteElementString("mission", "0");
|
writer.WriteElementString("mission", "0");
|
||||||
|
@ -150,7 +150,7 @@ namespace BililiveRecorder.ToolBox.Tool.DanmakuMerger
|
||||||
recordInfo.WriteTo(writer);
|
recordInfo.WriteTo(writer);
|
||||||
|
|
||||||
// see BililiveRecorder.Core\Danmaku\BasicDanmakuWriter.cs
|
// see BililiveRecorder.Core\Danmaku\BasicDanmakuWriter.cs
|
||||||
const string style = @"<z:stylesheet version=""1.0"" id=""s"" xml:id=""s"" xmlns:z=""http://www.w3.org/1999/XSL/Transform""><z:output method=""html""/><z:template match=""/""><html><meta name=""viewport"" content=""width=device-width""/><title>B站录播姬弹幕文件 - <z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></title><style>body{margin:0}h1,h2,p,table{margin-left:5px}table{border-spacing:0}td,th{border:1px solid grey;padding:1px}th{position:sticky;top:0;background:#4098de}tr:hover{background:#d9f4ff}div{overflow:auto;max-height:80vh;max-width:100vw;width:fit-content}</style><h1><a href=""https://rec.danmuji.org"">B站录播姬</a>弹幕XML文件</h1><p>本文件不支持在 IE 浏览器里预览,请使用 Chrome Firefox Edge 等浏览器。</p><p>文件用法参考文档 <a href=""https://rec.danmuji.org/user/danmaku/"">https://rec.danmuji.org/user/danmaku/</a></p><table><tr><td>录播姬版本</td><td><z:value-of select=""/i/BililiveRecorder/@version""/></td></tr><tr><td>房间号</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@roomid""/></td></tr><tr><td>主播名</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></td></tr><tr><td>录制开始时间</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@start_time""/></td></tr><tr><td><a href=""#d"">弹幕</a></td><td>共<z:value-of select=""count(/i/d)""/>条记录</td></tr><tr><td><a href=""#guard"">上船</a></td><td>共<z:value-of select=""count(/i/guard)""/>条记录</td></tr><tr><td><a href=""#sc"">SC</a></td><td>共<z:value-of select=""count(/i/sc)""/>条记录</td></tr><tr><td><a href=""#gift"">礼物</a></td><td>共<z:value-of select=""count(/i/gift)""/>条记录</td></tr></table><h2 id=""d"">弹幕</h2><div id=""dm""><table><tr><th>用户名</th><th>出现时间</th><th>用户ID</th><th>弹幕</th><th>参数</th></tr><z:for-each select=""/i/d""><tr><td><z:value-of select=""@user""/></td><td></td><td></td><td><z:value-of select="".""/></td><td><z:value-of select=""@p""/></td></tr></z:for-each></table></div><script>Array.from(document.querySelectorAll('#dm tr')).slice(1).map(t=>t.querySelectorAll('td')).forEach(t=>{let p=t[4].textContent.split(','),a=p[0];t[1].textContent=`${(Math.floor(a/60/60)+'').padStart(2,0)}:${(Math.floor(a/60%60)+'').padStart(2,0)}:${(a%60).toFixed(3).padStart(6,0)}`;t[2].innerHTML=`<a target=_blank rel=""nofollow noreferrer"" href=""https://space.bilibili.com/${p[6]}"">${p[6]}</a>`})</script><h2 id=""guard"">舰长购买</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>舰长等级</th><th>购买数量</th><th>出现时间</th></tr><z:for-each select=""/i/guard""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@level""/></td><td><z:value-of select=""@count""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""sc"">SuperChat 醒目留言</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>内容</th><th>显示时长</th><th>价格</th><th>出现时间</th></tr><z:for-each select=""/i/sc""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select="".""/></td><td><z:value-of select=""@time""/></td><td><z:value-of select=""@price""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""gift"">礼物</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>礼物名</th><th>礼物数量</th><th>出现时间</th></tr><z:for-each select=""/i/gift""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@giftname""/></td><td><z:value-of select=""@giftcount""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div></html></z:template></z:stylesheet>";
|
const string style = @"<z:stylesheet version=""1.0"" id=""s"" xml:id=""s"" xmlns:z=""http://www.w3.org/1999/XSL/Transform""><z:output method=""html""/><z:template match=""/""><html><meta name=""viewport"" content=""width=device-width""/><title>mikufans录播姬弹幕文件 - <z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></title><style>body{margin:0}h1,h2,p,table{margin-left:5px}table{border-spacing:0}td,th{border:1px solid grey;padding:1px}th{position:sticky;top:0;background:#4098de}tr:hover{background:#d9f4ff}div{overflow:auto;max-height:80vh;max-width:100vw;width:fit-content}</style><h1><a href=""https://rec.danmuji.org"">mikufans录播姬</a>弹幕XML文件</h1><p>本文件不支持在 IE 浏览器里预览,请使用 Chrome Firefox Edge 等浏览器。</p><p>文件用法参考文档 <a href=""https://rec.danmuji.org/user/danmaku/"">https://rec.danmuji.org/user/danmaku/</a></p><table><tr><td>录播姬版本</td><td><z:value-of select=""/i/BililiveRecorder/@version""/></td></tr><tr><td>房间号</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@roomid""/></td></tr><tr><td>主播名</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@name""/></td></tr><tr><td>录制开始时间</td><td><z:value-of select=""/i/BililiveRecorderRecordInfo/@start_time""/></td></tr><tr><td><a href=""#d"">弹幕</a></td><td>共<z:value-of select=""count(/i/d)""/>条记录</td></tr><tr><td><a href=""#guard"">上船</a></td><td>共<z:value-of select=""count(/i/guard)""/>条记录</td></tr><tr><td><a href=""#sc"">SC</a></td><td>共<z:value-of select=""count(/i/sc)""/>条记录</td></tr><tr><td><a href=""#gift"">礼物</a></td><td>共<z:value-of select=""count(/i/gift)""/>条记录</td></tr></table><h2 id=""d"">弹幕</h2><div id=""dm""><table><tr><th>用户名</th><th>出现时间</th><th>用户ID</th><th>弹幕</th><th>参数</th></tr><z:for-each select=""/i/d""><tr><td><z:value-of select=""@user""/></td><td></td><td></td><td><z:value-of select="".""/></td><td><z:value-of select=""@p""/></td></tr></z:for-each></table></div><script>Array.from(document.querySelectorAll('#dm tr')).slice(1).map(t=>t.querySelectorAll('td')).forEach(t=>{let p=t[4].textContent.split(','),a=p[0];t[1].textContent=`${(Math.floor(a/60/60)+'').padStart(2,0)}:${(Math.floor(a/60%60)+'').padStart(2,0)}:${(a%60).toFixed(3).padStart(6,0)}`;t[2].innerHTML=`<a target=_blank rel=""nofollow noreferrer"" href=""https://space.bilibili.com/${p[6]}"">${p[6]}</a>`})</script><h2 id=""guard"">舰长购买</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>舰长等级</th><th>购买数量</th><th>出现时间</th></tr><z:for-each select=""/i/guard""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@level""/></td><td><z:value-of select=""@count""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""sc"">SuperChat 醒目留言</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>内容</th><th>显示时长</th><th>价格</th><th>出现时间</th></tr><z:for-each select=""/i/sc""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select="".""/></td><td><z:value-of select=""@time""/></td><td><z:value-of select=""@price""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div><h2 id=""gift"">礼物</h2><div><table><tr><th>用户名</th><th>用户ID</th><th>礼物名</th><th>礼物数量</th><th>出现时间</th></tr><z:for-each select=""/i/gift""><tr><td><z:value-of select=""@user""/></td><td><a rel=""nofollow noreferrer""><z:attribute name=""href""><z:text>https://space.bilibili.com/</z:text><z:value-of select=""@uid"" /></z:attribute><z:value-of select=""@uid""/></a></td><td><z:value-of select=""@giftname""/></td><td><z:value-of select=""@giftcount""/></td><td><z:value-of select=""@ts""/></td></tr></z:for-each></table></div></html></z:template></z:stylesheet>";
|
||||||
|
|
||||||
writer.WriteStartElement("BililiveRecorderXmlStyle");
|
writer.WriteStartElement("BililiveRecorderXmlStyle");
|
||||||
writer.WriteRaw(style);
|
writer.WriteRaw(style);
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>BililiveRecorder</id>
|
<id>BililiveRecorder</id>
|
||||||
<version>0.0.0</version>
|
<version>0.0.0</version>
|
||||||
<title>B站录播姬</title>
|
<title>录播姬</title>
|
||||||
<authors>Genteure</authors>
|
<authors>Genteure</authors>
|
||||||
<owners>Genteure</owners>
|
<owners>Genteure</owners>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>B站录播姬 安装包</description>
|
<description>录播姬 安装包</description>
|
||||||
<language>zh-CN</language>
|
<language>zh-CN</language>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
<RadioButton GroupName="NetworkTransportAllowedAddressFamily" Content="仅限 IPv6"
|
<RadioButton GroupName="NetworkTransportAllowedAddressFamily" Content="仅限 IPv6"
|
||||||
IsChecked="{Binding Path=NetworkTransportAllowedAddressFamily, Converter={StaticResource EnumToBooleanConverter},
|
IsChecked="{Binding Path=NetworkTransportAllowedAddressFamily, Converter={StaticResource EnumToBooleanConverter},
|
||||||
ConverterParameter={x:Static config:AllowedAddressFamily.Ipv6}}" />
|
ConverterParameter={x:Static config:AllowedAddressFamily.Ipv6}}" />
|
||||||
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasLiveApiHost}" Header="B站直播 API Host">
|
<c:SettingWithDefault IsSettingNotUsingDefault="{Binding HasLiveApiHost}" Header="mikufans直播 API Host">
|
||||||
<TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Text="{Binding LiveApiHost,UpdateSourceTrigger=LostFocus}"/>
|
<TextBox ui:TextBoxHelper.IsDeleteButtonVisible="False" Text="{Binding LiveApiHost,UpdateSourceTrigger=LostFocus}"/>
|
||||||
</c:SettingWithDefault>
|
</c:SettingWithDefault>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
此项影响的时间间隔是定时请求HTTP接口的间隔,
|
此项影响的时间间隔是定时请求HTTP接口的间隔,
|
||||||
主要目的是防止没有从弹幕服务器收到开播消息,
|
主要目的是防止没有从弹幕服务器收到开播消息,
|
||||||
所以此项不需要设置太短。<LineBreak/>
|
所以此项不需要设置太短。<LineBreak/>
|
||||||
时间间隔设置太短会被B站服务器屏蔽,导致无法录制。
|
时间间隔设置太短会被mikufans服务器屏蔽,导致无法录制。
|
||||||
</TextBlock>
|
</TextBlock>
|
||||||
</c:SettingWithDefault.ToolTip>
|
</c:SettingWithDefault.ToolTip>
|
||||||
<ui:NumberBox Minimum="60" Description="单位: 秒" SmallChange="10" Text="{Binding TimingCheckInterval,Delay=500}"/>
|
<ui:NumberBox Minimum="60" Description="单位: 秒" SmallChange="10" Text="{Binding TimingCheckInterval,Delay=500}"/>
|
||||||
|
|
|
@ -338,8 +338,8 @@ namespace BililiveRecorder.WPF.Pages
|
||||||
{
|
{
|
||||||
await Task.Delay(200);
|
await Task.Delay(200);
|
||||||
|
|
||||||
if (MessageBox.Show("录播姬会自动检测直播间状态,不需要手动刷新。\n录播姬主要通过接收B站服务器的推送来更新状态,直播服务器会给录播姬实时发送开播通知,延迟极低。\n\n" +
|
if (MessageBox.Show("录播姬会自动检测直播间状态,不需要手动刷新。\n录播姬主要通过接收mikufans服务器的推送来更新状态,直播服务器会给录播姬实时发送开播通知,延迟极低。\n\n" +
|
||||||
"频繁刷新直播间状态、短时间内大量请求B站直播 API 可能会导致你的 IP 被屏蔽,完全无法录播。\n\n本功能是特殊情况下确实需要刷新所有直播间信息时使用的。\n\n是否要刷新所有直播间的信息?\n(每个直播间会发送一个请求)", "B站录播姬", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
|
"频繁刷新直播间状态、短时间内大量请求mikufans直播 API 可能会导致你的 IP 被屏蔽,完全无法录播。\n\n本功能是特殊情况下确实需要刷新所有直播间信息时使用的。\n\n是否要刷新所有直播间的信息?\n(每个直播间会发送一个请求)", "mikufans录播姬", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
foreach (var room in rec.Rooms.ToArray())
|
foreach (var room in rec.Rooms.ToArray())
|
||||||
|
|
|
@ -107,7 +107,7 @@ namespace BililiveRecorder.WPF.Pages
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
_ = this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
|
_ = this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() =>
|
||||||
{
|
{
|
||||||
MessageBox.Show(Window.GetWindow(this), @"B站录播姬 安装成功!
|
MessageBox.Show(Window.GetWindow(this), @"录播姬 安装成功!
|
||||||
之后再运行请使用桌面或开始菜单里的快捷方式。
|
之后再运行请使用桌面或开始菜单里的快捷方式。
|
||||||
如需卸载,可在系统设置里操作。
|
如需卸载,可在系统设置里操作。
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,11 +5,11 @@ using System.Windows;
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("B站录播姬")]
|
[assembly: AssemblyTitle("mikufans录播姬")]
|
||||||
[assembly: AssemblyDescription("B站录播姬 by genteure")]
|
[assembly: AssemblyDescription("mikufans录播姬 by genteure")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("Genteure")]
|
[assembly: AssemblyCompany("Genteure")]
|
||||||
[assembly: AssemblyProduct("B站录播姬")]
|
[assembly: AssemblyProduct("mikufans录播姬")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2018-2023 Genteure")]
|
[assembly: AssemblyCopyright("Copyright © 2018-2023 Genteure")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
10
BililiveRecorder.WPF/Properties/Strings.Designer.cs
generated
10
BililiveRecorder.WPF/Properties/Strings.Designer.cs
generated
|
@ -98,7 +98,7 @@ namespace BililiveRecorder.WPF.Properties {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to B站录播姬.
|
/// Looks up a localized string similar to mikufans录播姬.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string About_Name {
|
public static string About_Name {
|
||||||
get {
|
get {
|
||||||
|
@ -206,7 +206,7 @@ namespace BililiveRecorder.WPF.Properties {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to 请输入B站直播房间号或直播间链接.
|
/// Looks up a localized string similar to 请输入mikufans直播房间号或直播间链接.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string AddRoomFailedDialog_ErrorText_InvalidInput {
|
public static string AddRoomFailedDialog_ErrorText_InvalidInput {
|
||||||
get {
|
get {
|
||||||
|
@ -894,7 +894,7 @@ namespace BililiveRecorder.WPF.Properties {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to 注:一般用户通常不需要也不应该修改这里的设置项。
|
/// Looks up a localized string similar to 注:一般用户通常不需要也不应该修改这里的设置项。
|
||||||
///对 Timing 的修改可能会导致被B站服务器屏蔽、不能及时开始录制等问题。.
|
///对 Timing 的修改可能会导致被mikufans服务器屏蔽、不能及时开始录制等问题。.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Settings_AdvancedPage_Warning {
|
public static string Settings_AdvancedPage_Warning {
|
||||||
get {
|
get {
|
||||||
|
@ -1212,7 +1212,7 @@ namespace BililiveRecorder.WPF.Properties {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to B站录播姬.
|
/// Looks up a localized string similar to mikufans录播姬.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string TaskbarIconControl_Title {
|
public static string TaskbarIconControl_Title {
|
||||||
get {
|
get {
|
||||||
|
@ -1685,7 +1685,7 @@ namespace BililiveRecorder.WPF.Properties {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to B站录播姬 {0}.
|
/// Looks up a localized string similar to mikufans录播姬 {0}.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Window_Title {
|
public static string Window_Title {
|
||||||
get {
|
get {
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Name" xml:space="preserve">
|
<data name="About_Name" xml:space="preserve">
|
||||||
<value>喵喵喵喵喵~</value>
|
<value>喵喵喵喵喵~</value>
|
||||||
<comment>Add "(B站录播姬)" after translation</comment>
|
<comment>Add "(mikufans录播姬)" after translation</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Project" xml:space="preserve">
|
<data name="About_Project" xml:space="preserve">
|
||||||
<value>喵喵喵喵</value>
|
<value>喵喵喵喵</value>
|
||||||
|
|
|
@ -131,8 +131,8 @@
|
||||||
This software is open source and licensed under the GNU General Public License Version 3 (GPLv3).</value>
|
This software is open source and licensed under the GNU General Public License Version 3 (GPLv3).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Name" xml:space="preserve">
|
<data name="About_Name" xml:space="preserve">
|
||||||
<value>BiliRec (B站录播姬)</value>
|
<value>BiliRec (mikufans录播姬)</value>
|
||||||
<comment>Add "(B站录播姬)" after translation</comment>
|
<comment>Add "(mikufans录播姬)" after translation</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Project" xml:space="preserve">
|
<data name="About_Project" xml:space="preserve">
|
||||||
<value>Project Homepage</value>
|
<value>Project Homepage</value>
|
||||||
|
@ -525,7 +525,7 @@ Will use default setting and disable user input when checked.</comment>
|
||||||
<value>BiliRec has been minimized to the system tray, left click the tray icon to unhide.</value>
|
<value>BiliRec has been minimized to the system tray, left click the tray icon to unhide.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
||||||
<value>BiliRec (B站录播姬)</value>
|
<value>BiliRec (mikufans录播姬)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
||||||
<value>There is a problem in the file that the can't be repaired automatically
|
<value>There is a problem in the file that the can't be repaired automatically
|
||||||
|
@ -687,7 +687,7 @@ Please analyze the original file, not the output of auto repair.</value>
|
||||||
<value>Toolbox</value>
|
<value>Toolbox</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Window_Title" xml:space="preserve">
|
<data name="Window_Title" xml:space="preserve">
|
||||||
<value>BiliRec (B站录播姬) {0}</value>
|
<value>BiliRec (mikufans录播姬) {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
||||||
<value>Browse...</value>
|
<value>Browse...</value>
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Name" xml:space="preserve">
|
<data name="About_Name" xml:space="preserve">
|
||||||
<value>ビリ生録画姫</value>
|
<value>ビリ生録画姫</value>
|
||||||
<comment>Add "(B站录播姬)" after translation</comment>
|
<comment>Add "(mikufans录播姬)" after translation</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Project" xml:space="preserve">
|
<data name="About_Project" xml:space="preserve">
|
||||||
<value>プロジェクトホーム</value>
|
<value>プロジェクトホーム</value>
|
||||||
|
@ -687,7 +687,7 @@ rec@danmuji.orgまでフィードバック受け付けます。
|
||||||
<value>ツールボックス</value>
|
<value>ツールボックス</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Window_Title" xml:space="preserve">
|
<data name="Window_Title" xml:space="preserve">
|
||||||
<value>ビリビリ録画機 (B站录播姬) {0}</value>
|
<value>ビリビリ録画機 (mikufans录播姬) {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
||||||
<value>参照...</value>
|
<value>参照...</value>
|
||||||
|
|
|
@ -131,8 +131,8 @@
|
||||||
本软件为开源软件,使用 GNU通用公共许可证第三版 (GPLv3) 授权。</value>
|
本软件为开源软件,使用 GNU通用公共许可证第三版 (GPLv3) 授权。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Name" xml:space="preserve">
|
<data name="About_Name" xml:space="preserve">
|
||||||
<value>B站录播姬</value>
|
<value>mikufans录播姬</value>
|
||||||
<comment>Add "(B站录播姬)" after translation</comment>
|
<comment>Add "(mikufans录播姬)" after translation</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Project" xml:space="preserve">
|
<data name="About_Project" xml:space="preserve">
|
||||||
<value>项目首页</value>
|
<value>项目首页</value>
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
<value>这个直播间已经被添加过了</value>
|
<value>这个直播间已经被添加过了</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddRoomFailedDialog_ErrorText_InvalidInput" xml:space="preserve">
|
<data name="AddRoomFailedDialog_ErrorText_InvalidInput" xml:space="preserve">
|
||||||
<value>请输入B站直播房间号或直播间链接</value>
|
<value>请输入mikufans直播房间号或直播间链接</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddRoomFailedDialog_ErrorText_RoomIdNegative" xml:space="preserve">
|
<data name="AddRoomFailedDialog_ErrorText_RoomIdNegative" xml:space="preserve">
|
||||||
<value>房间号不能是负数</value>
|
<value>房间号不能是负数</value>
|
||||||
|
@ -409,7 +409,7 @@
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_AdvancedPage_Warning" xml:space="preserve">
|
<data name="Settings_AdvancedPage_Warning" xml:space="preserve">
|
||||||
<value>注:一般用户通常不需要也不应该修改这里的设置项。
|
<value>注:一般用户通常不需要也不应该修改这里的设置项。
|
||||||
对 Timing 的修改可能会导致被B站服务器屏蔽、不能及时开始录制等问题。</value>
|
对 Timing 的修改可能会导致被mikufans服务器屏蔽、不能及时开始录制等问题。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_Danmaku_FlushInterval" xml:space="preserve">
|
<data name="Settings_Danmaku_FlushInterval" xml:space="preserve">
|
||||||
<value>触发写硬盘所需弹幕个数</value>
|
<value>触发写硬盘所需弹幕个数</value>
|
||||||
|
@ -525,7 +525,7 @@ Will use default setting and disable user input when checked.</comment>
|
||||||
<value>录播姬已最小化到托盘,左键单击图标恢复界面</value>
|
<value>录播姬已最小化到托盘,左键单击图标恢复界面</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
||||||
<value>B站录播姬</value>
|
<value>mikufans录播姬</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
||||||
<value>文件内存在录播姬无法自动修复的问题
|
<value>文件内存在录播姬无法自动修复的问题
|
||||||
|
@ -687,7 +687,7 @@ Will use default setting and disable user input when checked.</comment>
|
||||||
<value>工具箱</value>
|
<value>工具箱</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Window_Title" xml:space="preserve">
|
<data name="Window_Title" xml:space="preserve">
|
||||||
<value>B站录播姬 {0}</value>
|
<value>mikufans录播姬 {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
||||||
<value>浏览...</value>
|
<value>浏览...</value>
|
||||||
|
|
|
@ -131,8 +131,8 @@
|
||||||
本軟件為開源軟件,使用 GNU通用公共許可證第三版 (GPLv3) 授權。</value>
|
本軟件為開源軟件,使用 GNU通用公共許可證第三版 (GPLv3) 授權。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Name" xml:space="preserve">
|
<data name="About_Name" xml:space="preserve">
|
||||||
<value>B站錄播姬</value>
|
<value>mikufans錄播姬</value>
|
||||||
<comment>Add "(B站录播姬)" after translation</comment>
|
<comment>Add "(mikufans录播姬)" after translation</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="About_Project" xml:space="preserve">
|
<data name="About_Project" xml:space="preserve">
|
||||||
<value>項目首頁</value>
|
<value>項目首頁</value>
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
<value>這個直播間已經被添加過了</value>
|
<value>這個直播間已經被添加過了</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddRoomFailedDialog_ErrorText_InvalidInput" xml:space="preserve">
|
<data name="AddRoomFailedDialog_ErrorText_InvalidInput" xml:space="preserve">
|
||||||
<value>請輸入B站直播間房間號或直播間連結</value>
|
<value>請輸入mikufans直播間房間號或直播間連結</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddRoomFailedDialog_ErrorText_RoomIdNegative" xml:space="preserve">
|
<data name="AddRoomFailedDialog_ErrorText_RoomIdNegative" xml:space="preserve">
|
||||||
<value>房間號不能是負數</value>
|
<value>房間號不能是負數</value>
|
||||||
|
@ -386,7 +386,7 @@
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_AdvancedPage_Warning" xml:space="preserve">
|
<data name="Settings_AdvancedPage_Warning" xml:space="preserve">
|
||||||
<value>注:一般用戶通常不需要也不應該修改此處的設定。
|
<value>注:一般用戶通常不需要也不應該修改此處的設定。
|
||||||
對 Timing 的修改可能會導致被B站伺服器封鎖、不能及時開始錄製等問題。</value>
|
對 Timing 的修改可能會導致被mikufans伺服器封鎖、不能及時開始錄製等問題。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Settings_Danmaku_FlushInterval" xml:space="preserve">
|
<data name="Settings_Danmaku_FlushInterval" xml:space="preserve">
|
||||||
<value>觸發寫入硬碟所需彈幕數量</value>
|
<value>觸發寫入硬碟所需彈幕數量</value>
|
||||||
|
@ -490,7 +490,7 @@ Will use default setting and disable user input when checked.</comment>
|
||||||
<value>錄播姬已最小化到系統列,左鍵點選圖標即可恢復介面</value>
|
<value>錄播姬已最小化到系統列,左鍵點選圖標即可恢復介面</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
<data name="TaskbarIconControl_Title" xml:space="preserve">
|
||||||
<value>B站錄播姬</value>
|
<value>mikufans錄播姬</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
<data name="Toolbox_AutoFix_AnalyzeResult_ContainsUnrepairable" xml:space="preserve">
|
||||||
<value>文件內存在錄播姬無法自動修復的問題
|
<value>文件內存在錄播姬無法自動修復的問題
|
||||||
|
@ -641,7 +641,7 @@ Will use default setting and disable user input when checked.</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data name="Window_Title" xml:space="preserve">
|
<data name="Window_Title" xml:space="preserve">
|
||||||
<value>B站錄播姬 {0}</value>
|
<value>mikufans錄播姬 {0}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
<data name="WorkDirectorySelector_Browse" xml:space="preserve">
|
||||||
<value>瀏覽...</value>
|
<value>瀏覽...</value>
|
||||||
|
|
|
@ -151,7 +151,7 @@ namespace BililiveRecorder.WPF
|
||||||
|
|
||||||
var roomUrl = new Uri("https://live.bilibili.com/" + room.RoomConfig.RoomId);
|
var roomUrl = new Uri("https://live.bilibili.com/" + room.RoomConfig.RoomId);
|
||||||
var builder = new ToastContentBuilder()
|
var builder = new ToastContentBuilder()
|
||||||
.AddHeader("BililiveRecorder-StreamStarted", "B站录播姬开播通知", "")
|
.AddHeader("BililiveRecorder-StreamStarted", "录播姬开播通知", "")
|
||||||
.AddText(room.Name + " 开播了")
|
.AddText(room.Name + " 开播了")
|
||||||
.AddText(room.Title)
|
.AddText(room.Title)
|
||||||
.AddText($"{room.AreaNameParent} · {room.AreaNameChild}")
|
.AddText($"{room.AreaNameParent} · {room.AreaNameChild}")
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>{{ path | escape }} - B站录播姬文件浏览器</title>
|
<title>{{ path | escape }} - mikufans录播姬文件浏览器</title>
|
||||||
<style>
|
<style>
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
<meta content="width=device-width,initial-scale=1" name=viewport>
|
<meta content="width=device-width,initial-scale=1" name=viewport>
|
||||||
<title>401 未登录 - B站录播姬 __VERSION__</title>
|
<title>401 未登录 - mikufans录播姬 __VERSION__</title>
|
||||||
<style>*{text-align:center;}p{font-size:10px;}</style>
|
<style>*{text-align:center;}p{font-size:10px;}</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1 style="color:red;font-weight:bold;font-size:3em;">HTTP 401</h1>
|
<h1 style="color:red;font-weight:bold;font-size:3em;">HTTP 401</h1>
|
||||||
<p title="__FULL_VERSION__">
|
<p title="__FULL_VERSION__">
|
||||||
<a href="https://rec.danmuji.org">B站录播姬</a> __VERSION__
|
<a href="https://rec.danmuji.org">mikufans录播姬</a> __VERSION__
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset=utf-8>
|
<meta charset=utf-8>
|
||||||
<meta content="width=device-width,initial-scale=1" name=viewport>
|
<meta content="width=device-width,initial-scale=1" name=viewport>
|
||||||
<title>B站录播姬 __VERSION__</title>
|
<title>mikufans录播姬 __VERSION__</title>
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
font-family: -apple-system, "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Microsoft YaHei", SimHei, sans-serif;
|
font-family: -apple-system, "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Microsoft YaHei", SimHei, sans-serif;
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1 style="text-align: center">B站录播姬</h1>
|
<h1 style="text-align: center">mikufans录播姬</h1>
|
||||||
<p style="text-align: center;font-family:'Courier New', Courier, monospace;" title="__FULL_VERSION__">
|
<p style="text-align: center;font-family:'Courier New', Courier, monospace;" title="__FULL_VERSION__">
|
||||||
__VERSION__
|
__VERSION__
|
||||||
</p>
|
</p>
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<a href="./ui/">
|
<a href="./ui/">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<p class="name">B站录播姬 WebUI</p>
|
<p class="name">mikufans录播姬 WebUI</p>
|
||||||
<p class="path">/ui</p>
|
<p class="path">/ui</p>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="root">
|
<div id="root">
|
||||||
<div class="headerArea">
|
<div class="headerArea">
|
||||||
<h1 style="text-align:center;margin-bottom:0">B站录播姬播放器</h1>
|
<h1 style="text-align:center;margin-bottom:0">mikufans录播姬播放器</h1>
|
||||||
<p style="margin:0;text-align:center;">临时测试版</p>
|
<p style="margin:0;text-align:center;">临时测试版</p>
|
||||||
<div id="controlArea">
|
<div id="controlArea">
|
||||||
<label for="flvpath">FLV 视频文件路径: </label>
|
<label for="flvpath">FLV 视频文件路径: </label>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<img width="20%" src=".github/assets/logo.svg">
|
<img width="20%" src=".github/assets/logo.svg">
|
||||||
|
|
||||||
# B站录播姬
|
# mikufans录播姬
|
||||||
|
|
||||||
[![Build and Test](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml/badge.svg?branch=dev)](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml)
|
[![Build and Test](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml/badge.svg?branch=dev)](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml)
|
||||||
[![Version](https://img.shields.io/github/tag/Bililive/BililiveRecorder.svg?label=Version)](#)
|
[![Version](https://img.shields.io/github/tag/Bililive/BililiveRecorder.svg?label=Version)](#)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<img width="20%" src=".github/assets/logo.svg">
|
<img width="20%" src=".github/assets/logo.svg">
|
||||||
|
|
||||||
# B站录播姬
|
# mikufans录播姬
|
||||||
|
|
||||||
[![Build and Test](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml/badge.svg?branch=dev)](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml)
|
[![Build and Test](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml/badge.svg?branch=dev)](https://github.com/BililiveRecorder/BililiveRecorder/actions/workflows/build.yml)
|
||||||
[![Version](https://img.shields.io/github/tag/Bililive/BililiveRecorder.svg?label=Version)](#)
|
[![Version](https://img.shields.io/github/tag/Bililive/BililiveRecorder.svg?label=Version)](#)
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
- 使用简单
|
- 使用简单
|
||||||
- 主播开播后自动开始录制
|
- 主播开播后自动开始录制
|
||||||
- 同时录制多个直播间
|
- 同时录制多个直播间
|
||||||
- 自动修复B站直播服务器导致的各种问题
|
- 自动修复mikufans直播服务器导致的各种问题
|
||||||
- 工具箱模式,用于修复旧版录播姬或其他软件录的视频文件<sup>1</sup>
|
- 工具箱模式,用于修复旧版录播姬或其他软件录的视频文件<sup>1</sup>
|
||||||
- 纯 C# 实现,无 ffmpeg 等 native 依赖<sup>2</sup>
|
- 纯 C# 实现,无 ffmpeg 等 native 依赖<sup>2</sup>
|
||||||
- 开源!
|
- 开源!
|
||||||
|
@ -92,4 +92,4 @@ graph BT
|
||||||
|
|
||||||
- [Adobe Flash Video File Format Specification 10.1.2.01.pdf](https://www.adobe.com/content/dam/acom/en/devnet/flv/video_file_format_spec_v10_1.pdf)
|
- [Adobe Flash Video File Format Specification 10.1.2.01.pdf](https://www.adobe.com/content/dam/acom/en/devnet/flv/video_file_format_spec_v10_1.pdf)
|
||||||
- [coreyauger/flv-streamer-2-file](https://github.com/coreyauger/flv-streamer-2-file) 曾在本项目开发早期作为参考
|
- [coreyauger/flv-streamer-2-file](https://github.com/coreyauger/flv-streamer-2-file) 曾在本项目开发早期作为参考
|
||||||
- [zyzsdy/biliroku](https://github.com/zyzsdy/biliroku): (大概是)第一个B站直播录播工具
|
- [zyzsdy/biliroku](https://github.com/zyzsdy/biliroku): (大概是)第一个mikufans直播录播工具
|
||||||
|
|
|
@ -154,8 +154,8 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TimingApiTimeout": {
|
"TimingApiTimeout": {
|
||||||
"description": "请求B站API超时时间 毫秒\n默认: 10000",
|
"description": "请求mikufansAPI超时时间 毫秒\n默认: 10000",
|
||||||
"markdownDescription": "请求B站API超时时间 毫秒 \n默认: `10000 `\n\n",
|
"markdownDescription": "请求mikufansAPI超时时间 毫秒 \n默认: `10000 `\n\n",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -162,7 +162,7 @@ export const data: Array<ConfigEntry> = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "TimingApiTimeout",
|
id: "TimingApiTimeout",
|
||||||
name: "请求B站API超时时间 毫秒",
|
name: "请求mikufansAPI超时时间 毫秒",
|
||||||
type: "uint",
|
type: "uint",
|
||||||
configType: "globalOnly",
|
configType: "globalOnly",
|
||||||
advancedConfig: true,
|
advancedConfig: true,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user