Aggiunge replay YouTube temporaneo, pull registrazioni dai CPX e snapshot ingest in admin.
Così overflow Hetzner e VOD YouTube restano in archivio dopo lo spegnimento del nodo, e la colonna ingest non si svuota. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
class StreamSession < ApplicationRecord
|
||||
include AASM
|
||||
|
||||
PLATFORMS = %w[matchlivetv youtube facebook twitch].freeze
|
||||
LIVE_PLATFORMS = %w[matchlivetv youtube].freeze
|
||||
PLATFORMS = (LIVE_PLATFORMS + %w[facebook twitch]).freeze
|
||||
STATUSES = %w[idle connecting live reconnecting paused ended error].freeze
|
||||
PRIVACY_STATUSES = %w[public unlisted private].freeze
|
||||
|
||||
@@ -20,6 +21,7 @@ class StreamSession < ApplicationRecord
|
||||
|
||||
before_validation :normalize_privacy_status
|
||||
before_validation :ensure_publish_token, on: :create
|
||||
before_validation :snapshot_ingest_from_node, if: -> { stream_node.present? }
|
||||
|
||||
scope :broadcasting, -> { where(status: %w[live connecting reconnecting paused]) }
|
||||
scope :publicly_listed, -> { where(privacy_status: "public") }
|
||||
@@ -74,6 +76,14 @@ class StreamSession < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
def ingest_slug_display
|
||||
stream_node&.slug.presence || ingest_slug
|
||||
end
|
||||
|
||||
def ingest_role_display
|
||||
stream_node&.role.presence || ingest_role
|
||||
end
|
||||
|
||||
def rtmp_ingest_url
|
||||
# RootEncoder richiede rtmp://host:port/app/stream (due segmenti).
|
||||
# MediaMTX path = live/match_{uuid} (no ?token= nel path).
|
||||
@@ -208,6 +218,11 @@ class StreamSession < ApplicationRecord
|
||||
self.privacy_status = "unlisted" if privacy_status == "private"
|
||||
end
|
||||
|
||||
def snapshot_ingest_from_node
|
||||
self.ingest_slug = stream_node.slug
|
||||
self.ingest_role = stream_node.role
|
||||
end
|
||||
|
||||
def record_ended_timestamps!
|
||||
now = Time.current
|
||||
update!(ended_at: now) if ended_at.nil?
|
||||
|
||||
Reference in New Issue
Block a user