pintrest-api 0.0.6 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f95bd14d7dbe82e141e14b08b6e10fe817e7aa4e
4
- data.tar.gz: ddeef50cbaeae86ff075580d4b1b9a6e4056c81a
3
+ metadata.gz: c216c3168b7271066677f540a132cebbfc9d3a3d
4
+ data.tar.gz: aa9449ec04fe448b7e9dca912470791fb57e540c
5
5
  SHA512:
6
- metadata.gz: 18978b0c2f7f2bf2a4cd5124025e3229c8c9f08e55d8c18764aa7e952c84ac4c275400f1028d078af20b4c582a41473b7285558d1d180771600dd2ae4f0d44a3
7
- data.tar.gz: b61ba90bcb685e60f8bac7d392a3209dab26c228c5009cad1bb52d4e623d4c1581c4c2d5925a2cffd65122306e1bf155dbbeab9b406d8b67c7c64c35cd05390f
6
+ metadata.gz: 61bcb16cfa708aac96c2bc6d96b20808c7c303b9c64d5589b600300574a769b89147c0a7af83388371cebf9dcf7b3fc9fa154aa317bf013ff482f43c2c40319a
7
+ data.tar.gz: 39595bf52a6f67d2398bd82bc4cb3e37cb543a9a0a629c62cdf78b585733c8bba99920a1aa5369f1b0ecc0e8fd4ada56220a28f29930c442ec35a592780dca12
data/.DS_Store CHANGED
Binary file
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pintrest-api (0.0.6)
4
+ pintrest-api (0.1.1)
5
5
  capybara (~> 2.4)
6
6
  nokogiri (~> 1.6)
7
7
  poltergeist (~> 1.5)
data/README.md CHANGED
@@ -4,8 +4,6 @@ Pintrest Api
4
4
  An api in ruby for pulling pintrest pins. It is not very fast due to the fact
5
5
  that you must use capybara to parse the page.
6
6
 
7
- This is still not fully working and getting individual pins from boards don't work
8
-
9
7
  ### Warning
10
8
  Certain issues require you to login first (getting more then 50 pins per board)
11
9
  To do this when calling anything to do with pins you can pass in
@@ -10,11 +10,11 @@ module PintrestApi
10
10
 
11
11
  def login(authentication)
12
12
  visit PINTREST_LOGIN_URL
13
-
14
13
  @session.find(EMAIL_INPUT_CSS).set authentication[:email]
15
14
  @session.find(PASSWORD_INPUT_CSS).set authentication[:password]
16
15
  click LOGIN_PAGE_BUTTON_CSS
17
16
  sleep 5
17
+
18
18
  puts 'Finished logging in'
19
19
  end
20
20
  end
@@ -54,7 +54,7 @@ module PintrestApi
54
54
  # * +board_name+ - Pintrest board_name
55
55
  # ==== Examples
56
56
  #
57
- # PintrestApi::Board.pins('mikakalathil', 'My Board Name!!!')
57
+ # PintrestApi::Board.pins('mikakalathil', 'My Board Name!!!', {email: 'asdf@gmail.com', password: 'asdf'})
58
58
  def pins(user_name, board_name, authentication)
59
59
  board_slug = board_name.downcase.gsub(/[_\s]/, '-')
60
60
  Pin.get_for_board_url("#{PINTREST_URL}#{user_name}/#{board_slug}", authentication)
@@ -2,6 +2,7 @@ require 'capybara'
2
2
  require 'capybara/dsl'
3
3
  require 'capybara/poltergeist'
4
4
 
5
+
5
6
  module PintrestApi
6
7
  ##
7
8
  # This class is the core of the pintrest api and handles all url visiting and such
@@ -19,6 +20,18 @@ module PintrestApi
19
20
  @session
20
21
  end
21
22
 
23
+ def session_visit(url)
24
+ begin
25
+ @session.visit url
26
+ sleep 2
27
+ rescue Capybara::Poltergeist::TimeoutError
28
+ puts 'Gotten blocked by pintrest waiting 2 min to try again'
29
+ sleep 120
30
+
31
+ session_visit url
32
+ end
33
+ end
34
+
22
35
  def visit(url)
23
36
  new_session
24
37
  @session.visit url
@@ -34,7 +47,7 @@ module PintrestApi
34
47
  def new_session
35
48
  # Register PhantomJS (aka poltergeist) as the driver to use
36
49
  Capybara.register_driver :poltergeist do |app|
37
- Capybara::Poltergeist::Driver.new(app)
50
+ Capybara::Poltergeist::Driver.new(app, timeout: 60)
38
51
  end
39
52
 
40
53
  # Use XPath as the default selector for the find method
@@ -53,7 +66,7 @@ module PintrestApi
53
66
 
54
67
  def scroll_page
55
68
  @session.execute_script 'window.scrollTo(0,100000)'
56
- sleep 5
69
+ sleep 2
57
70
  end
58
71
 
59
72
  # Returns the current session's page
@@ -65,9 +78,12 @@ module PintrestApi
65
78
  old_items_count = 0
66
79
  items = []
67
80
 
81
+
82
+
68
83
  until (items.count === old_items_count) && items.count > 0
69
84
  old_items_count = items.count
70
85
  scroll_page if old_items_count > 0
86
+
71
87
  newItems = Nokogiri::HTML.parse(html).css css_selector
72
88
  items = newItems if old_items_count === 0 || newItems.count > old_items_count
73
89
  puts "New Count: #{items.count}\nOld Count: #{old_items_count}"
@@ -1,3 +1,4 @@
1
+ require 'pry'
1
2
  module PintrestApi
2
3
 
3
4
  # Pintrest Pin model
@@ -32,21 +33,20 @@ module PintrestApi
32
33
  # * +authentication+ -
33
34
  # ==== Examples
34
35
  #
35
- # PintrestApi::Pin.get_for_board_url('http://pintrest.com/mikaak/my-pins')
36
+ # PintrestApi::Pin.get_for_board_url('http://pintrest.com/mikaak/my-pins', , {email: 'asdf@gmail.com', password: 'asdf'})
36
37
  def get_for_board_url(board_url, authentication)
37
- login(authentication) if !@is_logged_in || authentication
38
+ login authentication if !@is_logged_in && authentication
38
39
  @is_logged_in = true
39
40
 
40
- @session.visit http_url(board_url)
41
- sleep 2
41
+ session_visit http_url(board_url)
42
42
  parse_pins get_with_ajax_scroll(PIN_BASE_CSS)
43
43
  end
44
44
 
45
45
  def get_for_board(board, authentication)
46
- login(authentication) if !@is_logged_in || authentication
46
+ login authentication if !@is_logged_in && authentication
47
47
  @is_logged_in = true
48
- @session.visit http_url(board.url)
49
- sleep 2
48
+
49
+ session_visit http_url(board.url)
50
50
  parse_pins get_with_ajax_scroll(PIN_BASE_CSS)
51
51
  end
52
52
 
@@ -1,3 +1,3 @@
1
1
  module PintrestApi
2
- VERSION = '0.0.6'
2
+ VERSION = '0.1.1'
3
3
  end
data/lib/pintrest_api.rb CHANGED
@@ -8,8 +8,8 @@ Bundler.require(:default)
8
8
 
9
9
  # Pintrest Api requires
10
10
  #=======================
11
- require 'pintrest_api/version.rb'
12
- require 'pintrest_api/core.rb'
13
- require 'pintrest_api/authentication.rb'
14
- require 'pintrest_api/board.rb'
15
- require 'pintrest_api/pin.rb'
11
+ require_relative './pintrest_api/version.rb'
12
+ require_relative './pintrest_api/core.rb'
13
+ require_relative './pintrest_api/authentication.rb'
14
+ require_relative './pintrest_api/board.rb'
15
+ require_relative './pintrest_api/pin.rb'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pintrest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mika Kalathil