feat: improve recording automation and task workflows
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user