docs: def get_url(self, path='/', websocket=False, remote=True,
                attach_api_key=True, userId=None, pass_uid=False, **query):
      '''construct a url for an emby request
  
      Parameters
      ----------
      path : str
        uri path(excluding domain and port) of get request for emby
      websocket : bool, optional
        if true, then `ws(s)` are used instead of `http(s)`
      remote : bool, optional
        if true, remote-address is used (default True)
      attach_api_key : bool, optional
        if true, apikey is added to the query (default True)
      userId : str, optional
        uid to use, if none, default is used
      pass_uid : bool, optional
        if true, uid is added to the query (default False)
      query : karg dict
        additional parameters to set (part of url after the `?`)
  
      Also See
      --------
        get :
        getJson :
        post :
        delete :
  
      Returns
      -------
      full url
      '''
      userId = userId or self.userid
      if attach_api_key and self.api_key:
        query.update({'api_key':self.api_key, 'deviceId': self.device_id})
      if pass_uid:
        query['userId'] = userId
  
      if remote:
        url = self.urlremote or self.url
      else:
        url = self.url
  
      if websocket:
        scheme = {'http':'ws', 'https':'wss'}[url.scheme]
      else:
        scheme = url.scheme
      netloc = url.netloc + '/emby'
  
      url = urlunparse((scheme, netloc, path, '', '{params}', '')).format(
        UserId   = userId,
        ApiKey   = self.api_key,
        DeviceId = self.device_id,
        params   = urlencode(query)
      )
  
      return url[:-1] if url[-1] == '?' else url