Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
This paste will be private.
#!/usr/bin/env ruby require 'rubygems' require 'open-uri' require 'net/http' require 'hpricot' require 'uri' site = ARGV[0]; def get_size(url) uri = URI.parse(url) response = nil Net::HTTP.start(uri.host, uri.port) do |http| response = http.head(uri.path + ((uri.query) ? "?#{uri.query}" : "")) end response["content-length"].to_i end if site images = [] base = site.gsub(/[^\/]+$/, '') full_base = base.gsub(/^(.+\/\/[^\/]+).*/, '\1') doc = Hpricot(open(site)) (doc / "img").each do |image| src = image.attributes["src"] src = "#{full_base}#{src}" if src.match(/^\//) src = "#{base}#{src}" unless src.match(/^http/) width = image.attributes["width"].to_i height = image.attributes["height"].to_i size = 0 if (width.zero? && height.zero?) # make a HEAD request size = get_size(src) end images << { :src => src, :width => width, :height => height, :size => size || height * width} end images.sort! { |a, b| a[:size] <=> b[:size] } images.reverse.each do |image| puts "<img src='#{image[:src]}'/>#{image.inspect}" end end
From the Design Piracy series on my blog: