This commit is contained in:
@@ -11,14 +11,17 @@ module Youtube
|
||||
@api_key = api_key
|
||||
end
|
||||
|
||||
def search_videos q:, published_after:, page_token: nil
|
||||
def search_videos q:, published_after: nil, published_before: nil, page_token: nil
|
||||
get_json('/search', {
|
||||
part: 'snippet',
|
||||
type: 'video',
|
||||
q: q,
|
||||
q:,
|
||||
order: 'date',
|
||||
maxResults: 50,
|
||||
publishedAfter: published_after.iso8601,
|
||||
regionCode: 'JP',
|
||||
relevanceLanguage: 'ja',
|
||||
publishedAfter: published_after&.iso8601,
|
||||
publishedBefore: published_before&.iso8601,
|
||||
pageToken: page_token }.compact)
|
||||
end
|
||||
|
||||
@@ -37,6 +40,8 @@ module Youtube
|
||||
end
|
||||
|
||||
def channel id: nil, handle: nil
|
||||
raise ArgumentError, 'id or handle is required' if id.present? == handle.present?
|
||||
|
||||
params = { part: 'snippet,contentDetails' }
|
||||
params[:id] = id if id
|
||||
params[:forHandle] = handle if handle
|
||||
|
||||
@@ -35,9 +35,10 @@ module Youtube
|
||||
end
|
||||
|
||||
playlist_ids.each do |playlist_id|
|
||||
response = @client.playlist_items(playlist_id:)
|
||||
response.fetch('items', []).each do |item|
|
||||
each_playlist_item(playlist_id) do |item|
|
||||
video_id = item.dig('contentDetails', 'videoId')
|
||||
video_id ||= item.dig('snippet', 'resourceId', 'videoId')
|
||||
|
||||
ids << video_id if video_id.present?
|
||||
end
|
||||
end
|
||||
@@ -70,7 +71,7 @@ module Youtube
|
||||
title: video.title,
|
||||
url: video.url,
|
||||
thumbnail_base: video.thumbnail_url,
|
||||
uploaded_user: nil,
|
||||
uploaded_user_id: nil,
|
||||
original_created_from:,
|
||||
original_created_before:)
|
||||
|
||||
@@ -84,6 +85,7 @@ module Youtube
|
||||
|
||||
deerjikist = Deerjikist.find_by(platform: :youtube, code: video.channel_id)
|
||||
if deerjikist
|
||||
desired_tag_ids.delete(Tag.no_deerjikist.id)
|
||||
desired_tag_ids << deerjikist.tag_id
|
||||
elsif post.tags.where(category: :deerjikist).none?
|
||||
desired_tag_ids << Tag.no_deerjikist.id
|
||||
@@ -147,5 +149,20 @@ module Youtube
|
||||
end
|
||||
|
||||
def sync_since = 14.days.ago
|
||||
|
||||
def each_playlist_item playlist_id
|
||||
page_token = nil
|
||||
|
||||
loop do
|
||||
response = @client.playlist_items(playlist_id:, page_token:)
|
||||
|
||||
response.fetch('items', []).each do |item|
|
||||
yield item
|
||||
end
|
||||
|
||||
page_token = response['nextPageToken']
|
||||
break if page_token.blank?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
require 'time'
|
||||
|
||||
|
||||
module Youtube
|
||||
class VideoItem
|
||||
attr_reader :id, :title, :channel_id, :published_at, :thumbnail_url, :raw_tags
|
||||
|
||||
Reference in New Issue
Block a user