Class: YouTubeCaptionSyncWorker
- Inherits:
-
Object
- Object
- YouTubeCaptionSyncWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/youtube_caption_sync_worker.rb
Overview
Pushes VTT captions from a video's structured transcript to YouTube.
Supports pushing all available languages or a single locale.
Instance Method Summary collapse
Instance Method Details
#perform(video_id, locale = nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/workers/youtube_caption_sync_worker.rb', line 14 def perform(video_id, locale = nil) video = Video.find(video_id) unless video.youtube_id.present? Rails.logger.info("[YouTubeCaptionSyncWorker] Video #{video_id} has no YouTube ID, skipping") return end service = YouTube::CaptionService.new if locale Rails.logger.info("[YouTubeCaptionSyncWorker] Pushing #{locale} captions for video #{video_id}") service.push_caption_for_locale(video, locale) else Rails.logger.info("[YouTubeCaptionSyncWorker] Pushing all captions for video #{video_id}") stats = service.push_all_captions(video) Rails.logger.info("[YouTubeCaptionSyncWorker] Done: #{stats.inspect}") end rescue YouTube::OauthService::TokenRefreshError => e Rails.logger.error("[YouTubeCaptionSyncWorker] OAuth error: #{e.}") rescue YouTube::ApiClient::ApiError => e Rails.logger.error("[YouTubeCaptionSyncWorker] API error: #{e.}") end |