MPDScrobbler: server config var now specifies http protocol
authorkaliko <kaliko.jack@azylum.org>
Sat, 2 Mar 2013 12:15:46 +0000 (13:15 +0100)
committerkaliko <kaliko.jack@azylum.org>
Sat, 2 Mar 2013 12:15:46 +0000 (13:15 +0100)
Better representation of ScrobbleError exceptions

misc/MPDScrobbler/config.py.dist
misc/MPDScrobbler/mpdscrobbler.py
misc/clientpy2.py
misc/clientpy3.py

index 81b7156..5b981eb 100644 (file)
@@ -1,7 +1,14 @@
-USER        = <scrobbler server user>
-PWD         = <scrobbler server pwd>
-SCSERVER    = <scrobbler server as FQDN or IP>
-MPDSERVER   = <MPD server as FQDN or IP>
-MPDPORT     = <MPD port, default to 6600 if not provided>
-LOGFILE     = <full path to log, default to /tmp/mpd_scrobbler.log>
-LOGLEVEL    = <level in (debug, info, warning, error), default to "info">
+# -*- coding: utf-8 -*-
+"""
+Plain Python configuration file
+"""
+
+USER        = '<scrobbler server user>'
+PWD         = '<scrobbler server pwd>'
+SCSERVER    = 'http[s]://<scrobbler server as FQDN or IP>'
+MPDSERVER   = '<MPD server as FQDN or IP>'
+MPDPORT     = '<MPD port, default to 6600 if not provided>'
+LOGFILE     = '<full path to log, default to /tmp/mpd_scrobbler.log>'
+LOGLEVEL    = '<level in (debug, info, warning, error), default to info>'
+
+# vim: syn=python
index 0cbfb5e..4e81dae 100755 (executable)
@@ -65,7 +65,7 @@ class QueuManagement(threading.Thread):
         except ScrobbleError as err:
             logging.warning('scrobbler: Failed catching up with "%s": %s' % (track, err))
             if hasattr(err, 'http_out'):
-                logging.debug(u'scrobbler: http-error %s→\ns' % (err, err.read().decode('utf-8')))
+                logging.debug(u'scrobbler: http-error %s→\n%s' % (err.code, err.http_out))
             self.queu.appendleft(track)
             return False
         logging.info('Catching up with {0}'.format(track))
@@ -115,7 +115,7 @@ class MpdScrobbler(Player):
         except ScrobbleError as err:
             logging.error('scrobbler: {0}'.format(err))
             if hasattr(err, 'http_out'):
-                logging.debug(u'scrobbler: http-error %s→\ns' % (err, err.read().decode('utf-8')))
+                logging.debug(u'scrobbler: http-error %s→\n%s' % (err.code, err.http_out))
             self.failed_sc_cache.append(self.current_track)
         else:
             # Deal with the queu if last scrobble went fine
index fdc1d6f..7bb497e 100755 (executable)
@@ -29,11 +29,13 @@ class ScrobbleHTTPError(ScrobbleError):
     def __init__(self, expression):
         self.http_out = None
         self.expression = expression
+        self.code = expression.code
         if hasattr(expression, 'read'):
             self.http_out = expression.read().decode('utf-8')
 
     def __str__(self):
-        return repr(self.expression)
+        msg = 'HTTPError {0}: {1}'.format(self.code, self.expression.reason)
+        return msg
 
 class ScrobbleUnhandledError(ScrobbleError):
     pass
@@ -93,7 +95,7 @@ def get_api_options(track):
 
 @Throttle(WAIT_BETWEEN_REQUESTS)
 def scrobble(trk=None, user=None, pwd=None, srv=None):
-    sc_url = u'https://{server}/api/{user}/scrobbles/'
+    sc_url = u'{server}/api/{user}/scrobbles/'
     url = sc_url.format(user=user, server=srv)
     params = urlencode(get_api_options(trk))
     auth_handler = urllib2.HTTPBasicAuthHandler()
@@ -133,7 +135,7 @@ def main():
 if __name__ == '__main__':
     ############################
     # CONFIG
-    SERVER = u'127.0.0.1:8000'
+    SERVER = u'http://127.0.0.1/scserver'
     USER   = u'myusername'
     PWD    = u'myS3cr34'
     #
index 5ae6ecc..dd5667e 100755 (executable)
@@ -29,11 +29,13 @@ class ScrobbleHTTPError(ScrobbleError):
     def __init__(self, expression):
         self.http_out = None
         self.expression = expression
+        self.code = expression.code
         if hasattr(expression, 'read'):
             self.http_out = expression.read().decode('utf-8')
 
     def __str__(self):
-        return repr(self.expression)
+        msg = 'HTTPError {0}: {1}'.format(self.code, self.expression.reason)
+        return msg
 
 class ScrobbleUnhandledError(ScrobbleError):
     pass
@@ -93,10 +95,9 @@ def get_api_options(track):
 
 @Throttle(WAIT_BETWEEN_REQUESTS)
 def scrobble(trk=None, user=None, pwd=None, srv=None):
-    sc_url = 'http://{server}/api/{user}/scrobbles/'
+    sc_url = '{server}/api/{user}/scrobbles/'
     url = sc_url.format(user=user, server=srv)
     params = urllib.parse.urlencode(get_api_options(trk))
-    print(url + '?' + params)
     auth_handler = urllib.request.HTTPBasicAuthHandler()
     auth_handler.add_password(realm='Scrobbler server',
                               uri=url,
@@ -133,7 +134,7 @@ def main():
 if __name__ == '__main__':
     ############################
     # CONFIG
-    SERVER = '127.0.0.1:8000'
+    SERVER = 'http://127.0.0.1/scserver'
     USER   = 'myusername'
     PWD    = 'myS3cr34'
     #