From 8351a36cbcbe8529ec1c0bb60d77bf65fb59fe12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 3 Jan 2018 18:30:52 +0100 Subject: New upstream version 0.9.7 --- raphodo/metadatavideo.py | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) (limited to 'raphodo/metadatavideo.py') diff --git a/raphodo/metadatavideo.py b/raphodo/metadatavideo.py index 4af2d92..efa17fc 100755 --- a/raphodo/metadatavideo.py +++ b/raphodo/metadatavideo.py @@ -34,23 +34,44 @@ from raphodo.utilities import datetime_roughly_equal try: import pymediainfo have_pymediainfo = True + pymedia_library_file = 'libmediainfo.so.0' except ImportError: have_pymediainfo = False libmediainfo_missing = None if have_pymediainfo: + libmediainfo_missing = False try: - # Attempt to parse null... it will fail if libmediainfo is not present, which is - # what we want to check - pymediainfo.MediaInfo.parse('/dev/null') - libmediainfo_missing = False - except OSError: - have_pymediainfo = False - libmediainfo_missing = True + if not pymediainfo.MediaInfo.can_parse(library_file=pymedia_library_file): + # attempt to work around MediaInfoLib issue #695: + # 'SONAME is different when compiling with CMake and autotools' + pymedia_library_file = 'libmediainfo.so.17' + if not pymediainfo.MediaInfo.can_parse(library_file=pymedia_library_file): + have_pymediainfo = False + libmediainfo_missing = True + except TypeError: + # older versions of pymediainfo do not have the library_file option + pymedia_library_file = None + if not pymediainfo.MediaInfo.can_parse(): + have_pymediainfo = False + libmediainfo_missing = True + except AttributeError: + try: + # Attempt to parse null... it will fail if libmediainfo is not present, which is + # what we want to check + pymediainfo.MediaInfo.parse('/dev/null') + except OSError: + have_pymediainfo = False + libmediainfo_missing = True + pymedia_library_file = None + def pymedia_version_info() -> Optional[str]: if have_pymediainfo: - return pymediainfo.__version__ + if pymedia_library_file == 'libmediainfo.so.0': + return pymediainfo.__version__ + else: + return '{} (using {})'.format(pymediainfo.__version__, pymedia_library_file) else: return None @@ -72,8 +93,14 @@ class MetaData: self.metadata_string_format = dict() self.et_process = et_process if have_pymediainfo: - self.media_info = pymediainfo.MediaInfo.parse( - full_file_name) # type: pymediainfo.MediaInfo + if pymedia_library_file is not None: + self.media_info = pymediainfo.MediaInfo.parse( + filename=full_file_name, library_file=pymedia_library_file + ) # type: pymediainfo.MediaInfo + else: + self.media_info = pymediainfo.MediaInfo.parse( + filename=full_file_name + ) # type: pymediainfo.MediaInfo else: self.media_info = None -- cgit v1.2.3