diff --git a/whipper/command/main.py b/whipper/command/main.py index 9571eb3f..6c27fbb5 100644 --- a/whipper/command/main.py +++ b/whipper/command/main.py @@ -20,7 +20,13 @@ def main(): server = config.Config().get_musicbrainz_server() - musicbrainzngs.set_hostname(server) + https_enabled = True if server['scheme'] == 'https' else False + try: + musicbrainzngs.set_hostname(server['netloc'], https_enabled) + # Parameter 'use_https' is missing in versions of musicbrainzngs < 0.7 + except TypeError as e: + logger.warning(e) + musicbrainzngs.set_hostname(server['netloc']) # Find whipper's plugins paths (local paths have higher priority) plugins_p = [directory.data_path('plugins')] # local path (in $HOME) diff --git a/whipper/common/config.py b/whipper/common/config.py index 8774c86c..06ee3fd5 100644 --- a/whipper/common/config.py +++ b/whipper/common/config.py @@ -75,10 +75,12 @@ def getboolean(self, section, option): # musicbrainz section def get_musicbrainz_server(self): - server = self.get('musicbrainz', 'server') or 'musicbrainz.org' - server_url = urlparse('//' + server) - if server_url.scheme != '' or server_url.path != '': - raise KeyError('Invalid MusicBrainz server: %s' % server) + conf = self.get('musicbrainz', 'server') or 'https://musicbrainz.org' + if not conf.startswith(('http://', 'https://')): + raise KeyError('Invalid MusicBrainz server: unsupported ' + 'or missing scheme') + scheme, netloc, _, _, _, _ = urlparse(conf) + server = {'scheme': scheme, 'netloc': netloc} return server # drive sections diff --git a/whipper/image/table.py b/whipper/image/table.py index 56ec8ae9..36d713bc 100644 --- a/whipper/image/table.py +++ b/whipper/image/table.py @@ -351,7 +351,7 @@ def getMusicBrainzDiscId(self): return disc.id def getMusicBrainzSubmitURL(self): - host = config.Config().get_musicbrainz_server() + serv = config.Config().get_musicbrainz_server() discid = self.getMusicBrainzDiscId() values = self._getMusicBrainzValues() @@ -363,7 +363,7 @@ def getMusicBrainzSubmitURL(self): ]) return urlunparse(( - 'https', host, '/cdtoc/attach', '', query, '')) + serv['scheme'], serv['netloc'], '/cdtoc/attach', '', query, '')) def getFrameLength(self, data=False): """