このコミットが含まれているのは:
2026-07-09 23:11:31 +09:00
コミット b19c24cb8e
8個のファイルの変更366行の追加46行の削除
+32
ファイルの表示
@@ -0,0 +1,32 @@
module Preview
class KnownSiteExtractor
def self.thumbnail_url(uri)
youtube_thumbnail(uri) || niconico_thumbnail(uri)
end
def self.youtube_thumbnail(uri)
id =
case uri.host&.downcase
when 'youtu.be'
uri.path.split('/').reject(&:blank?).first
when 'www.youtube.com', 'youtube.com', 'm.youtube.com'
uri.path == '/watch' ? URI.decode_www_form(uri.query.to_s).to_h['v'] : nil
end
return unless id&.match?(/\A[A-Za-z0-9_-]{6,20}\z/)
"https://i.ytimg.com/vi/#{ id }/hqdefault.jpg"
end
def self.niconico_thumbnail(uri)
return unless ['www.nicovideo.jp', 'nicovideo.jp', 'nico.ms'].include?(uri.host&.downcase)
id = uri.path[%r{/(?:watch/)?(sm\d+)\z}, 1]
return unless id
numeric_id = id.delete_prefix('sm')
"https://nicovideo.cdn.nimg.jp/thumbnails/#{ numeric_id }/#{ numeric_id }.L"
end
private_class_method :youtube_thumbnail, :niconico_thumbnail
end
end