ConoscereLinux / DeskApp

Utility per gestire, rinominare e indicizzare file
GNU General Public License v3.0
5 stars 23 forks source link

Gestione motore ricerca file #22

Open ZompaSenior opened 1 year ago

ZompaSenior commented 1 year ago

Questo motore si occuperà di cercare i file nei percorsi indicati, e li passerà all'oggetto per la raccolta dei metadati e in seguito invierà le informazioni al DB.

Questo è il segnaposto su cui basare la classe: https://github.com/ConoscereLinux/DeskApp/blob/06c050cda852395a8c9e35ad49cceefbf11b0188/src/dig/digger_manager.py

Per ora mi limiterei alla ricerca nella cartella configurata e alla scrittura sullo stdout (banalmente con il print) dei nomi dei file trovati.

Il costruttore dovrebbe prendere in ingresso il parametro di tipo ResourceManager (lo trovi qui: https://github.com/ConoscereLinux/DeskApp/blob/06c050cda852395a8c9e35ad49cceefbf11b0188/src/util/resource.py). Dato che al momento nessun oggetto sarà funzionante, predisponiamo temporaneamente un secondo parametro path, con il percorso radice da cui cominciare a cercare.

Per la ricerca utilizzare os.scandire, che è in assoluto la più efficrente e riesce a gestire bene anche cartelle con numero di file enorme.

Per qualsiasi domanda, commenta pure qui sotto.

pg-88 commented 1 year ago

Ciao, sto lavorando al DiggerManager, usando os.scandir(). Ho un paio di dubbi:

Spero di riuscire a fare un pull request a breve così magari mi riesci a dare un feedback più mirato su cosa sistemare, rifare o ripartire proprio :sweat_smile: A presto Pietro

ZompaSenior commented 1 year ago

Ciao Pietro, allora ti rispondo per punti:

  1. il path_manager in realtà conterrà solo delle funzioni e delle utilità per avere dei riferimenti ai vari percorsi ed alle risorse dell'applicazione, ma non gestirà le configurazioni del percorso da monitorare. Quello sarà compito del config_manager, che inizialmente si appoggerà ad un file .ini, poi magari passerà ad un database. Io non darei per scontato nulla, e farei un controllo sul percorso da scansionare, però non lo fare nel costruttore: nel costruttore ti predisponi tutto, poi farei un metodo (per esempio scan) che prima di scansionare controlla. Ti avevo indicato, di aggiungere un secondo parametro al costruttore per passare il path da scansionare, però poi ho implementato la struttura base dell'applicazione, per cui non cambiare il prototipo del costruttore, se no scassiamo tutto, mettiti una costante o qualcosa di simile che punti alla cartella di test source_folder, poi la sistemeremo
  2. Per ora ignora tutti gli altri oggetti a contorno: finché non abbiamo option_manager.py e config_manager.py funzionanti, è inutile inventare cose strane. In seguito la tua classe dovrà diventare un thread, quindi avremo un sacco di parametri da aggiungere.

Scusa, forse ho scritto troppo!

Comunque se hai altri dubbi scrivimi pure.