diff --git a/backend/app/services/discovery/youtube_video_discoverer.rb b/backend/app/services/discovery/youtube_video_discoverer.rb deleted file mode 100644 index 70eac89..0000000 --- a/backend/app/services/discovery/youtube_video_discoverer.rb +++ /dev/null @@ -1,46 +0,0 @@ -class Discovery::YoutubeVideoDiscoverer - def initialize(client: Youtube::SearchClient.new) - @client = client - end - - def call discovery_query:, published_after:, published_before: - body = @client.search_videos( - query: discovery_query.query, - published_after: published_after, - published_before: published_before) - - body.fetch('items', []).each do |item| - next unless item.dig('id', 'kind') == 'youtube#video' - - upsert_candidate!(discovery_query, item) - end - end - - private - - def upsert_candidate! discovery_query, item - snippet = item.fetch('snippet') - code = item.fetch('id').fetch('videoId') - - candidate = VideoCandidate.find_or_initialize_by(provider: 'youtube', code:) - - candidate.title = snippet['title'].to_s - candidate.description = snippet['description'].to_s - candidate.channel_code = snippet['channelId'] - candidate.channel_title = snippet['channelTitle'] - candidate.published_at = Time.zone.parse(snippet['publishedAt']) - candidate.thumbnail_url = snippet.dig('thumbnails', 'high', 'url') - candidate.raw_data = item - candidate.last_discovered_at = Time.current - candidate.save! - - VideoCandidateHit.find_or_create_by!( - video_candidate: candidate, - discovery_query: discovery_query - ) do |hit| - hit.matched_field = 'youtube_search' - hit.score = 0 - hit.searched_at = Time.current - end - end -end