kindle-highlights 0.0.5 → 0.0.6

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.
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'mechanize'
3
+ require 'amazon/aws'
4
+ require 'amazon/aws/search'
5
+ require 'kindle_highlights/kindle_highlight'
6
+ require 'kindle_highlights/highlight'
7
+
8
+ include Amazon::AWS
9
+ include Amazon::AWS::Search
@@ -0,0 +1,27 @@
1
+ class KindleHighlight::Highlight
2
+
3
+ attr_accessor :annotation_id, :asin, :author, :title, :content
4
+
5
+ @@amazon_items = Hash.new
6
+
7
+ def initialize(highlight)
8
+ self.annotation_id = highlight.xpath("form/input[@id='annotation_id']").attribute("value").value
9
+ self.asin = highlight.xpath("p/span[@class='hidden asin']").text
10
+ self.content = highlight.xpath("span[@class='highlight']").text
11
+ amazon_item = lookup_or_get_from_cache(self.asin)
12
+ self.author = amazon_item.item_attributes.author.to_s
13
+ self.title = amazon_item.item_attributes.title.to_s
14
+ end
15
+
16
+ def lookup_or_get_from_cache(asin)
17
+ unless @@amazon_items.has_key?(asin)
18
+ request = Request.new
19
+ request.locale = 'us'
20
+ response = ResponseGroup.new('Small')
21
+ lookup = Amazon::AWS::ItemLookup.new('ASIN', {'ItemId' => asin, 'MerchantId' => 'Amazon'})
22
+ amazon_item = request.search(lookup, response).item_lookup_response[0].items.item.first
23
+ @@amazon_items[asin] = amazon_item
24
+ end
25
+ @@amazon_items[asin]
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ class KindleHighlight
2
+
3
+ attr_accessor :highlights
4
+
5
+ def initialize(email_address, password)
6
+ @agent = Mechanize.new
7
+ @agent.user_agent_alias = 'Mac Safari'
8
+ page = @agent.get("https://www.amazon.com/ap/signin?openid.assoc_handle=amzn_kindle&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.pape.max_auth_age=0&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.return_to=https%3A%2F%2Fkindle.amazon.com%3A443%2Fauthenticate%2Flogin_callback%3Fwctx%3D%252F&pageId=amzn_kindle")
9
+ @amazon_form = page.form('signIn')
10
+ @amazon_form.email = email_address
11
+ @amazon_form.password = password
12
+ scrape_highlights
13
+ end
14
+
15
+ def scrape_highlights
16
+ signin_submission = @agent.submit(@amazon_form)
17
+ highlights_page = @agent.click(signin_submission.link_with(:text => /Your Highlights/))
18
+ collected_highlights = Array.new
19
+ highlights_page.search(".//div[@class='highlightRow yourHighlight']").each do |h|
20
+ collected_highlights << Highlight.new(h)
21
+ end
22
+ self.highlights = collected_highlights
23
+ end
24
+ end
25
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kindle-highlights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-21 00:00:00.000000000Z
12
+ date: 2012-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize
16
- requirement: &7488372 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 2.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7488372
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.0.1
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: ruby-aaws
27
- requirement: &7487712 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,14 +37,21 @@ dependencies:
32
37
  version: 0.7.0
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *7487712
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.7.0
36
46
  description: Until there is a Kindle API, this will suffice.
37
47
  email: eric@prudentiadigital.com
38
48
  executables: []
39
49
  extensions: []
40
50
  extra_rdoc_files: []
41
51
  files:
42
- - lib/kindle-highlights.rb
52
+ - lib/kindle_highlights.rb
53
+ - lib/kindle_highlights/kindle_highlight.rb
54
+ - lib/kindle_highlights/highlight.rb
43
55
  homepage: https://github.com/speric/kindle-highlights
44
56
  licenses: []
45
57
  post_install_message:
@@ -60,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
72
  version: '0'
61
73
  requirements: []
62
74
  rubyforge_project:
63
- rubygems_version: 1.8.12
75
+ rubygems_version: 1.8.22
64
76
  signing_key:
65
77
  specification_version: 3
66
78
  summary: Kindle highlights
@@ -1,58 +0,0 @@
1
- require 'rubygems'
2
- require 'mechanize'
3
- require 'amazon/aws'
4
- require 'amazon/aws/search'
5
-
6
- include Amazon::AWS
7
- include Amazon::AWS::Search
8
-
9
- class KindleHighlight
10
- attr_accessor :highlights
11
-
12
- def initialize(email_address, password)
13
- @agent = Mechanize.new
14
- page = @agent.get("https://www.amazon.com/ap/signin?openid.return_to=https%3A%2F%2Fkindle.amazon.com%3A443%2Fauthenticate%2Flogin_callback%3Fwctx%3D%252F&pageId=amzn_kindle&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.pape.max_auth_age=0&openid.assoc_handle=amzn_kindle&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select")
15
- @amazon_form = page.form('signIn')
16
- @amazon_form.email = email_address
17
- @amazon_form.password = password
18
- scrape_highlights
19
- end
20
-
21
- def scrape_highlights
22
- signin_submission = @agent.submit(@amazon_form)
23
- highlights_page = @agent.click(signin_submission.link_with(:text => /Your Highlights/))
24
- collected_highlights = Array.new
25
- highlights_page.search(".//div[@class='highlightRow yourHighlight']").each do |h|
26
- collected_highlights << Highlight.new(h)
27
- end
28
- self.highlights = collected_highlights
29
- end
30
- end
31
-
32
- class KindleHighlight::Highlight
33
-
34
- attr_accessor :annotation_id, :asin, :author, :title, :content
35
-
36
- @@amazon_items = Hash.new
37
-
38
- def initialize(highlight)
39
- self.annotation_id = highlight.xpath("form/input[@id='annotation_id']").attribute("value").value
40
- self.asin = highlight.xpath("p/span[@class='hidden asin']").text
41
- self.content = highlight.xpath("span[@class='highlight']").text
42
- amazon_item = lookup_or_get_from_cache(self.asin)
43
- self.author = amazon_item.item_attributes.author.to_s
44
- self.title = amazon_item.item_attributes.title.to_s
45
- end
46
-
47
- def lookup_or_get_from_cache(asin)
48
- unless @@amazon_items.has_key?(asin)
49
- request = Request.new
50
- request.locale = 'us'
51
- response = ResponseGroup.new('Small')
52
- lookup = Amazon::AWS::ItemLookup.new('ASIN', {'ItemId' => asin, 'MerchantId' => 'Amazon'})
53
- amazon_item = request.search(lookup, response).item_lookup_response[0].items.item.first
54
- @@amazon_items[asin] = amazon_item
55
- end
56
- @@amazon_items[asin]
57
- end
58
- end