module VideoInfo::Providers::VimeoScraper
Public Instance Methods
available?()
click to toggle source
Calls superclass method
# File lib/video_info/providers/vimeo_scraper.rb, line 40 def available? is_available = super if data.nil? is_available = false elsif is_available password_elements = data.css(".exception_title--password") unless password_elements.empty? is_available = false end end is_available end
date()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 64 def date if available? upload_date = json_info["uploadDate"] ISO8601::DateTime.new(upload_date).to_time end end
description()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 60 def description meta_node_value("og:description") end
duration()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 71 def duration if available? duration = json_info["duration"] ISO8601::Duration.new(duration).to_seconds.to_i end end
height()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 86 def height if available? json_info["height"] end end
keywords()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 78 def keywords unless available? return nil end json_info["keywords"] || [] end
stats()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 122 def stats return {} unless available? { "plays" => view_count, "likes" => user_interaction_count(interaction_type: "LikeAction"), "comments" => user_interaction_count(interaction_type: "CommentAction") } end
thumbnail_large()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 110 def thumbnail_large if available? thumbnail_url.split("_")[0] + "_640.jpg" end end
thumbnail_medium()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 104 def thumbnail_medium if available? thumbnail_url.split("_")[0] + "_200x150.jpg" end end
thumbnail_small()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 98 def thumbnail_small if available? thumbnail_url.split("_")[0] + "_100x75.jpg" end end
title()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 56 def title meta_node_value("og:title") end
view_count()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 116 def view_count if available? user_interaction_count(interaction_type: "WatchAction") end end
width()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 92 def width if available? json_info["width"] end end
Private Instance Methods
_api_path()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 201 def _api_path _api_url end
_api_url()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 195 def _api_url uri = URI.parse(@url) uri.scheme = "https" uri.to_s end
_set_data_from_api_impl(api_url)
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 189 def _set_data_from_api_impl(api_url) Oga.parse_html(URI.parse(api_url.to_s).read) rescue OpenURI::HTTPError nil end
interaction_statistic()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 139 def interaction_statistic json_info["interactionStatistic"] end
json_info()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 143 def json_info @json_info ||= JSON.parse(data.css("script").detect do |n| type = n.attr("type") if type.nil? false else type.value == "application/ld+json" end end.text)[0] end
meta_node_value(name)
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 173 def meta_node_value(name) if available? node = meta_nodes.detect do |n| property = n.attr("property") if property.nil? false else property.value == name end end node.attr("content").value end end
meta_nodes()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 169 def meta_nodes @meta_nodes ||= data.css("meta") end
remove_overlay(url)
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 159 def remove_overlay(url) uri = URI.parse(url) if uri.path == "/filter/overlay" CGI.parse(uri.query)["src0"][0] else url end end
thumbnail_url()
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 155 def thumbnail_url @thumbnail_url ||= remove_overlay(meta_node_value("og:image")) end
user_interaction_count(interaction_type:)
click to toggle source
# File lib/video_info/providers/vimeo_scraper.rb, line 133 def user_interaction_count(interaction_type:) interaction_statistic&.find do |stat| stat["interactionType"] == "http://schema.org/#{interaction_type}" end&.public_send(:[], "userInteractionCount") end