class BookFinder::Libgen

Constants

BASE_URL

Attributes

books[W]
columns[RW]
row[RW]

Public Instance Methods

books() click to toggle source
# File lib/libgen.rb, line 31
def books
  @books = @rows.map { |r|
    @columns.zip(vals(r)).to_h
  }
end

Private Instance Methods

initialize_columns() click to toggle source
# File lib/libgen.rb, line 39
def initialize_columns
  dom_cols = @doc.search('[@bgcolor="#C0C0C0"]').first.children
  @columns = dom_cols.map { |col|
    col.content.strip.downcase.tr("()", "") unless col.content.strip.empty?
  }

  @columns.compact!
  @columns.shift
  @columns.pop
end
initialize_rows() click to toggle source
# File lib/libgen.rb, line 69
def initialize_rows
  @rows = [@doc.search('[@bgcolor="#C6DEFF"]'),
           @doc.search('[@bgcolor=""]'),].flatten
end
vals(row) click to toggle source
# File lib/libgen.rb, line 50
def vals(row)
  full_vals = []
  vals = row.content.split("\r\n\t\t\t\t")
  vals.pop
  vals.shift

  authors = vals.shift.split(",")
  a_authors = row
    .children[2]
    .search("a")
    .map { |a| a.attribute("href").to_s }
  full_vals << authors.zip(a_authors).to_h

  7.times { full_vals << vals.shift }

  full_vals << row.children[18..22].search("a").map { |a| a.attribute("href").to_s }
  full_vals
end