#!/usr/bin/env ruby # encoding: UTF-8 require 'net/http' require 'uri' require 'public_suffix_list' require 'public_suffix' require 'fileutils' require 'mechanize' require 'nokogiri' require 'watir-webdriver' require 'selenium/webdriver' module VideoCounter class ViewsCount def initialize make_agent end def find_site(url) uri = URI.parse(url) domain = PublicSuffix.parse(uri.host) return domain.sld end def get_youtube_view(url) #ok page = @agent.get url doc = Nokogiri::HTML::DocumentFragment.parse(page.body) views = doc.search(".watch-view-count").text return views.to_s.strip end def get_dailymotion_view(url) #ok page = @agent.get url views = page.parser.xpath('//*[@id="video_views_countv2"]/b/text()') return views.to_s.strip end def get_izlesene_view(url) #ok page = @agent.get url doc = Nokogiri::HTML::DocumentFragment.parse(page.body) views = doc.search(".view_c").text return views.to_s.strip end def get_trilulilu_view(url) #ok page = @agent.get url views = page.parser.xpath('//html/body/div[5]/div[3]/div/div/div/div[3]/div/div/div/div[2]/p/strong/text()') return views[0].to_s.strip end def get_clipfish_view(url) #ok page = @agent.get url views = page.parser.xpath('//html/body/div[4]/div[6]/div/div[2]/div[3]/div[2]/div/div[2]/div[2]/div[3]/div[2]/div/div[2]/div[2]/span/text()') return views[0].to_s.strip end def get_metacafe_view(url) #ok page = @agent.get url views_tmp = page.parser.xpath('//h2[@id="Views"]/text()') if views_tmp.empty? then views = page.parser.xpath('//html/body/div/div[6]/div/section/article/hgroup/span/text()') else views = views_tmp end return views.to_s.strip end def get_myspace_view(url) #ok b = Watir::Browser.new(:phantomjs) b.goto url doc = Nokogiri::HTML(b.html) regex = "(\"stats\")"+"(:)"+"(\\{)"+"(\"AllTime\")"+"(:)"+"(\".*?\")"+"(\\})" # "stats":{"AllTime":"258,549"} doc.to_s.match(regex) views = $6 return views.gsub('"', '') end def get_photobucket_view(url) # ok b = Watir::Browser.new :phantomjs b.goto url doc = Nokogiri::HTML(b.html) views = doc.xpath('//*[@id="viewCount"]') return views.children.first.text end def get_daleplay_view(url) # toutes les videos sont en erreur copyright page = @agent.get url views = page.parser.xpath('//*[@id="video_views_countv2"]/b/text()') return views.to_s.strip end def get_vxv_view(url) #ok page = @agent.get url views = page.parser.xpath('//*[@id="video_visit"]/text()') return views.to_s.strip end def get_rutube_view(url) #ok page = @agent.get url views = page.parser.xpath('//html/body/div/div[2]/div[2]/div/section/div/div/div/div/div/div/div/div/div/div[2]/div[2]/div/div[2]/ul/li[2]/span[2]/text()') return views.to_s.strip end def get_smotri_view(url) #ok page = @agent.get url doc = Nokogiri::HTML::DocumentFragment.parse(page.body) views = doc.search(".Number").first.text return views.to_s.strip end def get_miwim_view(url) #ok page = @agent.get url views = page.parser.xpath('//*[@id="useraction"]/div[1]/text()[3]').to_s.gsub('|','') return views.strip end def get_wat_view(url) #ok page = @agent.get url views_tmp = page.parser.xpath('//html/body/div[3]/div[2]/div[2]/div/div/div/div/div[2]/div/span/text()').to_s.strip views = views_tmp.split(" ") return views[0] end def get_viddler_view(url) #ok page = @agent.get url views = page.parser.xpath('//html/body/div/div[2]/div[2]/div/p/span[2]/b/text()') return views.to_s.strip end def get_veoh_view(url) #ok page = @agent.get url views = page.parser.xpath('.//*[@id="leftVideoDetails"]/div[1]/text()') return views.to_s.strip end def get_myvideo_view(url) #ok page = @agent.get url views = page.parser.xpath('//*[@id="mCnt"]/text()') return views.to_s.strip end def get_kewego_view(url) #ok page = @agent.get url views = page.parser.xpath('//html/body/div/div[4]/div[2]/div/div/div/div[2]/div/ul/li[3]/span/text()') return views.to_s.strip end private def make_agent @agent = Mechanize.new do |a| a.user_agent_alias = 'Mac Safari' a.max_history = 1 a.open_timeout = 15 a.read_timeout = 5 a.keep_alive = false end end end end