little_fish 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,12 +3,17 @@
3
3
  This gem is a little tool for pulling infomation from boston bigpicture, which is a news site with beautiful photos.
4
4
  The reutrn info format is a data sructure looks like:
5
5
 
6
- bp: info
7
- description : text
8
- image_list : list
9
- image_url : string
10
- desc : text
11
-
6
+ ```ruby
7
+ bp_info{
8
+ :total_desc => "description for the whole theme of all photos"
9
+ :image_list => [
10
+ image{
11
+ :url => url
12
+ :desc => "description for the single photo"
13
+ }
14
+ ]#list of photos
15
+ }
16
+ ```
12
17
 
13
18
  ## Installation
14
19
 
@@ -25,11 +30,18 @@ Or install it yourself as:
25
30
  $ gem install little_fish
26
31
 
27
32
  ## Usage
28
- 1. demo
29
- little_fish --help
33
+ There are two use scenarios
34
+
35
+ 1. command line application
36
+ usually you can just type:
37
+ little_fish
38
+ for downdoading:
39
+ little_fish -d
40
+ more details plz dont be hesitated to call for help
41
+ little_fish --help
30
42
 
31
- 2. add this line in your application
32
-
43
+ 2. usage in your application
44
+
33
45
  ```ruby
34
46
  require 'little_fish'
35
47
  fisher = LittleFish::Fisher.new do |f|
@@ -37,6 +49,8 @@ fisher = LittleFish::Fisher.new do |f|
37
49
  f.dumpfile = 'temp.txt'#if not assigned, filename will be named by datetime. if assigned 'no', 'none', or 'false', it wont dump out any file
38
50
  end
39
51
  info = fisher.pull
52
+
53
+ urls = info[:images].map{|e| e[:url]} #to get the urls
40
54
  ```
41
55
 
42
56
  ## Contributing
@@ -3,10 +3,11 @@ require 'rss/2.0'
3
3
  require 'nokogiri'
4
4
  require 'open-uri'
5
5
  require 'timeout'
6
+ require 'net/http'
6
7
 
7
8
  module LittleFish
8
9
  class Fisher
9
- attr_accessor :url, :last_nth_item, :dumpfile
10
+ attr_accessor :url, :last_nth_item, :dumpfile, :download
10
11
  def initialize
11
12
  if block_given?
12
13
  yield self
@@ -14,6 +15,7 @@ module LittleFish
14
15
  @url = 'http://feeds.boston.com/boston/bigpicture/index'
15
16
  @last_nth_item = 0
16
17
  @dumpfile = './pic_output_' + Time.now.strftime('%H-%M-%S') + '.txt'
18
+ @download = false
17
19
  end
18
20
  end
19
21
 
@@ -30,12 +32,19 @@ module LittleFish
30
32
  unless ['none', 'NONE', 'no', 'NO', 'false', 'FALSE'].include? @dumpfile
31
33
  info 'dumping bp_info ... '
32
34
  f = File.new(@dumpfile, 'w')
33
- bp_info[:images].each do |imgs|
34
- f.puts imgs
35
+ bp_info[:images].each do |img|
36
+ f.puts img
35
37
  end
36
38
  info 'saved info in ' + @dumpfile
37
39
  end
38
40
 
41
+ if @download
42
+ info 'down loading photos ... '
43
+ urls = bp_info[:images].map{|img| img[:url]}
44
+ download(urls, 'lf_download')
45
+ info 'photos downloaded!'
46
+ end
47
+
39
48
  bp_info
40
49
  end
41
50
 
@@ -105,10 +114,17 @@ module LittleFish
105
114
  both.each do |e|
106
115
  img_url = e.children[1].attributes['src'].value
107
116
  img_info = e.children.last.content
108
- img_list << { img_url => img_info }
117
+ img_list << { :url =>img_url, :desc => img_info }
109
118
  end
110
119
  bp_info[:images] = img_list
111
120
  bp_info
112
121
  end
122
+
123
+ def download (urls, dir)
124
+ Dir.mkdir(dir) unless Dir.exists? dir
125
+ urls.each do |url|
126
+ `wget -c #{url} -P #{dir}`
127
+ end
128
+ end
113
129
  end
114
130
  end
@@ -17,6 +17,7 @@ module LittleFish
17
17
  def parse_options
18
18
  options = OptionParser.new
19
19
  options.banner = "Usage: littlefish [options]"
20
+ options.on('-d', '--download', "Download all photos after pulling" ) { @demo.download = true }
20
21
  options.on('-f', '--file FILENAME', "Dumping info into file name by datetime in current directory. NOTE: use '-f no', '-f none', or '-f false' will disable dumping into any file") { |filename| @demo.dumpfile = filename }
21
22
  options.on('-n', '--number NUM', "Pull last x th item by given num") { |n| @demo.last_nth_item = n.to_i }
22
23
  options.on('-u', '--url URL', "Redirect the url") { |url| @demo.url = url }
@@ -1,3 +1,3 @@
1
1
  module LittleFish
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: little_fish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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: 2012-05-05 00:00:00.000000000 Z
12
+ date: 2012-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70115706073680 !ruby/object:Gem::Requirement
16
+ requirement: &70173751263660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70115706073680
24
+ version_requirements: *70173751263660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70115706073220 !ruby/object:Gem::Requirement
27
+ requirement: &70173751263240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70115706073220
35
+ version_requirements: *70173751263240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: nokogiri
38
- requirement: &70115706072740 !ruby/object:Gem::Requirement
38
+ requirement: &70173751262820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70115706072740
46
+ version_requirements: *70173751262820
47
47
  description: my first toy gem
48
48
  email:
49
49
  - athom@126.com