class Fourchanify::Request
Attributes
board[RW]
image_count[RW]
images[RW]
thread_id[RW]
url[RW]
Public Class Methods
download(url)
click to toggle source
# File lib/fourchanify/models/request.rb, line 43 def self.download(url) request = Request.prepare(url) directory_name = request.create_directory request.broadcast request.images.each do |image| image.download(directory_name) end puts "\n" end
get_first_thread_no(board)
click to toggle source
# File lib/fourchanify/models/request.rb, line 27 def self.get_first_thread_no(board) sleep 1 api_url = "http://api.4chan.org/#{board}/threads.json" begin json = JSON.parse(open(api_url).read) json.first['threads'].first['no'] rescue raise JSONError, "JSON processing failed. Please try again" end end
get_image_count(board, thread_id)
click to toggle source
# File lib/fourchanify/models/request.rb, line 38 def self.get_image_count(board, thread_id) posts = self.get_posts(board, thread_id) posts.first["images"] end
get_posts(board, thread_id)
click to toggle source
# File lib/fourchanify/models/request.rb, line 16 def self.get_posts(board, thread_id) sleep 1 api_url = "http://api.4chan.org/#{board}/res/#{thread_id}.json" begin json = JSON.parse(open(api_url).read) json["posts"] rescue raise JSONError, "JSON processing failed. Please try again" end end
prepare(url)
click to toggle source
# File lib/fourchanify/models/request.rb, line 5 def self.prepare(url) fourchan_url = FourchanUrler::Request.new(url) request = Request.new request.url = url request.board = fourchan_url.board request.thread_id = fourchan_url.thread_id request.prepare_images request end
Public Instance Methods
broadcast()
click to toggle source
# File lib/fourchanify/models/request.rb, line 53 def broadcast puts "=== Fourchanify ===" puts "images: #{self.image_count}" end
create_directory()
click to toggle source
# File lib/fourchanify/models/request.rb, line 58 def create_directory directory_name = "#{self.board}_#{self.thread_id}" Dir.mkdir("./#{directory_name}") directory_name end
prepare_images()
click to toggle source
# File lib/fourchanify/models/request.rb, line 64 def prepare_images posts = Request.get_posts(self.board, self.thread_id) posts_with_images = posts.select {|p| p["filename"] && p["ext"] } # images in replies + the image of OP self.image_count = posts.first["images"] + 1 self.images = [] posts_with_images.each do |p| image = Image.prepare(:filename => p["filename"], :ext => p["ext"], :fsize => p["fsize"], :tim => p["tim"], :board => self.board) self.images << image end end