ディレクトリ内のすべてのオーディオ ファイルとビジュアル ファイルからメタデータを抽出するために ffprobe を使用する Python スクリプトに「-show_format_entry」を組み込む方法を数日間探していました。ただし、フォーマットが返すものすべてが欲しいわけではありません。
私の現在のスクリプト:
#! usr/bin/python
import os, sys, subprocess, shlex, re, fnmatch
from subprocess import call
def probe_file(filename):
cmnd = ['ffprobe', '-show_format', ,'-pretty', '-loglevel' filename]
p = subprocess.Popen(cmnd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print out
mp3box=[]
for root, dirs, files in os.walk('/home/username/Music'):
for fname in files:
name,ext=os.path.splitext(fname)
if fname.lower().endswith('.mp3'):
mp3box.append(fname)
probe_file(fname)
出力は次のようになります。
[FORMAT]
filename=test.mp3
nb_streams=1
format_name=mp3
format_long_name=MPEG audio layer 2/3
start_time=0:00:00.000000
duration=0:03:32.943917
size=2.437 Mibyte
bit_rate=95.999 Kbit/s
TAG:album=compliments of grimriper2u@yahoo.com
TAG:artist=Charley Barnet, V=Trudy Richard
TAG:disc=sound changed and copyright for public Domain. not for resale.
TAG:genre=Jazz
TAG:TLEN=000000212342
TAG:title= Ill Wind
TAG:date=1949
[/FORMAT]
[FORMAT]
filename=barnet.mp3
nb_streams=1
format_name=mp3
format_long_name=MPEG audio layer 2/3
start_time=0:00:00.000000
duration=0:03:32.943917
size=2.437 Mibyte
bit_rate=95.999 Kbit/s
TAG:album=compliments of grimriper2u@yahoo.com
TAG:artist=Charley Barnet, V=Trudy Richard
TAG:disc=sound changed and copyright for public Domain. not for resale.
TAG:genre=Jazz
TAG:TLEN=000000212342
TAG:title= Ill Wind
TAG:date=1949
[/FORMAT]
私が望むのは、一般的なffprobeオプション「-show_format_entry」を使用し、「-show_format_entryファイル名」、「-show_format_entry期間」、「-show_format_entryサイズ」を指定して、出力でファイル名、期間、サイズのみを取得できるようにすることです.
出力でこれらの値を分離するために、cmnd の 'filename' の後に grep|duration も試しましたが、機能しません。また、可能であれば、出力の [FORMAT][/FORMAT] タグを取り除きたいのですが、それは完全に必要というわけではありません。フィードバックは大歓迎です。