5002859fc8
#314 #314 #314 #314 #314 Co-authored-by: miteruzo <miteruzo@naver.com> Reviewed-on: #340
33 lines
767 B
Ruby
33 lines
767 B
Ruby
require 'time'
|
|
|
|
|
|
module Youtube
|
|
class VideoItem
|
|
attr_reader :id, :title, :channel_id, :published_at, :thumbnail_url, :raw_tags
|
|
|
|
def initialize item
|
|
snippet = item.fetch('snippet')
|
|
|
|
@id = item.fetch('id')
|
|
@title = snippet['title']
|
|
@channel_id = snippet['channelId']
|
|
@published_at = Time.iso8601(snippet['publishedAt'])
|
|
@thumbnail_url = pick_thumbnail(snippet['thumbnails'] || { })
|
|
@raw_tags = snippet['tags'] || []
|
|
end
|
|
|
|
def url = "https://www.youtube.com/watch?v=#{ @id }"
|
|
|
|
private
|
|
|
|
def pick_thumbnail thumbnails
|
|
['maxres', 'standard', 'high', 'medium', 'default'].each do |key|
|
|
url = thumbnails.dig(key, 'url')
|
|
return url if url.present?
|
|
end
|
|
|
|
nil
|
|
end
|
|
end
|
|
end
|