Fix YouTube in attesa: disabilita auto_stop e ricrea broadcast chiusa
YouTube chiudeva la diretta (complete) senza ingest stabile; ora enable_auto_stop è false e SetupBroadcast.recreate! rigenera link/stream key. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -19,6 +19,11 @@ class YoutubeBroadcastActivateJob < ApplicationJob
|
|||||||
result = Youtube::BroadcastService.new(session.match.team).activate_broadcast!(session.youtube_broadcast_id)
|
result = Youtube::BroadcastService.new(session.match.team).activate_broadcast!(session.youtube_broadcast_id)
|
||||||
return if result == :live || result == :transitioned
|
return if result == :live || result == :transitioned
|
||||||
|
|
||||||
|
if result == :broadcast_ended
|
||||||
|
Youtube::SetupBroadcast.recreate!(session.reload)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
return unless result == :waiting_ingest
|
return unless result == :waiting_ingest
|
||||||
return if attempt >= MAX_ATTEMPTS
|
return if attempt >= MAX_ATTEMPTS
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ module Youtube
|
|||||||
),
|
),
|
||||||
content_details: Google::Apis::YoutubeV3::LiveBroadcastContentDetails.new(
|
content_details: Google::Apis::YoutubeV3::LiveBroadcastContentDetails.new(
|
||||||
enable_auto_start: true,
|
enable_auto_start: true,
|
||||||
enable_auto_stop: true
|
enable_auto_stop: false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
result = client.insert_live_broadcast("snippet,status,contentDetails", broadcast)
|
result = client.insert_live_broadcast("snippet,status,contentDetails", broadcast)
|
||||||
@@ -62,6 +62,7 @@ module Youtube
|
|||||||
|
|
||||||
status = item.status.life_cycle_status.to_s
|
status = item.status.life_cycle_status.to_s
|
||||||
return :live if status == "live"
|
return :live if status == "live"
|
||||||
|
return :broadcast_ended if status == "complete"
|
||||||
|
|
||||||
stream_id = item.content_details&.bound_stream_id
|
stream_id = item.content_details&.bound_stream_id
|
||||||
if stream_id.present?
|
if stream_id.present?
|
||||||
|
|||||||
@@ -7,11 +7,31 @@ module Youtube
|
|||||||
new(session, youtube_channel: youtube_channel).call
|
new(session, youtube_channel: youtube_channel).call
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Nuova broadcast se YouTube ha chiuso la precedente (auto_stop / ingest perso).
|
||||||
|
def self.recreate!(session, youtube_channel: nil)
|
||||||
|
new(session, youtube_channel: youtube_channel).recreate!
|
||||||
|
end
|
||||||
|
|
||||||
def initialize(session, youtube_channel: nil)
|
def initialize(session, youtube_channel: nil)
|
||||||
@session = session
|
@session = session
|
||||||
@youtube_channel = youtube_channel
|
@youtube_channel = youtube_channel
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def recreate!
|
||||||
|
@session.reload
|
||||||
|
return @session if @session.terminal?
|
||||||
|
return @session unless @session.platform == "youtube"
|
||||||
|
|
||||||
|
Streams::YoutubeRelay.stop(@session)
|
||||||
|
@session.update!(
|
||||||
|
youtube_broadcast_id: nil,
|
||||||
|
youtube_stream_id: nil,
|
||||||
|
stream_key: nil,
|
||||||
|
rtmp_url: nil
|
||||||
|
)
|
||||||
|
call
|
||||||
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
@session.reload
|
@session.reload
|
||||||
return @session if @session.terminal?
|
return @session if @session.terminal?
|
||||||
|
|||||||
Reference in New Issue
Block a user