class RedditImage
Public Class Methods
new(sub, qty=25, directory="images", endpoint=nil, after_pointer=nil)
click to toggle source
# File lib/reddit_junkie.rb, line 6 def initialize(sub, qty=25, directory="images", endpoint=nil, after_pointer=nil) @sub = sub @qty = qty @directory = directory @endpoint = endpoint @after_pointer = after_pointer @after_pointer_temporary = nil @index = 0 end
Public Instance Methods
download_images()
click to toggle source
# File lib/reddit_junkie.rb, line 47 def download_images if @endpoint == nil if @after_pointer == nil response = HTTParty.get("https://reddit.com/r/#{@sub}.json?limit=#{@qty}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) else response = HTTParty.get("https://reddit.com/r/#{@sub}.json?limit=#{@qty}&after=#{@after_pointer}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) end else if @after_pointer == nil response = HTTParty.get("https://reddit.com/r/#{@sub}/#{@endpoint}.json?limit=#{@qty}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) else response = HTTParty.get("https://reddit.com/r/#{@sub}/#{@endpoint}.json?limit=#{@qty}&after=#{@after_pointer}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) end end json_response = JSON.parse(response.body) data = json_response['data']['children'] if Dir::exists?"#{@directory}" puts "The directory \"#{@directory}\" exists!" Dir::chdir("#{@directory}") else Dir::mkdir("#{@directory}") Dir::chdir("#{@directory}") end count_min = 0 #count_max = @qty % 100 ? @qty / 100 : "Sorry!" if @qty % 100 == 0 count_max = @qty / 100 elsif @qty < 100 count_max = 1 else puts "Sorry, not supported in this version" end while count_min < count_max if @qty <= 100 links = [] data.each do |datum| datum = datum['data'] if datum['post_hint'] == "image" links << datum['url_overridden_by_dest'] end end file_name_base = 1 links.each do |link| if link != nil file_name = "#{@sub}-#{file_name_base}.jpg" final_image = File.open(file_name, "wb") final_image.write(HTTParty.get(link)) puts "Wrote on #{file_name}" file_name_base += 1 sleep 0.5 final_image.close end end else if count_min > 0 self.get_info self.update_data end links = [] data.each do |datum| datum = datum['data'] if datum['post_hint'] == "image" links << datum['url_overridden_by_dest'] end end file_name_base = count_min > 0 ? count_min * 100 : 1 links.each do |link| if link != nil file_name = "#{@sub}-#{file_name_base}.jpg" final_image = File.open(file_name, "wb") final_image.write(HTTParty.get(link)) puts "Wrote on #{file_name}" file_name_base += 1 sleep 0.5 final_image.close end end end count_min += 1 end Dir::chdir("..") return links end
get_info()
click to toggle source
# File lib/reddit_junkie.rb, line 16 def get_info puts "Going to crawl: " puts "https://reddit.com/r/#{@sub}" if @endpoint == nil if @after_pointer == nil response = HTTParty.get("https://reddit.com/r/#{@sub}.json?limit=#{@qty}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) else response = HTTParty.get("https://reddit.com/r/#{@sub}.json?limit=#{@qty}&after=#{@after_pointer}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) end else if @after_pointer == nil response = HTTParty.get("https://reddit.com/r/#{@sub}/#{@endpoint}.json?limit=#{@qty}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) else response = HTTParty.get("https://reddit.com/r/#{@sub}/#{@endpoint}.json?limit=#{@qty}&after=#{@after_pointer}", headers: {"User-agent" => "Reddit Image Downloader 1.0"}) end end after_pointer = JSON.parse(response.body) after_pointer = after_pointer['data']['after'] puts "The value of \"after\" pointer is: #{after_pointer}" @after_pointer_temporary = after_pointer end
update_data()
click to toggle source
# File lib/reddit_junkie.rb, line 41 def update_data @after_pointer = @after_pointer_temporary #@index = @index + 1 #@directory = @directory + @index.to_s end