class PintrestApi::Core
This class is the core of the pintrest api and handles all url visiting and such
Constants
- PINTREST_URL
Attributes
session[RW]
Public Class Methods
click(css)
click to toggle source
# File lib/pintrest_api/core.rb, line 45 def click(css) @session.find(css).click end
get_with_ajax_scroll(css_selector)
click to toggle source
# File lib/pintrest_api/core.rb, line 80 def get_with_ajax_scroll(css_selector) old_items_count = 0 items = [] until (items.count === old_items_count) && items.count > 0 old_items_count = items.count scroll_page if old_items_count > 0 new_items = Nokogiri::HTML.parse(html).css css_selector items = new_items if old_items_count === 0 || new_items.count > old_items_count puts "New Count: #{items.count}\nOld Count: #{old_items_count}" end items end
html()
click to toggle source
Returns the current session’s page
# File lib/pintrest_api/core.rb, line 76 def html @session.body end
new_session()
click to toggle source
Create a new PhantomJS session in Capybara
# File lib/pintrest_api/core.rb, line 50 def new_session # Register PhantomJS (aka poltergeist) as the driver to use Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, timeout: 60, js_errors: false) end # Use CSS as the default selector for the find method Capybara.default_selector = :css # Start up a new thread @session = Capybara::Session.new(:poltergeist) # Report using a particular user agent @session.driver.headers = { 'User-Agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X)" } # Return the driver's session @session end
scroll_page()
click to toggle source
# File lib/pintrest_api/core.rb, line 70 def scroll_page @session.execute_script 'window.scrollTo(0,100000)' sleep 2 end
session_visit(url)
click to toggle source
# File lib/pintrest_api/core.rb, line 24 def session_visit(url) url = PINTREST_URL + url if url !~ /pinterest/ begin @session.visit url sleep 3 rescue Capybara::Poltergeist::TimeoutError puts 'Gotten blocked by pintrest waiting 2 min to try again' sleep 120 session_visit url end end
stream_with_ajax_scroll(css_selector) { |items| ... }
click to toggle source
# File lib/pintrest_api/core.rb, line 98 def stream_with_ajax_scroll(css_selector) old_items_count = 0 items = [] until (items.count === old_items_count) && items.count > 0 old_items_count = items.count scroll_page if old_items_count > 0 items = Nokogiri::HTML.parse(html).css css_selector if old_items_count === 0 || items.count > old_items_count yield items[old_items_count..-1] if items.count > old_items_count puts "New Count: #{items.count}\nOld Count: #{old_items_count}" end items end
visit(url)
click to toggle source
# File lib/pintrest_api/core.rb, line 38 def visit(url) new_session @session.visit url sleep 5 @session end
visit_page(user_name)
click to toggle source
# File lib/pintrest_api/core.rb, line 17 def visit_page(user_name) new_session @session.visit PINTREST_URL + user_name sleep 5 @session end