Browse Source

#314

feature/314
みてるぞ 4 days ago
parent
commit
43122a49c3
1 changed files with 0 additions and 46 deletions
  1. +0
    -46
      backend/app/services/discovery/youtube_video_discoverer.rb

+ 0
- 46
backend/app/services/discovery/youtube_video_discoverer.rb View File

@@ -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

Loading…
Cancel
Save