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