eKsiążki
https://forum.eksiazki.org/

Biblia na czytnik
https://forum.eksiazki.org/ogolnie-o-eczytnikach-f155/biblia-na-czytnik-t9540-15.html
Strona 2 z 5

Autor:  inkognit [ 07 lut 2011 20:20:19 ]
Tytuł:  Re: Biblia na czytnik

czasem można się pogubić ...

Autor:  Vroo [ 31 maja 2011 13:49:57 ]
Tytuł:  Re: Biblia na czytnik

http://swiatczytnikow.pl/biblia-na-kind ... u-theword/
http://piotrkontek.wordpress.com/2011/0 ... na-kindle/

Tu pomysł na skonwertowanie do HTML plików programu TheWord, a zrobienie z tego EPUB/MOBI jest już proste.

A wspomniana wyżej HCSB jest już od pewnego czasu za darmo :)

Autor:  t3d [ 15 sie 2011 19:45:32 ]
Tytuł:  Re: Biblia na czytnik

Mój pythonowy skrypt dojrzał na tyle, że można zacząć z nim eksperymentować:
https://github.com/t3d/project_b/blob/m ... oject_b.py
Wymaga pythona i lxml. Skrypt ma pobierać księgi pisma świętego i robić z nich zbiorczy plik html z przypisami na końcu.
Aktualnie jest ustawiony na pobieranie wszystkich ksiąg starego testamentu i wywalanie ich na ekran, więc można przekierować wyjście do pliku wywołując go
Kod:
python project_b.py > plik.html

Samo pobieranie trwa dobre kilka minut i owocuje około ośmiomegabajtowym plikiem, który potrafi na chwilę przymulić przeglądarkę.

Jest tu jeszcze kilka rzeczy do poprawienia. Na razie zauważyłem, że gubiona jest treść przypisów w niektórych rozdziałach, a poza tym gdzieś leży niedomknięty tag, który powoduje, że od pewnego miejsca cała treść jest pisana kursywą.

EDIT:
Błąd z kursywą zlokalizowany w przypisach: http://biblia.deon.pl/rozdzial.php?id=1205
Ciekawe, czy jak dam znać adminom, to naprawią... :P

EDIT2:
Uporałem się z przypisami i kursywą. Został mi tylko jeden rozpoznany defekt, a mianowicie dziwna sytuacja z przypisem bez linku przy Sdz 1,1: http://biblia.deon.pl/rozdzial.php?id=1137

Autor:  Zefiryn [ 16 sie 2011 11:43:24 ]
Tytuł:  Re: Biblia na czytnik

Nie wiem, czy czegoś więcej potrzeba niż mam zainstalowane, ale nie mogę tym skryptem ściągnąć nic. Po 20 minutach oczekiwania wciskam ctrl+c i dostaję informację:
Kod:
Traceback (most recent call last):
  File "project_b.py", line 138, in <module>
    test.GetBook(book)
  File "project_b.py", line 44, in GetBook
    response = urllib2.urlopen(urllib2.Request(url, data)).read()
  File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.6/urllib2.py", line 397, in open
    response = meth(req, response)
  File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.6/urllib2.py", line 429, in error
    result = self._call_chain(*args)
  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.6/urllib2.py", line 616, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python2.6/urllib2.py", line 391, in open
    response = self._open(req, data)
  File "/usr/lib/python2.6/urllib2.py", line 409, in _open
    '_open', req)
  File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.6/urllib2.py", line 1172, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.6/urllib2.py", line 1144, in do_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/lib/python2.6/httplib.py", line 910, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.6/httplib.py", line 947, in _send_request
    self.endheaders()
  File "/usr/lib/python2.6/httplib.py", line 904, in endheaders
    self._send_output()
  File "/usr/lib/python2.6/httplib.py", line 776, in _send_output
    self.send(msg)
  File "/usr/lib/python2.6/httplib.py", line 735, in send
    self.connect()
  File "/usr/lib/python2.6/httplib.py", line 716, in connect
    self.timeout)
  File "/usr/lib/python2.6/socket.py", line 500, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
KeyboardInterrupt


Zainstalowane pod linuksem mam pythona 2.6.5 i python-lxml-2.2.6

Autor:  t3d [ 16 sie 2011 13:06:45 ]
Tytuł:  Re: Biblia na czytnik

Dodałem dziś generowanie spisu treści (linki do poszczególnych ksiąg). I natrfiłem na kolejną księgę ze źle zrobionymi przypisami: http://biblia.deon.pl/rozdzial.php?id=17 (rozjechane numery).

Zefiryn napisał(a):
Nie wiem, czy czegoś więcej potrzeba niż mam zainstalowane, ale nie mogę tym skryptem ściągnąć nic.

A co zapisał do pliku?

Autor:  Zefiryn [ 16 sie 2011 14:53:50 ]
Tytuł:  Re: Biblia na czytnik

Przy wypisywaniu na ekran doszedł do zamknięcia sekcji head i tak zawisł. Po dwudziestu minutach ubiłem proces i wysokczył powyższy zrzut. Przy przekierowaniu do pliku po ubiciu plik był pusty.

Autor:  t3d [ 16 sie 2011 15:33:43 ]
Tytuł:  Re: Biblia na czytnik

Hm, a spróbuj zamienić
Kod:
            response = urllib2.urlopen(urllib2.Request(url, data)).read()
            doc = html.fromstring(response)

na
Kod:
            response = urllib2.urlopen(urllib2.Request(url, data))
            doc = html.fromstring(response.read())
            response.close()

i koniecznie daj mi znać :D

Autor:  Zefiryn [ 16 sie 2011 16:01:38 ]
Tytuł:  Re: Biblia na czytnik

To chyba uroda mojego połączenia. Kiedy skróciłem tablicę z księgami do pierwszej oraz ilość ksiąg do 1, to plik ładnie się utworzył. Teraz od 4 minut próbuję ściągnąć całą księgę rodzaju. iptraf pokazuje mi, że jest nawiązywane połączenie i ściąga się ok 20kb tylko trwa to dość długo. Przerobienie połączeń dla wszystkich ksiąg może u mnie potrwać. Zobaczę ile zajmie Księga Rodzaju.

Autor:  t3d [ 16 sie 2011 17:43:54 ]
Tytuł:  Re: Biblia na czytnik

Księga Rodzaju akurat nie należy do krótkich i jeśli poprzednio nie miałeś nic po 20 minutach, to znaczy że nie pobrałeś tej księgi do końca (aktualnie tekst ksiąg jest wyrzucany na output w partiach po 1 księdze z przypisami na raz). Możesz sobie potestować np. na "Ag" - jedynie 2 rozdziały :).

Możesz w ogóle wyciąć pętlę
Kod:
for book in oldTes:
    test.GetBook(book)
    test.PrintBookContent()
    #print book

A na jej miejsce wpisać
Kod:
test.GetBook('Ag') # w apostrofach nazwa księgi taka jak w oldTes, albo newTes
test.PrintBookContent()

Autor:  Zefiryn [ 16 sie 2011 21:04:09 ]
Tytuł:  Re: Biblia na czytnik

Po 30 minutach udało mi się pobrać Księgę Rodzaju. Za bardzo zasugerowałem się informacją, że pobieranie trwa tylko kilka minut, t3d musi mieć lepsze łącze.

Autor:  airs [ 17 sie 2011 1:06:45 ]
Tytuł:  Re: Biblia na czytnik

t3d napisał(a):
Możesz w ogóle wyciąć pętlę
Kod:
for book in oldTes:
    test.GetBook(book)
    test.PrintBookContent()
    #print book

A na jej miejsce wpisać
Kod:
test.GetBook('Ag') # w apostrofach nazwa księgi taka jak w oldTes, albo newTes
test.PrintBookContent()

U mnie pod Windows XP (python 2.6.5 + lxml 2.2.4) działa - pisze ładnie do pliku. Ale aktualna wersja, z pętlą czy bez, po wpisaniu nazwy księgi, ładuje do pliku pełny spis treści i wkleja daną księgę tyle razy ile jest wszystkich ksiąg ;)

Autor:  t3d [ 17 sie 2011 11:28:49 ]
Tytuł:  Re: Biblia na czytnik

tak, pobieranie jednej księgi to na razie nieoficjalny hack :P

Na razie chcę jeszcze wyeliminować defekty w treści (w nowym testamencie zostały 2 miejsca gdzie są złe linki). Następny etap to będzie przestawienie skryptu na działanie na plikach i pobieranie parametrów z linii poleceń. Będę musiał pomyśleć nad jaką sensowną składnią.
Obecnie mam taki plan:
1. parametr ustawiający co pobrać z 4 opcjami:
  • komplet ksiąg Starego i Nowego Testamentu (wraz ze spisem)
  • tylko NT (i spis NT)
  • tylko ST (i spis ST)
  • wybrana księga bez spisu
2. parametr określający plik wyjściowy (opcjonalnie)

Autor:  t3d [ 24 sie 2011 16:16:56 ]
Tytuł:  Re: Biblia na czytnik

Mam kilka dobrych wiadomości.
1. Dostałem feedback od jezuitów z deon.pl i zauważone przeze mnie błędy są poprawiane (więc moje ich obejścia wylatują ze skryptu).
2. Skrypt powinien szybciej obrabiać pobrane treści, bo pracuje teraz na listach, a nie na łańcuchach.
3. Można już używać parametrów z linii poleceń, które ustawiają co chcemy pobierać (do wyboru: "stary", ""nowy", "wszystko", lub skrócona nazwa księgi). W zależności od tego co pobieramy zostanie dodany adekwatny spis treści (lub nie, w przypadku pojedyńczej księgi).
4. Jeśli parametr poda się niepoprawnie, to skrypt wyświetla listę obsługiwanych argumentów.

Mamy też 1 tymczasowy efekt uboczny, a mianowicie jeśli chcemy pobrać księgę której nazwie są polskie znaki (Kpł lub Łk), to python wyświetli ostrzeżenia związane z obsługą unikodu. Postaram się z tym niebawem uporać. Jeśli stosuje się zapis do pliku przez przekierowanie, to i tak treść będzie nienaruszona.

EDIT: Wygląda na to, że kryzys związany z kodowaniem jest już zażegnany :)

Autor:  airs [ 24 sie 2011 16:48:50 ]
Tytuł:  Re: Biblia na czytnik

Dzięki :)
Udało mi się na starej wersji "skompilować" osobno Stary i Nowy Testament, ale jak na razie Calibre wymiękało u mnie przy próbie zrobienia z tego epub-a.
Widzę, że teraz będzie można wybrać potrzebną pojedynczą księgę :)
Jeśli możesz podaj dokładną składnię dla takiej pojedynczej księgi, bo coś chyba za gorąco i mi nie wchodzi pod windą ani 'Rdz' ani <'Rdz'>

Jeszcze raz dzięki.

Autor:  t3d [ 25 sie 2011 10:31:59 ]
Tytuł:  Re: Biblia na czytnik

Dodałem teraz opcję "lista", która wyświetla listę skróconych nazw ksiąg w formie zrozumiałej dla skryptu.

airs napisał(a):
Jeśli możesz podaj dokładną składnię dla takiej pojedynczej księgi, bo coś chyba za gorąco i mi nie wchodzi pod windą ani 'Rdz' ani <'Rdz'>

Powinno działać samo
Cytuj:
python project_b.py Rdz


Trzeba jednak użyć jakiegoś obejścia w przypadku nazw ze spacjami, jak "2 J". na linuksie można całą nazwę opakować w cudzysłowy, albo dać \ przed spacją. Jak się z tym uporać na windowsie nie wiem :D

airs napisał(a):
Udało mi się na starej wersji "skompilować" osobno Stary i Nowy Testament, ale jak na razie Calibre wymiękało u mnie przy próbie zrobienia z tego epub-a.
Teraz powinno się dać bez problemu, po wybraniu opcji "wszystko". Przy robieniu konwersji warto odznaczyć w calibre generowanie spisu treści, bo potworzy jakieś bzdury.

Strona 2 z 5 Wszystkie czasy w strefie UTC + 1 [czas letni (DST)]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/