nokaya 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f30bdf81f7a713f60c36acf4f78e993c306f0c5
4
- data.tar.gz: 9f2037a5ae1f95ff17abf243e5077bc1124453c1
3
+ metadata.gz: 3a3dcc28605b1fb6c28e8d8bd198c0aacbf58d2c
4
+ data.tar.gz: 38f1f67e0b46b162860c1f221ccd9be4a115926c
5
5
  SHA512:
6
- metadata.gz: 5f5012272855e7946c7219a5fa362f5546666e85e6e2002a420c9d6898cd4364dbdb2f42868f13e3b404db180b85d6990f7a7cc5981d3a9332b11405876e4536
7
- data.tar.gz: 750f661bf436fb97147ed6a8f027bf72020aa0ab879a1d3f30e449ebae904006eae0972b12174274ac8396b8201c5c11dd03c439af4400db741a257cc7fb5360
6
+ metadata.gz: 1c32b568b79340c2063de1ff6f21ebf6affee813d874c5aeed2e8ba07f27358ce06707440b6ffdc283cd95b88311035a6c7a9863af9ef2f6b0094fa7f7ec4721
7
+ data.tar.gz: fd25392b2b1e9250769c4366ead047ac529a9f5e1691f422125e14b6d8e71df992e68d9781d22a45b60680741d7154d7957940a4c72f5bea0e65261d479bcdd1
data/CHANGELOG.md CHANGED
@@ -1,10 +1,16 @@
1
+ # 0.0.6
2
+
3
+ - Refactoring
4
+ - Bugfixes
5
+ - Tumblr page
6
+
1
7
  # 0.0.5
2
8
 
3
9
  - Flickr album
4
10
 
5
11
  # 0.0.4
6
12
 
7
- - Tumblr
13
+ - Tumblr image
8
14
  - Imgur album
9
15
 
10
16
  # 0.0.3
data/README.md CHANGED
@@ -28,17 +28,31 @@ Example:
28
28
 
29
29
  `nokaya -i http://ift.tt/1m2Nvz8 -n pasta`
30
30
 
31
- ### Tumblr
31
+ ### Tumblr post
32
32
 
33
- `nokaya -t url`
33
+ `nokaya -tu url`
34
34
 
35
- `nokaya -t url -n file_name`
35
+ `nokaya -tu url -n file_name`
36
36
 
37
37
  Example:
38
38
 
39
- `nokaya -t http://spacequest.tumblr.com/post/83560738152/sexycomics-carlos-valenzuela`
39
+ `nokaya -tu http://spacequest.tumblr.com/post/83560738152/sexycomics-carlos-valenzuela`
40
40
 
41
- `nokaya -t http://spacequest.tumblr.com/post/83560738152/sexycomics-carlos-valenzuela -n 'girl and monster'`
41
+ `nokaya -tu http://spacequest.tumblr.com/post/83560738152/sexycomics-carlos-valenzuela -n 'girl and monster'`
42
+
43
+ ### Tumblr page
44
+
45
+ Due to the various themes and layouts existing for Tumblr galleries, this feature may not work perfectly...
46
+
47
+ Nokaya will try several techniques to extract the image links, then will fallback to scraping all available links if failing at properly detecting photos.
48
+
49
+ `nokaya -tal url`
50
+
51
+ Example:
52
+
53
+ `nokaya -tal http://brekninger.tumblr.com`
54
+
55
+ Downloads all images in the page.
42
56
 
43
57
  ### Imgur album
44
58
 
data/lib/nokaya/app.rb CHANGED
@@ -10,94 +10,84 @@ module Nokaya
10
10
  map "-i" => :instagram
11
11
  option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
12
12
  def instagram *args
13
- abort Status.no_url if args.empty?
13
+ check_args args
14
14
  nokaya = Getter.new options, :instagram, args
15
- page = nokaya.parse_page
16
- img_link = nokaya.get_basic page
17
- begin
18
- download_and_save img_link, nokaya
19
- rescue Interrupt
20
- abort Status.canceled
21
- end
15
+ basic nokaya
22
16
  end
23
17
 
24
18
  desc "favd", 'Get the photo from a Favd page (nokaya favd url)'
25
19
  option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
26
20
  def favd *args
27
- abort Status.no_url if args.empty?
21
+ check_args args
28
22
  nokaya = Getter.new options, :favd, args
29
23
  page = nokaya.parse_page
30
24
  img_link = nokaya.get_favd page
31
- begin
32
- download_and_save img_link, nokaya
33
- rescue Interrupt
34
- abort Status.canceled
35
- end
25
+ save_pic img_link, nokaya
36
26
  end
37
27
 
38
28
  desc "adn", "Get the photo from a photos.app.net page (nokaya adn url)"
39
29
  option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
40
30
  def adn *args
41
- abort Status.no_url if args.empty?
31
+ check_args args
42
32
  nokaya = Getter.new options, :adn, args
43
- page = nokaya.parse_page
44
- img_link = nokaya.get_basic page
45
- begin
46
- download_and_save img_link, nokaya
47
- rescue Interrupt
48
- abort Status.canceled
49
- end
33
+ basic nokaya
50
34
  end
51
35
 
52
- desc "tumblr", "Get the photo from a Tumblr photo page (nokaya -t url)"
53
- map "-t" => :tumblr
36
+ desc "tumblr", "Get the photo from a Tumblr post (nokaya -tu url)"
37
+ map "-tu" => :tumblr
54
38
  option :name, aliases: "-n", type: :string, desc: "Specify a file name without extension"
55
39
  def tumblr *args
56
- abort Status.no_url if args.empty?
40
+ check_args args
57
41
  nokaya = Getter.new options, :tumblr, args
42
+ basic nokaya
43
+ end
44
+
45
+ desc "tumblr_album", "Get all images from a Tumblr page (nokaya -tal url)"
46
+ map "-tal" => :tumblr_album
47
+ def tumblr_album *args
48
+ check_args args
49
+ nokaya = Getter.new options, :tumblr_album, args
58
50
  page = nokaya.parse_page
59
- img_link = nokaya.get_basic page
60
- begin
61
- download_and_save img_link, nokaya
62
- rescue Interrupt
63
- abort Status.canceled
64
- end
51
+ img_links = nokaya.get_tumblr_album page
52
+ save_album img_links, nokaya
65
53
  end
66
54
 
67
55
  desc "imgur_album", "Get all images from an Imgur album (nokaya -ial url)"
68
56
  map "-ial" => :imgur_album
69
57
  def imgur_album *args
70
- abort Status.no_url if args.empty?
58
+ check_args args
71
59
  nokaya = Getter.new options, :imgur_album, args
72
60
  page = nokaya.parse_page
73
61
  img_links = nokaya.get_imgur_album page
74
- begin
75
- download_album img_links, nokaya
76
- rescue Interrupt
77
- abort Status.canceled
78
- end
62
+ save_album img_links, nokaya
79
63
  end
80
64
 
81
65
  desc "flickr_album", "Get all images from a Flickr album (nokaya -fal url)"
82
66
  map "-fal" => :flickr_album
83
67
  def flickr_album *args
84
- abort Status.no_url if args.empty?
68
+ check_args args
85
69
  nokaya = Getter.new options, :flickr_album, args
86
70
  page = nokaya.parse_page
87
71
  img_links = nokaya.get_flickr_album page
88
- begin
89
- download_album img_links, nokaya
90
- rescue Interrupt
91
- abort Status.canceled
92
- end
72
+ save_album img_links, nokaya
93
73
  end
94
74
 
95
75
  private
96
76
 
77
+ def basic nokaya
78
+ page = nokaya.parse_page
79
+ img_link = nokaya.get_basic page
80
+ save_pic img_link, nokaya
81
+ end
82
+
83
+ def check_args args
84
+ abort Status.no_url if args.empty?
85
+ end
86
+
97
87
  def download_and_save img_link, nokaya
98
88
  puts Status.downloading img_link
99
89
  path = Image.photo_name nokaya
100
- Image.save_image(path, nokaya.get_image(img_link))
90
+ Image.save_image(path, img_link)
101
91
  puts Status.saved path
102
92
  end
103
93
 
@@ -107,10 +97,26 @@ module Nokaya
107
97
  parsed = URI.parse link
108
98
  file = "#{Dir.home}/Downloads/#{parsed.path.split("/").last}"
109
99
  puts Status.saving file
110
- Image.save_image(file, nokaya.get_image(link))
100
+ Image.save_image(file, link)
111
101
  end
112
102
  puts Status.done
113
103
  end
114
104
 
105
+ def save_pic img_link, nokaya
106
+ begin
107
+ download_and_save img_link, nokaya
108
+ rescue Interrupt
109
+ abort Status.canceled
110
+ end
111
+ end
112
+
113
+ def save_album img_links, nokaya
114
+ begin
115
+ download_album img_links, nokaya
116
+ rescue Interrupt
117
+ abort Status.canceled
118
+ end
119
+ end
120
+
115
121
  end
116
122
  end
data/lib/nokaya/getter.rb CHANGED
@@ -16,13 +16,6 @@ module Nokaya
16
16
  def url
17
17
  @args.url
18
18
  end
19
- def get_image img_link
20
- begin
21
- open(img_link).read
22
- rescue
23
- abort Status.no_can_do
24
- end
25
- end
26
19
  def get_basic page
27
20
  page.xpath("//meta[@property='og:image']/@content").first
28
21
  end
@@ -35,6 +28,22 @@ module Nokaya
35
28
  refs.each {|l| links << "http:#{l['href']}"}
36
29
  links
37
30
  end
31
+ def get_tumblr_album page
32
+ queries = ['img.photo', '.post .photo a img', '.entry img', 'article img', '.image img', '.item_content img', 'img.post-image', '.box img', '#allposts img', '.media img', '.wide img', '.big img', '.large img', '.gallery img', '.photos img', 'img']
33
+ queries.each do |query|
34
+ @refs = page.css query
35
+ next if @refs.empty?
36
+ break
37
+ end
38
+ links = []
39
+ @refs.each do |l|
40
+ target = l['src']
41
+ unless (target == 'reblog.png' || target =~ /statcounter/ || target =~ /impixu/ || target =~ /quantserve/ || target == 'like.png')
42
+ links << target
43
+ end
44
+ end
45
+ links
46
+ end
38
47
  def get_flickr_album page
39
48
  refs = page.css('.pc_img')
40
49
  links = []
@@ -42,11 +51,7 @@ module Nokaya
42
51
  links
43
52
  end
44
53
  def parse_page
45
- Nokogiri::HTML get_page_content
46
- end
47
- private
48
- def get_page_content
49
- open @args.url
54
+ Nokogiri::HTML(open @args.url)
50
55
  end
51
56
  end
52
57
  end
data/lib/nokaya/image.rb CHANGED
@@ -8,10 +8,18 @@ module Nokaya
8
8
  Dir.home + "/Downloads/#{nokaya.type.to_s}-#{nokaya.options[:name]}.jpg"
9
9
  end
10
10
  end
11
- def self.save_image path, content
11
+ def self.save_image path, link
12
+ content = self.get_image link
12
13
  f = File.new(path, "wb")
13
14
  f.puts(content)
14
15
  f.close
15
16
  end
17
+ def self.get_image img_link
18
+ begin
19
+ open(img_link).read
20
+ rescue
21
+ abort Status.no_can_do
22
+ end
23
+ end
16
24
  end
17
25
  end
@@ -1,3 +1,3 @@
1
1
  module Nokaya
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokaya
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Dejonckheere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-08 00:00:00.000000000 Z
11
+ date: 2014-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor