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