xkcd 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/xkcd +2 -2
  2. data/lib/xkcd.rb +15 -23
  3. metadata +40 -35
data/bin/xkcd CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'xkcd'
3
- puts XKCD.get
4
- puts XKCD.
3
+ puts XKCD.img
4
+
@@ -1,8 +1,6 @@
1
- #!/usr/bin/env ruby
2
- require 'nokogiri'
1
+ #!/usr/bin/evn ruby
2
+ require 'net/http'
3
3
  require 'open-uri'
4
- require 'json'
5
-
6
4
  # The main XKCD driver
7
5
  class XKCD
8
6
  # Get img/comic URL from xkcd
@@ -14,27 +12,21 @@ class XKCD
14
12
  # >> XKCD.comic
15
13
  # => "http://xkcd.com/891/"
16
14
 
17
- def self.comic
18
- open('http://dynamic.xkcd.com/random/comic/').base_uri.to_s
15
+ def self.comic()
16
+ # This method gets random comic links from xkcd, the uri is the redirected location found in the resp headers
17
+ uri = URI.parse 'http://dynamic.xkcd.com/random/comic/'
18
+ req = Net::HTTP::Get.new(uri.request_uri)
19
+ http = Net::HTTP.new(uri.host)
20
+ res = http.start { |server|
21
+ server.request(req)
22
+ }
23
+ res["location"]
19
24
  end
20
25
 
21
- class << XKCD
22
- alias_method :get, :comic
23
- end
24
-
25
- =begin
26
- def self.img
27
- img = Nokogiri::HTML(open('http://dynamic.xkcd.com/random/comic/')).css('#comic img')[0]
28
- img_url = img.attributes["src"].value
29
- img_title = img.attributes["title"].value
30
- "#{img_title} : #{img_url}"
31
- end
32
- =end
33
26
  def self.img
34
- max = JSON.parse(open('http://xkcd.com/info.0.json').read)["num"]
35
- comic_num = Random.rand(max)
36
- comic_num = 1 if comic_num == 404 # Avoid 404th comic ;)
37
- comic = JSON.parse(open("http://xkcd.com/#{random_comic}/info.0.json").read)
38
- "#{comic['alt']} : #{comic['img']}"
27
+ url = 'http://dynamic.xkcd.com/random/comic/'
28
+ html = open(url).read()
29
+ imgs = URI.extract(html).select{ |l| l[/comics\//]}
30
+ imgs.first
39
31
  end
40
32
  end
metadata CHANGED
@@ -1,63 +1,68 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: xkcd
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 8
10
+ version: 0.0.8
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Hemanth.HM
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-05-20 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: nokogiri
16
- requirement: &73470780 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 1.5.2
22
- - - ! '>='
23
- - !ruby/object:Gem::Version
24
- version: 1.5.0
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: *73470780
17
+
18
+ date: 2012-05-20 00:00:00 Z
19
+ dependencies: []
20
+
28
21
  description: A simple gem to get random img/comic url from xkcd
29
22
  email: hemanth.hm@gmail.com
30
- executables: []
23
+ executables:
24
+ - xkcd
31
25
  extensions: []
26
+
32
27
  extra_rdoc_files: []
33
- files:
28
+
29
+ files:
34
30
  - Rakefile
35
31
  - lib/xkcd.rb
36
32
  - bin/xkcd
37
33
  - test/test_karam.rb
38
34
  homepage: http://rubygems.org/gems/xkcd
39
35
  licenses: []
36
+
40
37
  post_install_message:
41
38
  rdoc_options: []
42
- require_paths:
39
+
40
+ require_paths:
43
41
  - lib
44
- required_ruby_version: !ruby/object:Gem::Requirement
42
+ required_ruby_version: !ruby/object:Gem::Requirement
45
43
  none: false
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
- required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 3
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
52
  none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
56
60
  requirements: []
61
+
57
62
  rubyforge_project:
58
- rubygems_version: 1.8.10
63
+ rubygems_version: 1.8.24
59
64
  signing_key:
60
65
  specification_version: 3
61
66
  summary: XCKD random img urls!
62
- test_files:
67
+ test_files:
63
68
  - test/test_karam.rb