From de5bcfb302ffaccfe3e3b75820631d79554e223d Mon Sep 17 00:00:00 2001 From: Simone Riva Date: Mon, 24 Nov 2014 21:13:24 +0100 Subject: [PATCH] Added supprt for avconv; python 2.7 compatible. --- dr14tmeter/audio_file_reader.py | 13 +++++-------- dr14tmeter/dr14_global.py | 20 +++++++++++++++++++- dr14tmeter/read_metadata.py | 7 +++---- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/dr14tmeter/audio_file_reader.py b/dr14tmeter/audio_file_reader.py index 749d425..2a5fb01 100644 --- a/dr14tmeter/audio_file_reader.py +++ b/dr14tmeter/audio_file_reader.py @@ -22,12 +22,14 @@ import re import wave import numpy -import shutil + from io import StringIO from dr14tmeter.out_messages import print_msg, dr14_log_info -from _ftdi1 import NONE +from dr14tmeter.dr14_global import get_ffmpeg_cmd + +#from _ftdi1 import NONE # ffmpeg -i example.m4a -f wav pipe:1 > test.wav @@ -35,12 +37,7 @@ class AudioFileReader: def __init__(self): - if shutil.which( "ffmpeg" ) != None : - self.__ffmpeg_cmd = "ffmpeg" - elif shutil.which( "avconv" ) != None : - self.__ffmpeg_cmd = "avconv" - else : - self.__ffmpeg_cmd == "" + self.__ffmpeg_cmd = get_ffmpeg_cmd() if sys.platform.startswith('win'): self.__cmd = ".\\decoder\\%s " % self.get_cmd() diff --git a/dr14tmeter/dr14_global.py b/dr14tmeter/dr14_global.py index 720ca93..0a6c31e 100644 --- a/dr14tmeter/dr14_global.py +++ b/dr14tmeter/dr14_global.py @@ -18,6 +18,7 @@ import sys import re import threading +import subprocess from dr14tmeter.out_messages import print_msg @@ -36,6 +37,8 @@ lock_ver = threading.Lock() +ffmpeg_cmd = None + def dr14_version(): global v_major @@ -49,12 +52,27 @@ def min_dr() : def get_exe_name(): return "dr14_tmeter" +def get_ffmpeg_cmd(): + + global ffmpeg_cmd + + if ffmpeg_cmd == None : + ffmpeg_f = subprocess.call("type " + "ffmpeg" , shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) == 0 + avconv_f = subprocess.call("type " + "avconv" , shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) == 0 + + if ffmpeg_f : + ffmpeg_cmd = "ffmpeg" + elif avconv_f : + ffmpeg_cmd = "avconv" + + return ffmpeg_cmd + + class TestVer(threading.Thread): def run(self): _dr14_get_latest_version() - def _dr14_get_latest_version(): global l_major diff --git a/dr14tmeter/read_metadata.py b/dr14tmeter/read_metadata.py index 0e8c921..3e48032 100644 --- a/dr14tmeter/read_metadata.py +++ b/dr14tmeter/read_metadata.py @@ -19,10 +19,9 @@ import sys import os import re -import shutil - from dr14tmeter.audio_decoder import AudioDecoder +from dr14tmeter.dr14_global import get_ffmpeg_cmd # Test example !!!!! # a = subprocess.check_output( [ "ffprobe" , "-show_format" , "/media/esterno_xfs/data/Musica/Musica/aavv/01-blitzkrieg_bop_160_lame_abr.mp3" ] , stderr=subprocess.STDOUT , shell=False ) @@ -35,9 +34,9 @@ def __init__( self ): self._artist = {} self._tracks = {} - if shutil.which( "ffprobe" ) : + if get_ffmpeg_cmd() == "ffmpeg" : self.__ffprobe_cmd = "ffprobe" - elif shutil.which( "avprobe" ) : + elif get_ffmpeg_cmd() == "avconv" : self.__ffprobe_cmd = "avprobe"