Sha256: 7c92dd028026f1ed568447ba3d995f6bcf2b26e0c17ae9600a4e95f8250a7c15

Contents?: true

Size: 1.64 KB

Versions: 4

Compression:

Stored size: 1.64 KB

Contents

require 'iso8601'
require_relative 'youtube_api'
require_relative 'youtube_scraper'

class VideoInfo
  module Providers
    class Youtube < Provider
      def initialize(url, options = {})
        if VideoInfo.provider_api_keys[:youtube].nil?
          extend YoutubeScraper
        else
          extend YoutubeAPI
        end

        super(url, options)
      end

      def self.usable?(url)
        url =~ %r{(youtube\.com\/(?!playlist|embed\/videoseries).*)|
                  (youtu\.be)}x
      end

      def provider
        'YouTube'
      end

      %w[width height].each do |method|
        define_method(method) { nil }
      end

      def embed_url
        "//www.youtube.com/embed/#{video_id}"
      end

      def thumbnail_small
        "https://i.ytimg.com/vi/#{video_id}/default.jpg"
      end

      def thumbnail_medium
        "https://i.ytimg.com/vi/#{video_id}/mqdefault.jpg"
      end

      def thumbnail_large
        "https://i.ytimg.com/vi/#{video_id}/hqdefault.jpg"
      end

      def thumbnail_large_2x
        "https://i.ytimg.com/vi/#{video_id}/sddefault.jpg"
      end

      def thumbnail_maxres
        "https://i.ytimg.com/vi/#{video_id}/maxresdefault.jpg"
      end

      private

      def _url_regex
        %r{(?:youtube(?:-nocookie)?\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|
           .*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})}x
      end

      def _default_iframe_attributes
        { allowfullscreen: 'allowfullscreen' }
      end

      def _default_url_attributes
        {}
      end

      def resize_thumb(url, size)
        url.gsub(/(https:\/\/yt3.ggpht.com\/.*\/.*=s)([0-9]*)(.*)/, "\\1#{size}\\3")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
video_info-3.1.0 lib/video_info/providers/youtube.rb
video_info-3.0.2 lib/video_info/providers/youtube.rb
video_info-3.0.1 lib/video_info/providers/youtube.rb
video_info-3.0.0 lib/video_info/providers/youtube.rb