Switch to unified view

a/src/mediaserver/cdplugins/qobuz/api/raw.py b/src/mediaserver/cdplugins/qobuz/api/raw.py
...
...
30
socket.timeout = 5
30
socket.timeout = 5
31
31
32
class RawApi(object):
32
class RawApi(object):
33
33
34
    def __init__(self):
34
    def __init__(self):
35
        self.appid = b'285473059'  # XBMC
35
        self.appid = '285473059'  # XBMC
36
        self.bappid = self.appid.encode('ASCII')
36
        self.version = '0.2'
37
        self.version = '0.2'
37
        self.baseUrl = 'http://www.qobuz.com/api.json/'
38
        self.baseUrl = 'http://www.qobuz.com/api.json/'
38
39
39
        self.user_auth_token = None
40
        self.user_auth_token = None
40
        self.user_id = None
41
        self.user_id = None
...
...
80
        (http://www.qobuz.com/apps/api/QobuzAPI-TermsofUse.pdf)
81
        (http://www.qobuz.com/apps/api/QobuzAPI-TermsofUse.pdf)
81
        '''
82
        '''
82
        s3b = b'Bg8HAA5XAFBYV15UAlVVBAZYCw0MVwcKUVRaVlpWUQ8='
83
        s3b = b'Bg8HAA5XAFBYV15UAlVVBAZYCw0MVwcKUVRaVlpWUQ8='
83
        s3s = binascii.a2b_base64(s3b)
84
        s3s = binascii.a2b_base64(s3b)
84
        a = cycle(self.appid)
85
        a = cycle(self.appid)
85
        b = itzip(s3s, cycle(self.appid))
86
        b = itzip(s3s, cycle(self.bappid))
86
        if PY3:
87
        if PY3:
87
            self.s4 = b''.join((x ^ y).to_bytes(1, byteorder='big')
88
            self.s4 = b''.join((x ^ y).to_bytes(1, byteorder='big')
88
                               for (x, y) in itzip(s3s, cycle(self.appid)))
89
                               for (x, y) in itzip(s3s, cycle(self.bappid)))
89
        else:
90
        else:
90
            self.s4 = b''.join(chr(ord(x) ^ ord(y))
91
            self.s4 = b''.join(chr(ord(x) ^ ord(y))
91
                               for (x, y) in itzip(s3s, cycle(self.appid)))
92
                               for (x, y) in itzip(s3s, cycle(self.bappid)))
92
93
93
    def _api_request(self, params, uri, **opt):
94
    def _api_request(self, params, uri, **opt):
94
        '''Qobuz API HTTP get request
95
        '''Qobuz API HTTP get request
95
            Arguments:
96
            Arguments:
96
            params:    parameters dictionary
97
            params:    parameters dictionary
...
...
112
113
113
            This should produce something like:
114
            This should produce something like:
114
            Error: [200]
115
            Error: [200]
115
            Error: Bad Request [400]
116
            Error: Bad Request [400]
116
        '''
117
        '''
117
        info(self, 'uri: {}, params: {}', uri, str(params))
118
        self.statTotalRequest += 1
118
        self.statTotalRequest += 1
119
        self.error = ''
119
        self.error = ''
120
        self.status_code = None
120
        self.status_code = None
121
        url = self._baseUrl + uri
121
        url = self._baseUrl + uri
122
        useToken = False if (opt and 'noToken' in opt) else True
122
        useToken = False if (opt and 'noToken' in opt) else True
...
...
127
        '''DEBUG'''
127
        '''DEBUG'''
128
        import copy
128
        import copy
129
        _copy_params = copy.deepcopy(params)
129
        _copy_params = copy.deepcopy(params)
130
        if 'password' in _copy_params:
130
        if 'password' in _copy_params:
131
            _copy_params['password'] = '***'
131
            _copy_params['password'] = '***'
132
        info(self, 'URI {} POST PARAMS: {} HEADERS: {}', uri,
133
             str(_copy_params), str(headers))
132
        '''END / DEBUG'''
134
        '''END / DEBUG'''
133
        r = None
135
        r = None
134
        try:
136
        try:
135
            r = self.session.post(url, data=params, headers=headers)
137
            r = self.session.post(url, data=params, headers=headers)
136
        except:
138
        except: