O script abaixo irá reproduzir uma amostra de 5 segundos de todos os arquivos mp3 dentro de um diretório em uma fila, perguntando se o arquivo deve ser excluído ou não após cada amostra.
Depois de prosseguir, o script produzirá um relatório como:
--------------------
remove: /home/jacob/Bureaublad/test/04 Suite Espanola Nr. 1 Op. 47 Nr. 4.mp3
keep: /home/jacob/Bureaublad/test/08 Danzas Espanolas Op. 37 Nr. 3.mp3
remove: /home/jacob/Bureaublad/test/02 Suite Espanola Nr. 1 Op. 47 Nr. 2.mp3
O script
#!/usr/bin/env python3
import subprocess
import os
import sys
import time
dr = sys.argv[1]
report = []
for f in [f for f in os.listdir(dr) if f.endswith(".mp3")]:
file = os.path.join(dr, f)
subprocess.call(["timeout", "5", "mpg123", "--quiet", file])
try:
subprocess.check_output([
"zenity",
"--question",
"--text=Delete?",
]).decode("utf-8").strip()
except subprocess.CalledProcessError:
report.append("keep: "+file)
else:
os.remove(file)
report.append("remove: "+file)
print("-"*20)
for l in report:
print(l)
Como usar
-
É desnecessário dizer, mas instalar o 'mpg123:
sudo apt install mpg123
-
Copie o script em um arquivo vazio, salve-o como
filter_mp3.py
-
Execute-o com o diretório de destino como argumento:
python3 /path/to/filter_mp3.py /path/to/folder
Explicação
O script:
-
lista todos os
mp3
filse em um diretório:for f in [f for f in os.listdir(dr) if f.endswith(".mp3")]: file = os.path.join(dr, f)
-
toca por 5 segundos:
subprocess.call(["timeout", "5", "mpg123", file])
-
executa um diálogo
zenity
question:try: subprocess.check_output([ "zenity", "--question", "--text=Delete?", ]).decode("utf-8").strip() except subprocess.CalledProcessError: report.append("keep: "+file) else: os.remove(file) report.append("remove: "+file)
O diálogo aumentará um
subprocess.CalledProcessError
se o usuário clicar em Não ou fechar a janela (nada acontecer), ou fechar sem erros se o usuário escolher Sim .No último caso, o arquivo será removido:
os.remove(file)