Sha256: bcf13f8126be976786240438e72ee8dfa19e2dfa7c8b3b766e52c86581781a51

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

require 'nokogiri'
require 'open-uri'

module Scraper
  module Modules
    module Video
      module HostNameMatching
        def =~( args )
          if args[:url]
            uri = URI.parse( args[:url] )

            if valid_host_name?( uri.host )
              return true
            end
          end
        end

        def valid_host_name?( host_name )
          host_name.match(config[:valid_host_name])
        end
      end

      module Common
        def self.included( base )
          base.cattr_accessor :config
        end
        
        def title
          @title ||= doc.search(config[:title_selector]).first.content
        end
        
        def description
          return @description if @description
          
          html = doc.search(config[:description_selector]).first.inner_html
          @description = dom(html.gsub(/<br\/?>/, ' ')).content.strip
        end
        
        def video_id
          @video_id
        end
        
        protected
          def dom( html )
            Nokogiri::HTML( html )
          end
          
          def uri
            @uri.scheme + '://' + @uri.host + @uri.request_uri
          end
          
          def doc
            @doc ||= dom( Modules::Web.open( uri ).read )
          end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cyx-scraper-0.3.0 lib/scraper/modules/video.rb