Class: GSVManager
- Inherits:
-
Object
- Object
- GSVManager
- Defined in:
- lib/gsv_downloader/gsv_manager.rb
Overview
Google Street View manager
Instance Method Summary collapse
- #crawl_metadata(from_pano_id = nil) ⇒ Object
- #download_missing_images ⇒ Object
- #get_metadata(pano_id) ⇒ Object
-
#initialize(options) ⇒ GSVManager
constructor
options = { crawl_session: “paris”, area_validator: lambda { |json_response| description = json_response[“region”] description.nil? == false }, image_zoom: 3, dest_dir: “./paris”, sub_dir_size: 1000 }.
- #panoramas_index ⇒ Object
- #reset_crawl ⇒ Object
Constructor Details
#initialize(options) ⇒ GSVManager
options = { crawl_session: “paris”, area_validator: lambda { |json_response| description = json_response[“region”] description.nil? == false }, image_zoom: 3, dest_dir: “./paris”, sub_dir_size: 1000 }
18 19 20 21 22 23 24 25 26 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 18 def initialize() @options = @downloader = ImageDownloaderParallel.new @db = DBRedis.new([:area_name]) @scrawler = Crawler.new([:area_validator],@db) @images_per_subfolder = [:sub_dir_size] || 1000 @zoom_level = [:zoom_level] || 3 @dest_dir = [:dest_dir] || "./images/#{[:area_name]}" end |
Instance Method Details
#crawl_metadata(from_pano_id = nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 32 def (from_pano_id = nil) puts "#{@db.crawled_count()} panoramas scrawled, #{@db.nb_panoramas()} withing the area" if (from_pano_id.nil?) pano_ids = @db.not_scrawled() puts " #{pano_ids.size} panorama in the queue" @scrawler.start(pano_ids) if pano_ids.size > 0 else @scrawler.start([from_pano_id]) end end |
#download_missing_images ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 52 def download_missing_images() pano_ids = @db.images_to_download() progress = ProgressBar.create( :title => "images download for #{@options[:area_name]}", :total => pano_ids.size) # by default 1 thread but you can increase the multi-tread i = 0 Parallel.each(pano_ids, :in_threads => 20, :finish => lambda { |i, item| progress.increment }) do |pano_id| @downloader.download(pano_id, @zoom_level, get_dir(i)) i += 1 end end |
#get_metadata(pano_id) ⇒ Object
48 49 50 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 48 def (pano_id) @db.(pano_id) end |
#panoramas_index ⇒ Object
28 29 30 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 28 def panoramas_index @db.list() end |
#reset_crawl ⇒ Object
43 44 45 46 |
# File 'lib/gsv_downloader/gsv_manager.rb', line 43 def reset_crawl puts "#{@db.crawled_count()} panoramas scrawled, #{@db.nb_panoramas()} withing the area" @db.reset_crawl end |