2021-10-26 18:01:11 +02:00
#+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
2021-10-29 14:01:10 +02:00
* DONE Inserire nello stato i conteggio dei link
2021-10-26 18:01:11 +02:00
* 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...
2021-10-26 19:01:19 +02:00
2021-10-29 14:01:10 +02:00
* 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.
2021-10-26 19:01:19 +02:00
2021-11-05 07:46:37 +01:00
* BUG:
2021-11-07 15:54:07 +01:00
** ISSUE 01: [2021-11-03 mer]
Quando riprendo uno scarico, riscarico anche quelli già scaricati.
2021-11-05 07:46:37 +01:00
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).
2021-10-26 19:01:19 +02:00
* 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.
2021-10-26 20:01:12 +02:00
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
2021-10-26 19:01:19 +02:00
2021-11-08 08:01:22 +01:00
* TODO Vrs 0.1.7.0 :WORKING:
2021-10-29 14:01:10 +02:00
- Definire un'icona in modo da migliorare estetica
2021-11-05 07:46:37 +01:00
- Gestire il ridursi ad icona sulla tray in modo da poterlo nascondere
2021-10-29 14:01:10 +02:00
- Inserire l'estrazione dei racconti
** Estrazione dei racconti
I file di racconto hanno una struttura del tipo:
#+begin_src html
...
< DIV class = targhetta_racconti style = "BACKGROUND-COLOR: #8dbebc" > Lui & Lei</ DIV >
...
< H1 class = titolone_nero > 01 - Marco e Daniela - Voglia di nuove esperienze estreme</ H1 >
...
< SPAN class = text_grigio style = "FONT-SIZE: 16px; COLOR: #999999; LINE-HEIGHT: 1.6em" >< A href = "/user/ombraerotica" >< IMG class = img_border style = "VERTICAL-ALIGN: middle; border-radius: 50%" border = 0 src = "https://img.annunci69.it/annunci/83/2808083/ombraerotica/icone/2808083.jpg?vers=1586358574" width = 65 height = 65 ></ A > < STRONG > di < A href = "/user/ombraerotica" > ombraerotica</ A ></ STRONG ></ SPAN >
...
< SPAN class = text_grigio style = "FONT-SIZE: 13px; COLOR: #9999cc; LINE-HEIGHT: 1.6em" > 07.04.2020 | < I class = "fa fa-eye" ></ I > 8.850 | < I class = "fa fa-comment" ></ I > 6 < SPAN style = "DISPLAY: none" > 9.2</ SPAN > </ SPAN >
...
< DIV class = testoracc >
< DIV class = citaz >< EM > {Citazione}</ EM ></ DIV >
{Trama}
< DIV style = "FONT-SIZE: 11px; BORDER-TOP: #cccccc 1px solid; COLOR: #c8c2c2; PADDING-BOTTOM: 8px; PADDING-TOP: 8px; PADDING-LEFT: 8px; MARGIN-TOP: 20px; LINE-HEIGHT: normal; PADDING-RIGHT: 8px" >< STRONG > Disclaimer</ STRONG > ! Tutti i diritti riservati all'autore del racconto - Fatti e persone sono< STRONG > puramente frutto della fantasia dell'autore</ STRONG > . Annunci69.it non è responsabile dei contenuti in esso scritti ed è < STRONG > contro ogni tipo di violenza</ STRONG > ! < BR > Vi invitiamo comunque a < A href = "/scrivici.php" > segnalarci i racconti</ A > che pensate non debbano essere pubblicati, sarà nostra premura riesaminare questo racconto.</ DIV >
</ DIV >
...
< DIV style = "FLOAT: left" >< STRONG > Votazione dei Lettori:</ STRONG > 9.2</ DIV >
...
#+end_src
che mi permette di ricavare tutte le informazioi utili.
2021-10-29 15:01:11 +02:00
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.
2021-10-29 14:01:10 +02:00
2021-10-29 15:01:11 +02:00
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
2021-10-29 14:01:10 +02:00
2021-10-30 10:01:12 +02:00
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
2021-11-07 15:54:07 +01:00
* DONE Vrs 0.1.6.0 :DONE:
Compilata da CSiCoAlm il 2021/11/07
- Corretto bug rilevato (ISSUE 01)
- Inserita solita icona per i tools.
- Sistemato la classe cTools inserendo tutti i tools trovati finora
2021-10-29 09:34:53 +02:00
* 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.
2021-10-29 09:16:08 +02:00
* 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:
2021-10-27 17:01:15 +02:00
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
2021-10-29 09:16:08 +02:00
* Vrs 0.1.5.1 :DONE:
2021-10-27 17:01:15 +02:00
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:
2021-10-27 13:48:15 +02:00
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.
2021-10-26 19:01:19 +02:00
* 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.