Я ищу сценарий, где я мог играть mp3 файл с помощью mpg123 и удалить или не файл. Я хотел бы послушать в течение нескольких секунд и перехода в следующий файл после того, как решают, будет ли это или не удалено. Кто-то мог помочь?
Сценарий ниже будет играть образец 5 секунд всех mp3 файлов в каталоге подряд, спрашивая Вас, если файл должен быть удален или не после каждого образца.
После продолжения сценарий представит отчет как:
--------------------
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
#!/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)
Ненужный, чтобы сказать, но установить 'mpg123:
sudo apt install mpg123
Скопируйте сценарий в пустой файл, сохраните его как filter_mp3.py
Выполните его с целенаправленным каталогом как аргумент:
python3 /path/to/filter_mp3.py /path/to/folder
Сценарий:
списки все mp3
filse в каталоге:
for f in [f for f in os.listdir(dr) if f.endswith(".mp3")]:
file = os.path.join(dr, f)
играет их в течение 5 секунд:
subprocess.call(["timeout", "5", "mpg123", file])
выполнения a zenity
диалог вопроса:
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)
Диалог повысит a subprocess.CalledProcessError
если пользователь или нажимает No или закрывает окно (ничего не происходит), или закроет ошибку, бесплатную, если пользователь выберет Yes.
В последнем случае будет удален файл:
os.remove(file)