From: Sebastian Ramacher <sebastian@ramacher.at>
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:
