Portál AbcLinuxu, 12. června 2024 00:43


Dotaz: Python/Flask - servirovani epubu z pameti pocitace

radicz avatar 16.7.2018 16:09 radicz
Python/Flask - servirovani epubu z pameti pocitace
Přečteno: 2369×
Odpovědět | Admin
Zdar,

snazim se udelat jednoduchy epub viewer, pricemz chci mit nekde na file systemu slozku, ktera obsahuje pouze epuby (nechc ten epub pokazde nekam rozbaloat do /tmp a pak slozku zase mazat atd), k tomu jednoduchy webovy xicht, ktery bude zobrazovat tyto soubory a po kliknuti se otevrou a muzu si cist. Nejdriv sem to chtel postavit nad sqlite, ze bych mel dve tabulky, jednu ktera uchovava zaznamy o kniznich titulech jako takovych, druhou pak primo zaznamy stranek (obsah html), s odkazy na dalsi stranku, predchozi stranku, odkaz na table of contents a jeste sloupec ktery by urcil, jestli tato stranka je posledni navstivena (at se otevre stranka, kde jsem prestal cist).

Tim ze bych to mel takto provazano s databazi, by se dalo v prohlizeci i bookmarkovat knizky, nebo zajimave kapitoly/sekce knih, problem ktery me trapi s timto pristupem je vsak ten, ze epub obsahuje take css soubory a obrazky, a ja nevim jak vsechno spravne slinkovat dohromady, aby se zobrazene vysledky spravne odkazovaly na tyto obrazky popr css soubory.

Chtel bych se tedy zeptat, zda se nekdo s timto "problemem" nekdo setkal, ci resil neco podobneho a jak to nakonec vyresil, nebo jak se obecne neco takoveho resi? Napadlo me akorat ze bych skriptem prosel vsechny html soubory, a upravil hyperlinky tak aby to sedelo, popr bych nejak injektnul to css di tech souboru, a mozna i obrazky tam injektnout jako base64, ale zda se mi ze na to jdu ze spatne strany. Prosim neposilat mi odkazy at si ctu epub uz s hotovym resenim, protoze se chci neco malo priucit.

Dale me pak napadlo, ze bych mohl nacist zip do pameti pomoci BytesIO streamu, a s flaskem vyrenderovat html primo z pameti, bez ukladani na file system, ale tady zase narazim na to, jak se odkazovat na dalsi html soubory kdyz jsou v pameti a ne na FS.

Dekuji


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.7.2018 16:18 debian
Rozbalit Rozbalit vše Re: Python/Flask - servirovani epubu z pameti pocitace
Odpovědět | | Sbalit | Link | Blokovat | Admin
1) Da sa si vyclenit/rezervovat 0.5 GB ramky a pouzivat ju ako FS. .. Minus je, ze pri vypnuti prudu stratis pamet 2) FUSE 3) vytvorit subor napr. o 0.5 GB, zapisat nulami, naformatovat a pripojit a pouzivat 4) vytvor si subor a la tar, ktory bude len archiv suborov a Tvoja citacka bude ten vediet citat 5) da sa pristupovat k suboru rw, ale to chce prava roota 6) data dir/file <---> simple local web server (url convert server) <---> epub read
Řešení 1× (radicz (tazatel))
16.7.2018 16:20 debian
Rozbalit Rozbalit vše Re: Python/Flask - servirovani epubu z pameti pocitace
  1. Da sa si vyclenit/rezervovat 0.5 GB ramky a pouzivat ju ako FS. .. Minus je, ze pri vypnuti prudu stratis pamet
  2. FUSE
  3. vytvorit subor napr. o 0.5 GB, zapisat nulami, naformatovat a pripojit a pouzivat
  4. vytvor si subor a la tar, ktory bude len archiv suborov a Tvoja citacka bude ten vediet citat
  5. da sa pristupovat k suboru rw, ale to chce prava roota
  6. data dir/file <---> simple local web server (url convert server) <---> epub read
Řešení 1× (radicz (tazatel))
16.7.2018 19:48 chrono
Rozbalit Rozbalit vše Re: Python/Flask - servirovani epubu z pameti pocitace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie je problém rozbaliť potrebné súbory pri každej žiadosti priamo zo zip súboru. Ak to bude pomalá, dá sa použiť napr. lru_cache (každopádne tam je potrebné dávať pozor nie len na počet objektov v cache, ale aj na ich celkovú veľkosť.

Ja osobne by som, kvôli parametrom do URL, použil pre jednotlivé knihy uuid (buď uložené spolu s cestou k tomu súboru v DB, alebo napr. ako názov adresára/súboru)...

Pokiaľ ide o samotné css, obrázky... stačí mať vo flask obsluhu pre cestu v tvare "/<uuid:book_id>/<path:directory>/<filename>" a pravdepodobne aj rovnakú cestu bez directory (ak bude potrebný prístup k súboru v koreňovom adresári toho zip súbora).

Daná funkcia potom rozbalí požadovaný súbor zo zip archíva a vytvorí Flask odpoveď (so správnym mime typom).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.