lib/ids_please/grabbers/vkontakte.rb in ids_please-2.2.5 vs lib/ids_please/grabbers/vkontakte.rb in ids_please-2.3.0

- old
+ new

@@ -1,30 +1,67 @@ class IdsPlease module Grabbers class Vkontakte < IdsPlease::Grabbers::Base def grab_link - prepare_link agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36' @page_source ||= open(link, 'User-Agent' => agent).read.encode('utf-8') - @network_id = find_by_regex(/href="\/wall(-\d+)_/) - @username = @link.to_s.split('vk.com/').last.gsub('/', '') - @avatar = find_by_regex(/page_avatar.+\n.+src="([^"]+)/) - @avatar = CGI.unescapeHTML(@avatar) if @avatar - @display_name = find_by_regex(/page_name">([^<]+)/) - @display_name = CGI.unescapeHTML(@display_name) if @display_name + + @network_id = find_network_id + @username = find_username + @avatar = find_avatar + @display_name = find_display_name + @data = { - description: find_by_regex(/description" content="([^"]+)/) + description: find_description } - @data[:description] = CGI.unescapeHTML(@data[:description]) if @data[:description] self rescue => e record_error __method__, e.message return self end - def prepare_link - id = @link.to_s.split('/').last - @link = URI("https://new.vk.com/#{id}") + private + + def find_avatar + CGI.unescapeHTML( + find_by_regex(/page_avatar_img" src="([^"]+)/) || + find_by_regex(/<img src="([^"]+).+class="post_img"/) + ) + rescue => e + record_error __method__, e.message + return nil + end + + def find_network_id + find_by_regex(/href="\/wall(-\d+)_/) + rescue => e + record_error __method__, e.message + return nil + end + + def find_display_name + CGI.unescapeHTML( + find_by_regex(/page_name">([^<]+)/) + ) + rescue => e + record_error __method__, e.message + return nil + end + + def find_username + @link.to_s.split('vk.com/').last.gsub('/', '') + rescue => e + record_error __method__, e.message + return nil + end + + def find_description + CGI.unescapeHTML( + find_by_regex(/description" content="([^"]+)/) + ) + rescue => e + record_error __method__, e.message + return nil end end end end