#+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-readtheorg-local.setup #+TITLE: Web Scraper per A69 #+DESCRIPTION: Diario di bordo dell'applicazione per ricavare i racconti dal sito A69 #+KEYWORDS: ATDB, ATWD * DONE Inserire nello stato i conteggio dei link * TODO Inserire il conto dei link anche sul nome del file o fare report Inserire sul nome dei file, oltre alla data anche il numero di link che contengono, oppure fare un report che riassuma quanto fatto e che torna utile per confrontare due download diversi ecc... * DONE Verificare il formato di salvataggio, perchè le accentuate e alcuni segni vengono male. * DONE Fare parser di un file di link che inserisce quelli nuovi sul toDownload o li inserisce sul DB con lo stato ToDownload. * BUG: ** [2021-11-03 mer] quando riprendo uno scarico, riscarico anche quelli già scaricati. Tutte le volte che riprendo un download, riscarico anche quelli già downloadati, e quindi devo verificare che salvo tutti quelli già downloadati (lista all da verificare sia all'inizio che alla fine). * TODO Vrs 0.2.0.0 :WORKING: Applicazione che salva tutto su SQLite, inoltre è del tutto automatizzata e quindi basta avviarla e quando ha finito si spegne, altrimenti è sempre possibile fermarla a comando, senza perdere traccia di quanto fatto. Per serializzare i dati utilizzo SQLlite con la tabella che mi permetta di risalire velocemente ai link fatti, e a quelli da fare | URL | Tipo | Stato | Update | |-----+------+-------+--------| - URL :: indica l'url a cui vi è la pagina da downloadare (sia indice che racconto) - Tipo :: indica la tipologia della pagina, cioè Idx per le pagine che sono indici/elenchi di racconti - Stato :: Indica lo stato associato al link che sarà definito in basee alla seguente enumerazione *LinkStatusEnum*: - ToDownload - Downloading - Downloaded e quindi all'avvio, mi basta caricare l'elenco dei link che hanno stato diverso da Downloaded e riprendere il download - Update :: indica la data in cui eseguo l'ultimo update al record * TODO Vrs 0.1.6.0 :WORKING: - Definire un'icona in modo da migliorare estetica - Gestire il ridursi ad icona sulla tray in modo da poterlo nascondere - Inserire l'estrazione dei racconti ** Estrazione dei racconti I file di racconto hanno una struttura del tipo: #+begin_src html ...
Lui & Lei
...

01 - Marco e Daniela - Voglia di nuove esperienze estreme

... di ombraerotica ... 07.04.2020    |    8.850    |    6 9.2 ...
{Citazione}
{Trama}
Disclaimer! Tutti i diritti riservati all'autore del racconto - Fatti e persone sono puramente frutto della fantasia dell'autore. Annunci69.it non è responsabile dei contenuti in esso scritti ed è contro ogni tipo di violenza!
Vi invitiamo comunque a segnalarci i racconti che pensate non debbano essere pubblicati, sarà nostra premura riesaminare questo racconto.
...
Votazione dei Lettori: 9.2
... #+end_src che mi permette di ricavare tutte le informazioi utili. Come note, oltre alla classica SrcFile, voglio inserire anche la SrcVot (votazione sul sito) per poter fare un filtro o un ordinamento in base alla votazione del sito anche per i racconti che non ho ancora letto. Ogni racconto avrà quindi la struttura: #+begin_example - ID Rac: ... - Title: ... - SubTit: ... - Autors: ... -|- ... - Voto: Non Letto - Tags: ... -|- ... - Notes: SrcFile -|- ... - Notes: SrcVot -|- ... - Creato: YYYY/MM/DD - Update: YYY/MM/DD - Origin: ... -|- ... - Trama: ... #+end_example In cui vi sono le relazioni: - 1-->Molti Racconto-->Autori - 1-->Molti Racconto-->Tags - 1-->Molti Racconto-->Origine - 1-->Molti Racconto-->Note - 1-->1 Racconto-->Trama - 1-->1 Racconto-->Voto La nota SrcVoto mi permette di navigare evidenziando i racconti per votazione: #+begin_src sql -- -- Vista dei racconti con la relativa votazione: -- SELECT * FROM Notes,Racconti,Links_Rac_Not WHERE NKey='SrcVoto' AND Notes.IDnot=Links_Rac_Not.IDnot AND Links_Rac_Not.IDrac=Racconti.IDrac ORDER BY NVal; -- -- Conteggio dei racconti in base alla votazione: -- SELECT Notes.NKey, Notes.NVal, Count(NVal) as Num FROM Notes, Racconti, Links_Rac_Not WHERE NKey='SrcVoto' AND Notes.IDnot=Links_Rac_Not.IDnot AND Links_Rac_Not.IDrac=Racconti.IDrac GROUP BY Notes.NVal ORDER BY Num ; #+end_src * DONE Vrs 0.1.5.4 :DONE: Compilata da CSiCoAlm il 2021/10/29 - Modificato path di salvataggio dei file per farlo analogo a ATWD. * DONE Vrs 0.1.5.3 :DONE: Compilata da CSiCoAlm il 2021/10/29 - Corretto salvataggio dei file di racconti, per evitare l'errore del formato (lettere accentate e caratteri particolari). - Fatto anche dei test di salvataggio dei testi per trovare il corretto formato dell'encode. * DONE Vrs 0.1.5.2 :DONE: Modifica per: - Inserire l'importazione di link (solo Idx o Rac di A69) da file di testo - Correggere l'importazione ed esportazione degli elenchi dal DB * Vrs 0.1.5.1 :DONE: Breve modifica per: - Corretto formato del numero di versione - Razionalizzato il messaggio di update dell'engine. - Inserito gli aggiornamenti dell'engine sul log degli eventi * Vrs 0.1.5.0 :DONE: Applicazione che serializza i dati su SQLite, ma continua ad usare liste internamente per recuperare il codice già fatto. Per serializzare i dati utilizzo SQLlite con la tabella che mi permetta di risalire velocemente ai link fatti, e a quelli da fare | URL | Tipo | Stato | Update | |-----+------+-------+--------| - URL :: indica l'url a cui vi è la pagina da downloadare (sia indice che racconto) - Tipo :: indica la tipologia della pagina, cioè Idx per le pagine che sono indici/elenchi di racconti - Stato :: Indica lo stato associato al link che sarà definito in basee alla seguente enumerazione *LinkStatusEnum*: - ToDownload - Downloading - Downloaded e quindi all'avvio, mi basta caricare l'elenco dei link che hanno stato diverso da Downloaded e riprendere il download - Update :: indica la data in cui eseguo l'ultimo update al record All'avvio carico sulle liste interne i vari link con il metodo DBTools.LoadData e al termine salvo lo stato delle liste aggiornando i record sul DB tramite il metodo DBTools.SaveData. In questo modo posso iniziare un download e interrompere la procedura per poi riprenderla in un secondo momento senza problemi. * Test funzionamento in consol: :ABORT: verifichiamo se è possibile operare come consol: PURTROPPO NON FUNZIONA SE MESSO COME CONSOLE APPLICATION * Vrs 0.1.0.0 :DONE: - Compilata da CSiCoAlm il 2021/10/26 - Prima versione che permette di scaricare i file da A69 bypassando il controllo del browser. - Manca: - Serializzazione degli archivi per poter riprendere il download parziale dei racconti o la scansione parziale dei link - Gestione in thread paralleli dei download - Riduzione ad icona per non visualizzare il tutto (privacy) - Parametrizzazione del lavoro - Loggin degli eventi - Rendere l'applicativo consol, in modo che non vi sia interfaccia utente.