Ho scritto una piccola utility in Python3 per aiutarmi a copiare la mia collezione musicale dal mio NAS a un dispositivo mobile. L'utilità di questo è che converte automaticamente i file flac in ogg-vorbis (per risparmiare spazio) ed esclude alcuni file in base ai loro tag audio (cioè artista, album, data, ecc.)
Non sono contento della natura limitata della funzione di esclusione e voglio migliorarla, ma ho raggiunto un blocco mentale e sto cercando consigli su come procedere.
Vorrei che l'utente scrivesse un file di esclusione che assomigliò a questo:
exclude {
artist is "U2"
artist is "Uriah Heep" {
album is "Spellbinder"
album is "Innocent Victim"
}
}
Questo si tradurrebbe in:
exclude if
(artist = "U2") OR
(artist = "Uriah Heep" AND (album = "Spellbinder" OR album = "Innocent Victim"))
Ci saranno più condizionali come la corrispondenza della sottostringa e gli intervalli di date.
Ho controllato PLY ma sto lottando con i concetti su come analizzare questo tipo di struttura nidificata e anche come rappresentare il condizionale risultante in modo che possa essere eseguito nel codice quando si applica il filtro di esclusione durante l'operazione di copia.