Files
CSiCoAlm bb896dc149 NUOVO PC
Commit al passaggio al nuovo PC HP ZBook Fury G7 prima di ricompilare con visual studio 2022
2022-06-30 08:40:53 +02:00

8.8 KiB
Raw Permalink Blame History

Web Scraper per A69

[2022-06-30 Thu] passaggio al nuovo PC e quindi a visual studio 2022

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:

ISSUE 01: [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.7.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:

  ...
  <DIV class=targhetta_racconti style="BACKGROUND-COLOR: #8dbebc">Lui &amp; 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 &nbsp;&nbsp; | &nbsp;&nbsp; <I class="fa fa-eye"></I>8.850 &nbsp;&nbsp; | &nbsp;&nbsp; <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>
  ...

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:

  - ID Rac:	...
  - Title: 	...
  - SubTit:	...
  - Autors:	... -|- ...
  - Voto:  	Non Letto
  - Tags:  	... -|- ...
  - Notes: 	SrcFile -|- ...
  - Notes: 	SrcVot -|- ...
  - Creato:	YYYY/MM/DD
  - Update:	YYY/MM/DD
  - Origin:	... -|- ...
  - Trama: 	...

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:

  --
  -- 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 ;

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

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.