Как играть mp3 файл и удалить

Я ищу сценарий, где я мог играть mp3 файл с помощью mpg123 и удалить или не файл. Я хотел бы послушать в течение нескольких секунд и перехода в следующий файл после того, как решают, будет ли это или не удалено. Кто-то мог помочь?

2
задан 4 April 2017 в 23:59

1 ответ

Сценарий ниже будет играть образец 5 секунд всех mp3 файлов в каталоге подряд, спрашивая Вас, если файл должен быть удален или не после каждого образца.

enter image description here

После продолжения сценарий представит отчет как:

--------------------
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
    

Explantion

Сценарий:

  • списки все 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)
    
2
ответ дан 2 December 2019 в 03:41

Другие вопросы по тегам:

Похожие вопросы: