def find
      reset; return @images unless @url
      @page_no = @options["start"]
      until @images.count > @options["total"] || thread_has_ended?
        page      = @agent.get "#{@url}&page=#{@page_no}"
        puts "[VERBOSE] Searching: #{@url}&page=#{@page_no}" if @options["verbose"] && options["cli"]
        sources   = page.image_urls.map{|x| x.to_s}
        sources   = filter_images sources # hook for sub-classes
        @page_no += 1
        continue if sources.empty?
        sources.each do |source|
          hash = Digest::MD5.hexdigest(source)
          unless @images.has_key?(hash)
            @images[hash] = {url: source}
            puts source if options["cli"]
          end
        end
      end
      @images = @images.map{|x, y| y}
    end
def find
      reset; return @images unless @url
      @page_no = @options["start"]
      until @images.count > @options["total"] || thread_has_ended?
        page      = @agent.get "#{@url}&page=#{@page_no}"
        puts "[VERBOSE] Searching: #{@url}&page=#{@page_no}" if @options["verbose"] && options["cli"]
        sources   = page.image_urls.map{|x| x.to_s}
        sources   = filter_images sources # hook for sub-classes
        @page_no += 1
        continue if sources.empty?
        sources.each do |source|
          hash = Digest::MD5.hexdigest(source)
          unless @images.has_key?(hash)
            @images[hash] = {url: source}
            puts source if options["cli"]
          end
        end
      end
      @images = @images.map{|x, y| y}
    end
find images for this thread, specified by starting page_no