Class: GSVManager

Inherits:
Object
  • Object
show all
Defined in:
lib/gsv_downloader/gsv_manager.rb

Overview

Google Street View manager

Instance Method Summary collapse

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)
	@options = options
	@downloader = ImageDownloaderParallel.new
	@db = DBRedis.new(options[:area_name])
	@scrawler = Crawler.new(options[:area_validator],@db)
	@images_per_subfolder = options[:sub_dir_size] || 1000
	@zoom_level = options[:zoom_level] || 3
	@dest_dir = options[:dest_dir] || "./images/#{options[: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_imagesObject



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_indexObject



28
29
30
# File 'lib/gsv_downloader/gsv_manager.rb', line 28

def panoramas_index
	@db.list()
end

#reset_crawlObject



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