// ****************************** // GENERATED CODE, DO NOT EDIT MANUALLY. // SEE /config_gen/README.md // ****************************** using System.ComponentModel; using HierarchicalPropertyDefault; using Newtonsoft.Json; #nullable enable namespace BililiveRecorder.Core.Config.V3 { [JsonObject(MemberSerialization.OptIn)] public sealed partial class RoomConfig : HierarchicalObject { /// /// 房间号 /// public int RoomId { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRoomId { get => this.GetPropertyHasValue(nameof(this.RoomId)); set => this.SetPropertyHasValue(value, nameof(this.RoomId)); } [JsonProperty(nameof(RoomId)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRoomId { get => this.GetPropertyValueOptional(nameof(this.RoomId)); set => this.SetPropertyValueOptional(value, nameof(this.RoomId)); } /// /// 自动录制 /// public bool AutoRecord { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasAutoRecord { get => this.GetPropertyHasValue(nameof(this.AutoRecord)); set => this.SetPropertyHasValue(value, nameof(this.AutoRecord)); } [JsonProperty(nameof(AutoRecord)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalAutoRecord { get => this.GetPropertyValueOptional(nameof(this.AutoRecord)); set => this.SetPropertyValueOptional(value, nameof(this.AutoRecord)); } /// /// 录制模式 /// public RecordMode RecordMode { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordMode { get => this.GetPropertyHasValue(nameof(this.RecordMode)); set => this.SetPropertyHasValue(value, nameof(this.RecordMode)); } [JsonProperty(nameof(RecordMode)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordMode { get => this.GetPropertyValueOptional(nameof(this.RecordMode)); set => this.SetPropertyValueOptional(value, nameof(this.RecordMode)); } /// /// 自动分段模式 /// public CuttingMode CuttingMode { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasCuttingMode { get => this.GetPropertyHasValue(nameof(this.CuttingMode)); set => this.SetPropertyHasValue(value, nameof(this.CuttingMode)); } [JsonProperty(nameof(CuttingMode)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalCuttingMode { get => this.GetPropertyValueOptional(nameof(this.CuttingMode)); set => this.SetPropertyValueOptional(value, nameof(this.CuttingMode)); } /// /// 自动分段数值 /// public uint CuttingNumber { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasCuttingNumber { get => this.GetPropertyHasValue(nameof(this.CuttingNumber)); set => this.SetPropertyHasValue(value, nameof(this.CuttingNumber)); } [JsonProperty(nameof(CuttingNumber)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalCuttingNumber { get => this.GetPropertyValueOptional(nameof(this.CuttingNumber)); set => this.SetPropertyValueOptional(value, nameof(this.CuttingNumber)); } /// /// 弹幕录制 /// public bool RecordDanmaku { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmaku { get => this.GetPropertyHasValue(nameof(this.RecordDanmaku)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmaku)); } [JsonProperty(nameof(RecordDanmaku)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmaku { get => this.GetPropertyValueOptional(nameof(this.RecordDanmaku)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmaku)); } /// /// 弹幕录制-原始数据 /// public bool RecordDanmakuRaw { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuRaw { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuRaw)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuRaw)); } [JsonProperty(nameof(RecordDanmakuRaw)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuRaw { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuRaw)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuRaw)); } /// /// 弹幕录制-SuperChat /// public bool RecordDanmakuSuperChat { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuSuperChat { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuSuperChat)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuSuperChat)); } [JsonProperty(nameof(RecordDanmakuSuperChat)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuSuperChat { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuSuperChat)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuSuperChat)); } /// /// 弹幕录制-礼物 /// public bool RecordDanmakuGift { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuGift { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuGift)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuGift)); } [JsonProperty(nameof(RecordDanmakuGift)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuGift { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuGift)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuGift)); } /// /// 弹幕录制-上船 /// public bool RecordDanmakuGuard { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuGuard { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuGuard)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuGuard)); } [JsonProperty(nameof(RecordDanmakuGuard)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuGuard { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuGuard)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuGuard)); } /// /// 保存直播封面 /// public bool SaveStreamCover { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasSaveStreamCover { get => this.GetPropertyHasValue(nameof(this.SaveStreamCover)); set => this.SetPropertyHasValue(value, nameof(this.SaveStreamCover)); } [JsonProperty(nameof(SaveStreamCover)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalSaveStreamCover { get => this.GetPropertyValueOptional(nameof(this.SaveStreamCover)); set => this.SetPropertyValueOptional(value, nameof(this.SaveStreamCover)); } /// /// 直播画质 /// public string? RecordingQuality { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordingQuality { get => this.GetPropertyHasValue(nameof(this.RecordingQuality)); set => this.SetPropertyHasValue(value, nameof(this.RecordingQuality)); } [JsonProperty(nameof(RecordingQuality)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordingQuality { get => this.GetPropertyValueOptional(nameof(this.RecordingQuality)); set => this.SetPropertyValueOptional(value, nameof(this.RecordingQuality)); } /// /// FLV修复-检测到可能缺少数据时分段 /// public bool FlvProcessorSplitOnScriptTag { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasFlvProcessorSplitOnScriptTag { get => this.GetPropertyHasValue(nameof(this.FlvProcessorSplitOnScriptTag)); set => this.SetPropertyHasValue(value, nameof(this.FlvProcessorSplitOnScriptTag)); } [JsonProperty(nameof(FlvProcessorSplitOnScriptTag)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalFlvProcessorSplitOnScriptTag { get => this.GetPropertyValueOptional(nameof(this.FlvProcessorSplitOnScriptTag)); set => this.SetPropertyValueOptional(value, nameof(this.FlvProcessorSplitOnScriptTag)); } /// /// 录制文件名模板 /// public string? FileNameRecordTemplate => this.GetPropertyValue(); /// /// WebhookV1 /// public string? WebHookUrls => this.GetPropertyValue(); /// /// WebhookV2 /// public string? WebHookUrlsV2 => this.GetPropertyValue(); /// /// 桌面版在界面显示标题和分区 /// public bool WpfShowTitleAndArea => this.GetPropertyValue(); /// /// 桌面版开播时弹出系统通知 /// public bool WpfNotifyStreamStart => this.GetPropertyValue(); /// /// Cookie /// public string? Cookie => this.GetPropertyValue(); /// /// API Host /// public string? LiveApiHost => this.GetPropertyValue(); /// /// 主动检查时间间隔 秒 /// public uint TimingCheckInterval => this.GetPropertyValue(); /// /// 请求B站API超时时间 毫秒 /// public uint TimingApiTimeout => this.GetPropertyValue(); /// /// 录制断开重连时间间隔 毫秒 /// public uint TimingStreamRetry => this.GetPropertyValue(); /// /// 录制无指定画质重连时间间隔 秒 /// public uint TimingStreamRetryNoQn => this.GetPropertyValue(); /// /// 连接直播服务器超时时间 毫秒 /// public uint TimingStreamConnect => this.GetPropertyValue(); /// /// 弹幕服务器重连时间间隔 毫秒 /// public uint TimingDanmakuRetry => this.GetPropertyValue(); /// /// 最大未收到直播数据时间 毫秒 /// public uint TimingWatchdogTimeout => this.GetPropertyValue(); /// /// 触发刷新弹幕写入缓冲的个数 /// public uint RecordDanmakuFlushInterval => this.GetPropertyValue(); /// /// 使用的弹幕服务器传输协议 /// public DanmakuTransportMode DanmakuTransport => this.GetPropertyValue(); /// /// 是否使用系统代理 /// public bool NetworkTransportUseSystemProxy => this.GetPropertyValue(); /// /// 允许使用的 IP 网络类型 /// public AllowedAddressFamily NetworkTransportAllowedAddressFamily => this.GetPropertyValue(); /// /// 自定义脚本 /// public string? UserScript => this.GetPropertyValue(); } [JsonObject(MemberSerialization.OptIn)] public sealed partial class GlobalConfig : HierarchicalObject { /// /// 录制模式 /// public RecordMode RecordMode { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordMode { get => this.GetPropertyHasValue(nameof(this.RecordMode)); set => this.SetPropertyHasValue(value, nameof(this.RecordMode)); } [JsonProperty(nameof(RecordMode)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordMode { get => this.GetPropertyValueOptional(nameof(this.RecordMode)); set => this.SetPropertyValueOptional(value, nameof(this.RecordMode)); } /// /// 自动分段模式 /// public CuttingMode CuttingMode { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasCuttingMode { get => this.GetPropertyHasValue(nameof(this.CuttingMode)); set => this.SetPropertyHasValue(value, nameof(this.CuttingMode)); } [JsonProperty(nameof(CuttingMode)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalCuttingMode { get => this.GetPropertyValueOptional(nameof(this.CuttingMode)); set => this.SetPropertyValueOptional(value, nameof(this.CuttingMode)); } /// /// 自动分段数值 /// public uint CuttingNumber { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasCuttingNumber { get => this.GetPropertyHasValue(nameof(this.CuttingNumber)); set => this.SetPropertyHasValue(value, nameof(this.CuttingNumber)); } [JsonProperty(nameof(CuttingNumber)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalCuttingNumber { get => this.GetPropertyValueOptional(nameof(this.CuttingNumber)); set => this.SetPropertyValueOptional(value, nameof(this.CuttingNumber)); } /// /// 弹幕录制 /// public bool RecordDanmaku { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmaku { get => this.GetPropertyHasValue(nameof(this.RecordDanmaku)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmaku)); } [JsonProperty(nameof(RecordDanmaku)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmaku { get => this.GetPropertyValueOptional(nameof(this.RecordDanmaku)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmaku)); } /// /// 弹幕录制-原始数据 /// public bool RecordDanmakuRaw { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuRaw { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuRaw)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuRaw)); } [JsonProperty(nameof(RecordDanmakuRaw)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuRaw { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuRaw)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuRaw)); } /// /// 弹幕录制-SuperChat /// public bool RecordDanmakuSuperChat { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuSuperChat { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuSuperChat)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuSuperChat)); } [JsonProperty(nameof(RecordDanmakuSuperChat)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuSuperChat { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuSuperChat)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuSuperChat)); } /// /// 弹幕录制-礼物 /// public bool RecordDanmakuGift { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuGift { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuGift)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuGift)); } [JsonProperty(nameof(RecordDanmakuGift)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuGift { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuGift)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuGift)); } /// /// 弹幕录制-上船 /// public bool RecordDanmakuGuard { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuGuard { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuGuard)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuGuard)); } [JsonProperty(nameof(RecordDanmakuGuard)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuGuard { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuGuard)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuGuard)); } /// /// 保存直播封面 /// public bool SaveStreamCover { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasSaveStreamCover { get => this.GetPropertyHasValue(nameof(this.SaveStreamCover)); set => this.SetPropertyHasValue(value, nameof(this.SaveStreamCover)); } [JsonProperty(nameof(SaveStreamCover)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalSaveStreamCover { get => this.GetPropertyValueOptional(nameof(this.SaveStreamCover)); set => this.SetPropertyValueOptional(value, nameof(this.SaveStreamCover)); } /// /// 直播画质 /// public string? RecordingQuality { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordingQuality { get => this.GetPropertyHasValue(nameof(this.RecordingQuality)); set => this.SetPropertyHasValue(value, nameof(this.RecordingQuality)); } [JsonProperty(nameof(RecordingQuality)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordingQuality { get => this.GetPropertyValueOptional(nameof(this.RecordingQuality)); set => this.SetPropertyValueOptional(value, nameof(this.RecordingQuality)); } /// /// 录制文件名模板 /// public string? FileNameRecordTemplate { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasFileNameRecordTemplate { get => this.GetPropertyHasValue(nameof(this.FileNameRecordTemplate)); set => this.SetPropertyHasValue(value, nameof(this.FileNameRecordTemplate)); } [JsonProperty(nameof(FileNameRecordTemplate)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalFileNameRecordTemplate { get => this.GetPropertyValueOptional(nameof(this.FileNameRecordTemplate)); set => this.SetPropertyValueOptional(value, nameof(this.FileNameRecordTemplate)); } /// /// FLV修复-检测到可能缺少数据时分段 /// public bool FlvProcessorSplitOnScriptTag { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasFlvProcessorSplitOnScriptTag { get => this.GetPropertyHasValue(nameof(this.FlvProcessorSplitOnScriptTag)); set => this.SetPropertyHasValue(value, nameof(this.FlvProcessorSplitOnScriptTag)); } [JsonProperty(nameof(FlvProcessorSplitOnScriptTag)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalFlvProcessorSplitOnScriptTag { get => this.GetPropertyValueOptional(nameof(this.FlvProcessorSplitOnScriptTag)); set => this.SetPropertyValueOptional(value, nameof(this.FlvProcessorSplitOnScriptTag)); } /// /// WebhookV1 /// public string? WebHookUrls { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasWebHookUrls { get => this.GetPropertyHasValue(nameof(this.WebHookUrls)); set => this.SetPropertyHasValue(value, nameof(this.WebHookUrls)); } [JsonProperty(nameof(WebHookUrls)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalWebHookUrls { get => this.GetPropertyValueOptional(nameof(this.WebHookUrls)); set => this.SetPropertyValueOptional(value, nameof(this.WebHookUrls)); } /// /// WebhookV2 /// public string? WebHookUrlsV2 { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasWebHookUrlsV2 { get => this.GetPropertyHasValue(nameof(this.WebHookUrlsV2)); set => this.SetPropertyHasValue(value, nameof(this.WebHookUrlsV2)); } [JsonProperty(nameof(WebHookUrlsV2)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalWebHookUrlsV2 { get => this.GetPropertyValueOptional(nameof(this.WebHookUrlsV2)); set => this.SetPropertyValueOptional(value, nameof(this.WebHookUrlsV2)); } /// /// 桌面版在界面显示标题和分区 /// public bool WpfShowTitleAndArea { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasWpfShowTitleAndArea { get => this.GetPropertyHasValue(nameof(this.WpfShowTitleAndArea)); set => this.SetPropertyHasValue(value, nameof(this.WpfShowTitleAndArea)); } [JsonProperty(nameof(WpfShowTitleAndArea)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalWpfShowTitleAndArea { get => this.GetPropertyValueOptional(nameof(this.WpfShowTitleAndArea)); set => this.SetPropertyValueOptional(value, nameof(this.WpfShowTitleAndArea)); } /// /// 桌面版开播时弹出系统通知 /// public bool WpfNotifyStreamStart { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasWpfNotifyStreamStart { get => this.GetPropertyHasValue(nameof(this.WpfNotifyStreamStart)); set => this.SetPropertyHasValue(value, nameof(this.WpfNotifyStreamStart)); } [JsonProperty(nameof(WpfNotifyStreamStart)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalWpfNotifyStreamStart { get => this.GetPropertyValueOptional(nameof(this.WpfNotifyStreamStart)); set => this.SetPropertyValueOptional(value, nameof(this.WpfNotifyStreamStart)); } /// /// Cookie /// public string? Cookie { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasCookie { get => this.GetPropertyHasValue(nameof(this.Cookie)); set => this.SetPropertyHasValue(value, nameof(this.Cookie)); } [JsonProperty(nameof(Cookie)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalCookie { get => this.GetPropertyValueOptional(nameof(this.Cookie)); set => this.SetPropertyValueOptional(value, nameof(this.Cookie)); } /// /// API Host /// public string? LiveApiHost { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasLiveApiHost { get => this.GetPropertyHasValue(nameof(this.LiveApiHost)); set => this.SetPropertyHasValue(value, nameof(this.LiveApiHost)); } [JsonProperty(nameof(LiveApiHost)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalLiveApiHost { get => this.GetPropertyValueOptional(nameof(this.LiveApiHost)); set => this.SetPropertyValueOptional(value, nameof(this.LiveApiHost)); } /// /// 主动检查时间间隔 秒 /// public uint TimingCheckInterval { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingCheckInterval { get => this.GetPropertyHasValue(nameof(this.TimingCheckInterval)); set => this.SetPropertyHasValue(value, nameof(this.TimingCheckInterval)); } [JsonProperty(nameof(TimingCheckInterval)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingCheckInterval { get => this.GetPropertyValueOptional(nameof(this.TimingCheckInterval)); set => this.SetPropertyValueOptional(value, nameof(this.TimingCheckInterval)); } /// /// 请求B站API超时时间 毫秒 /// public uint TimingApiTimeout { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingApiTimeout { get => this.GetPropertyHasValue(nameof(this.TimingApiTimeout)); set => this.SetPropertyHasValue(value, nameof(this.TimingApiTimeout)); } [JsonProperty(nameof(TimingApiTimeout)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingApiTimeout { get => this.GetPropertyValueOptional(nameof(this.TimingApiTimeout)); set => this.SetPropertyValueOptional(value, nameof(this.TimingApiTimeout)); } /// /// 录制断开重连时间间隔 毫秒 /// public uint TimingStreamRetry { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingStreamRetry { get => this.GetPropertyHasValue(nameof(this.TimingStreamRetry)); set => this.SetPropertyHasValue(value, nameof(this.TimingStreamRetry)); } [JsonProperty(nameof(TimingStreamRetry)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingStreamRetry { get => this.GetPropertyValueOptional(nameof(this.TimingStreamRetry)); set => this.SetPropertyValueOptional(value, nameof(this.TimingStreamRetry)); } /// /// 录制无指定画质重连时间间隔 秒 /// public uint TimingStreamRetryNoQn { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingStreamRetryNoQn { get => this.GetPropertyHasValue(nameof(this.TimingStreamRetryNoQn)); set => this.SetPropertyHasValue(value, nameof(this.TimingStreamRetryNoQn)); } [JsonProperty(nameof(TimingStreamRetryNoQn)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingStreamRetryNoQn { get => this.GetPropertyValueOptional(nameof(this.TimingStreamRetryNoQn)); set => this.SetPropertyValueOptional(value, nameof(this.TimingStreamRetryNoQn)); } /// /// 连接直播服务器超时时间 毫秒 /// public uint TimingStreamConnect { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingStreamConnect { get => this.GetPropertyHasValue(nameof(this.TimingStreamConnect)); set => this.SetPropertyHasValue(value, nameof(this.TimingStreamConnect)); } [JsonProperty(nameof(TimingStreamConnect)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingStreamConnect { get => this.GetPropertyValueOptional(nameof(this.TimingStreamConnect)); set => this.SetPropertyValueOptional(value, nameof(this.TimingStreamConnect)); } /// /// 弹幕服务器重连时间间隔 毫秒 /// public uint TimingDanmakuRetry { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingDanmakuRetry { get => this.GetPropertyHasValue(nameof(this.TimingDanmakuRetry)); set => this.SetPropertyHasValue(value, nameof(this.TimingDanmakuRetry)); } [JsonProperty(nameof(TimingDanmakuRetry)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingDanmakuRetry { get => this.GetPropertyValueOptional(nameof(this.TimingDanmakuRetry)); set => this.SetPropertyValueOptional(value, nameof(this.TimingDanmakuRetry)); } /// /// 最大未收到直播数据时间 毫秒 /// public uint TimingWatchdogTimeout { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasTimingWatchdogTimeout { get => this.GetPropertyHasValue(nameof(this.TimingWatchdogTimeout)); set => this.SetPropertyHasValue(value, nameof(this.TimingWatchdogTimeout)); } [JsonProperty(nameof(TimingWatchdogTimeout)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalTimingWatchdogTimeout { get => this.GetPropertyValueOptional(nameof(this.TimingWatchdogTimeout)); set => this.SetPropertyValueOptional(value, nameof(this.TimingWatchdogTimeout)); } /// /// 触发刷新弹幕写入缓冲的个数 /// public uint RecordDanmakuFlushInterval { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasRecordDanmakuFlushInterval { get => this.GetPropertyHasValue(nameof(this.RecordDanmakuFlushInterval)); set => this.SetPropertyHasValue(value, nameof(this.RecordDanmakuFlushInterval)); } [JsonProperty(nameof(RecordDanmakuFlushInterval)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalRecordDanmakuFlushInterval { get => this.GetPropertyValueOptional(nameof(this.RecordDanmakuFlushInterval)); set => this.SetPropertyValueOptional(value, nameof(this.RecordDanmakuFlushInterval)); } /// /// 使用的弹幕服务器传输协议 /// public DanmakuTransportMode DanmakuTransport { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasDanmakuTransport { get => this.GetPropertyHasValue(nameof(this.DanmakuTransport)); set => this.SetPropertyHasValue(value, nameof(this.DanmakuTransport)); } [JsonProperty(nameof(DanmakuTransport)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalDanmakuTransport { get => this.GetPropertyValueOptional(nameof(this.DanmakuTransport)); set => this.SetPropertyValueOptional(value, nameof(this.DanmakuTransport)); } /// /// 是否使用系统代理 /// public bool NetworkTransportUseSystemProxy { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasNetworkTransportUseSystemProxy { get => this.GetPropertyHasValue(nameof(this.NetworkTransportUseSystemProxy)); set => this.SetPropertyHasValue(value, nameof(this.NetworkTransportUseSystemProxy)); } [JsonProperty(nameof(NetworkTransportUseSystemProxy)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalNetworkTransportUseSystemProxy { get => this.GetPropertyValueOptional(nameof(this.NetworkTransportUseSystemProxy)); set => this.SetPropertyValueOptional(value, nameof(this.NetworkTransportUseSystemProxy)); } /// /// 允许使用的 IP 网络类型 /// public AllowedAddressFamily NetworkTransportAllowedAddressFamily { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasNetworkTransportAllowedAddressFamily { get => this.GetPropertyHasValue(nameof(this.NetworkTransportAllowedAddressFamily)); set => this.SetPropertyHasValue(value, nameof(this.NetworkTransportAllowedAddressFamily)); } [JsonProperty(nameof(NetworkTransportAllowedAddressFamily)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalNetworkTransportAllowedAddressFamily { get => this.GetPropertyValueOptional(nameof(this.NetworkTransportAllowedAddressFamily)); set => this.SetPropertyValueOptional(value, nameof(this.NetworkTransportAllowedAddressFamily)); } /// /// 自定义脚本 /// public string? UserScript { get => this.GetPropertyValue(); set => this.SetPropertyValue(value); } public bool HasUserScript { get => this.GetPropertyHasValue(nameof(this.UserScript)); set => this.SetPropertyHasValue(value, nameof(this.UserScript)); } [JsonProperty(nameof(UserScript)), EditorBrowsable(EditorBrowsableState.Never)] public Optional OptionalUserScript { get => this.GetPropertyValueOptional(nameof(this.UserScript)); set => this.SetPropertyValueOptional(value, nameof(this.UserScript)); } } public sealed partial class DefaultConfig { public static readonly DefaultConfig Instance = new DefaultConfig(); private DefaultConfig() { } public RecordMode RecordMode => RecordMode.Standard; public CuttingMode CuttingMode => CuttingMode.Disabled; public uint CuttingNumber => 100; public bool RecordDanmaku => false; public bool RecordDanmakuRaw => false; public bool RecordDanmakuSuperChat => true; public bool RecordDanmakuGift => false; public bool RecordDanmakuGuard => true; public bool SaveStreamCover => false; public string RecordingQuality => @"10000"; public string FileNameRecordTemplate => @"{{ roomId }}-{{ name }}/录制-{{ roomId }}-{{ ""now"" | time_zone: ""Asia/Shanghai"" | format_date: ""yyyyMMdd-HHmmss-fff"" }}-{{ title }}.flv"; public bool FlvProcessorSplitOnScriptTag => false; public string WebHookUrls => @""; public string WebHookUrlsV2 => @""; public bool WpfShowTitleAndArea => true; public bool WpfNotifyStreamStart => false; public string Cookie => @""; public string LiveApiHost => @"https://api.live.bilibili.com"; public uint TimingCheckInterval => 600; public uint TimingApiTimeout => 10000; public uint TimingStreamRetry => 6000; public uint TimingStreamRetryNoQn => 90; public uint TimingStreamConnect => 5000; public uint TimingDanmakuRetry => 9000; public uint TimingWatchdogTimeout => 10000; public uint RecordDanmakuFlushInterval => 20; public DanmakuTransportMode DanmakuTransport => DanmakuTransportMode.Random; public bool NetworkTransportUseSystemProxy => false; public AllowedAddressFamily NetworkTransportAllowedAddressFamily => AllowedAddressFamily.Any; public string UserScript => @""; } }