如何播放 mp3 文件并删除

如何播放 mp3 文件并删除

我正在寻找一个脚本,可以使用 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)

如何使用

  1. 不用多说,但是安装`mpg123:

    sudo apt install mpg123
    
  2. 将脚本复制到一个空文件中,另存为filter_mp3.py

  3. 使用目标目录作为参数运行它:

    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)
    

相关内容