From: Sebastian Ramacher Date: Fri, 6 Apr 2018 13:25:35 +0200 Subject: Only fetch profiles if GConf is still available --- bin/soundconverter.py | 1 - soundconverter/gstreamer.py | 44 ++++++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/bin/soundconverter.py b/bin/soundconverter.py index 39055ce..5198443 100644 --- a/bin/soundconverter.py +++ b/bin/soundconverter.py @@ -66,7 +66,6 @@ def _check_libs(): import gi gi.require_version('Gst', '1.0') gi.require_version('Gtk', '3.0') - gi.require_version('GConf', '2.0') from gi.repository import GObject # force GIL creation - see https://bugzilla.gnome.org/show_bug.cgi?id=710447 import threading diff --git a/soundconverter/gstreamer.py b/soundconverter/gstreamer.py index 23aaa9b..211b052 100644 --- a/soundconverter/gstreamer.py +++ b/soundconverter/gstreamer.py @@ -25,7 +25,7 @@ from urllib.parse import urlparse from gettext import gettext as _ import gi -from gi.repository import Gst, Gtk, GObject, GConf, Gio +from gi.repository import Gst, Gtk, GObject, Gio from soundconverter.fileoperations import vfs_encode_filename, file_encode_filename from soundconverter.fileoperations import unquote_filename, vfs_makedirs, vfs_unlink @@ -66,25 +66,29 @@ _GCONF_PROFILE_LIST_PATH = "/system/gstreamer/1.0/audio/global/profile_list" audio_profiles_list = [] audio_profiles_dict = {} -_GCONF = GConf.Client.get_default() -profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH) -for name in profiles: - if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"): - # get profile - description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name") - extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension") - pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline") - # check profile validity - if not extension or not pipeline: - continue - if not description: - description = extension - if description in audio_profiles_dict: - continue - # store - profile = description, extension, pipeline - audio_profiles_list.append(profile) - audio_profiles_dict[description] = profile +try: + from gi.repository import GConf + _GCONF = GConf.Client.get_default() + profiles = _GCONF.all_dirs(_GCONF_PROFILE_LIST_PATH) + for name in profiles: + if _GCONF.get_bool(_GCONF_PROFILE_PATH + name + "/active"): + # get profile + description = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/name") + extension = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/extension") + pipeline = _GCONF.get_string(_GCONF_PROFILE_PATH + name + "/pipeline") + # check profile validity + if not extension or not pipeline: + continue + if not description: + description = extension + if description in audio_profiles_dict: + continue + # store + profile = description, extension, pipeline + audio_profiles_list.append(profile) + audio_profiles_dict[description] = profile +except ImportError: + pass required_elements = ('decodebin', 'fakesink', 'audioconvert', 'typefind', 'audiorate') for element in required_elements: