feat: improve recording automation and task workflows

This commit is contained in:
2026-04-23 23:18:11 +08:00
parent 1c892259a9
commit 23ead56781
88 changed files with 9579 additions and 1581 deletions
+70 -4
View File
@@ -40,8 +40,36 @@ public class LiveRoom
public string? AnchorName { get; private set; }
public string? AnchorId { get; private set; }
public string? AvatarUrl { get; private set; }
public string? CoverUrl { get; private set; }
public string? PreferredQualityOverride { get; private set; }
public RecordOutputFormat? OutputFormatOverride { get; private set; }
public RecordSaveMode? SaveModeOverride { get; private set; }
public RecordingTemplateType? RecordingTemplateOverride { get; private set; }
public int? SegmentDurationMinutesOverride { get; private set; }
public bool? EnableAutoReconnectOverride { get; private set; }
public int? ReconnectDelayMaxSecondsOverride { get; private set; }
public int? ReadWriteTimeoutMillisecondsOverride { get; private set; }
public bool? EnableDanmakuRecordingOverride { get; private set; }
public bool? DanmakuIncludeNonChatEventsOverride { get; private set; }
public int? DanmakuMinPollIntervalMillisecondsOverride { get; private set; }
public int? DanmakuRetryDelayMaxSecondsOverride { get; private set; }
public bool IsEnabled { get; private set; }
public bool HasSentLiveNotificationForCurrentSession { get; private set; }
@@ -69,11 +97,13 @@ public class LiveRoom
UpdatedAt = updatedAt;
}
public void UpdateMetadata(string? title, string? anchorName, string? coverUrl, DateTimeOffset updatedAt)
public void UpdateMetadata(string? title, string? anchorName, string? anchorId, string? avatarUrl, string? coverUrl, DateTimeOffset updatedAt)
{
Title = title;
AnchorName = anchorName;
CoverUrl = coverUrl;
Title = PreferIncomingValue(title, Title);
AnchorName = PreferIncomingValue(anchorName, AnchorName);
AnchorId = PreferIncomingValue(anchorId, AnchorId);
AvatarUrl = PreferIncomingValue(avatarUrl, AvatarUrl);
CoverUrl = PreferIncomingValue(coverUrl, CoverUrl);
UpdatedAt = updatedAt;
}
@@ -100,4 +130,40 @@ public class LiveRoom
HasSentLiveNotificationForCurrentSession = true;
UpdatedAt = updatedAt;
}
public void UpdateRecordingSettingsOverrides(
string? preferredQualityOverride,
RecordOutputFormat? outputFormatOverride,
RecordSaveMode? saveModeOverride,
RecordingTemplateType? recordingTemplateOverride,
int? segmentDurationMinutesOverride,
bool? enableAutoReconnectOverride,
int? reconnectDelayMaxSecondsOverride,
int? readWriteTimeoutMillisecondsOverride,
bool? enableDanmakuRecordingOverride,
bool? danmakuIncludeNonChatEventsOverride,
int? danmakuMinPollIntervalMillisecondsOverride,
int? danmakuRetryDelayMaxSecondsOverride,
DateTimeOffset updatedAt)
{
PreferredQualityOverride = NormalizeNullable(preferredQualityOverride);
OutputFormatOverride = outputFormatOverride;
SaveModeOverride = saveModeOverride;
RecordingTemplateOverride = recordingTemplateOverride;
SegmentDurationMinutesOverride = segmentDurationMinutesOverride;
EnableAutoReconnectOverride = enableAutoReconnectOverride;
ReconnectDelayMaxSecondsOverride = reconnectDelayMaxSecondsOverride;
ReadWriteTimeoutMillisecondsOverride = readWriteTimeoutMillisecondsOverride;
EnableDanmakuRecordingOverride = enableDanmakuRecordingOverride;
DanmakuIncludeNonChatEventsOverride = danmakuIncludeNonChatEventsOverride;
DanmakuMinPollIntervalMillisecondsOverride = danmakuMinPollIntervalMillisecondsOverride;
DanmakuRetryDelayMaxSecondsOverride = danmakuRetryDelayMaxSecondsOverride;
UpdatedAt = updatedAt;
}
private static string? PreferIncomingValue(string? incomingValue, string? existingValue) =>
string.IsNullOrWhiteSpace(incomingValue) ? existingValue : incomingValue;
private static string? NormalizeNullable(string? value) =>
string.IsNullOrWhiteSpace(value) ? null : value.Trim();
}