我正在寻找一个脚本,可以使用 mpg123 播放 mp3 文件并删除或不删除该文件。我想听几秒钟,然后跳转到下一个文件,然后决定是否删除它。有人可以帮忙吗?
答案1
下面的脚本将连续播放目录内所有 mp3 文件的 5 秒样本,并在每次播放后询问您是否应删除该文件。
继续执行后,脚本将生成如下报告:
--------------------
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
目录中的所有文件: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])
运行一个
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)
subprocess.CalledProcessError
如果用户点击No或关闭窗口(没有任何反应),对话框将引发,或者如果用户选择,对话框将无错误关闭Yes。在后一种情况下,该文件将被删除:
os.remove(file)