teamon.eu

blah blah blah

Łatwiejsze drukowanie z klp.pl

07 września 2008

Kategorie:

Tagi:

  • Ruby
  • klp.pl

Serwis klp.pl znają chyba wszyscy uczniowie. Portal nie raz ratował życie mojej klasie (liceum, mat-fiz-inf :p). Posiada jednak jedną wadę - nie można wydrukować na raz całego artykułu tylko trzeba odwiedzić każdą strone po kolei.

Tak było do dziś! Postanowiłem umilić sobie i innym drukowanie, a wynikiem tego postanowienia jest 40 linijek kodu w Ruby. Smacznego.

Sposób użycia:

ruby klp.rb http://ludzie-bezdomni.klp.pl/a-8239.html > ludzie-bezdomni.html

Dla zainteresowanych jeszcze którki opis. Program pobiera wersje do druku (pierwszą stronę) sprawdza ilość stron, pobiera je wszystkie i łączy.

 
require 'net/http'
require 'iconv'
 
class Klp
  def initialize(url)
    @http = Net::HTTP.new('klp.pl')
    match = url.match(%r[http://(.+).klp.pl/a-(\d+).html])
    @name = match[1]
    @id = match[2]
    @content = [] 
  end
 
  def fetch_page(page)
    resp, body = @http.get "/doda.php?akcja=druk&ida=#{@id}&strona=#{page}"
    Iconv.iconv('utf-8', 'iso-8859-2', body).first
  end
 
  def parse_content(body)
    body[%r[</h1>(.+)strona: &nbsp;&nbsp;]um, 1]
  end
 
  def join
    page = fetch_page(1)
    @title = page[%r[<h1>(.+?)</h1>], 1]
    pages_count = page.scan(%r[<a href=\?akcja=druk&ida=\d+&strona=(\d+)>]u).flatten.map {|e| e.to_i}.max
    @content << parse_content(page)
    if pages_count > 1
      (2..pages_count).each do |p|
        @content << parse_content(fetch_page(p))
      end
    end
 
    puts @title
    puts "----"
    puts @content
  end
end
 
Klp.new(ARGV[0]).join
 

P.S. Czytajcie lektury!

P.S. 2 Wersja online: http://klp.heroku.com

11 komentarzy

  • anoriell 07 września 2008 23:08:55

    Oczywiście. Będziemy czytać :>

  • Piotr Eckhardt 07 września 2008 23:13:31

    Idzie to jakoś zastosować pod windows?

  • Teamon 07 września 2008 23:14:03

    Za pare minut podam link do wersji online ;]

  • Teamon 07 września 2008 23:43:40

    Wersja online dostępna pod adresem http://radiowezel.net

  • mg6maciej 08 września 2008 00:35:59

    Popraw linka w poście: htp://teamon.drakor.eu/klp.rb

  • Teamon 08 września 2008 00:36:44

    Poprawione. Dzięki ;)

  • Wasacz 04 października 2008 20:28:47

    O, dzięki wielkie ;]

  • cimlik 08 października 2008 08:58:51

    Poczytaj komentarze do i uważaj, żeby nie skończyło się blokadą: http://blog.mwojcik.pl/2008/03/17/pelne-streszczenie-lektury-z-klppl-na-jednej-stronie/

  • teamon 08 października 2008 13:14:38

    @cimlik - ja tego nie publikuje, moj kod sluzy tylko i wylacznie do drukowania, co tak czy tak mozna zrobic wprost ze strony klp (tyle ze trzeba przejsc przez wszystkie strony a tu program robi to za nas)

  • cimlik 08 października 2008 15:18:50

    teamon: na identycznej zasadzie działał skrypt MatheWa.

  • hzakbnrt 07 sierpnia 2009 11:16:09

    [URL=http://sdijdeyj.com]onrbqlnv[/URL] fnsxeiqn http://xfwyamus.com utelsign zrbiilhq <a href="http://rxapvany.com">cvefruun</a>

Zostaw komentarz

code