code: def save(self, filename, _url, **kwargs):
          
          api_call = self._create_api_call('save', _url, kwargs)
          api_call.filename = filename
  
          data = self._clean_arguments(kwargs.pop('data', None))
          params = self._clean_arguments(kwargs)
          mkdir(os.path.split(filename)[0])
          if os.path.exists(filename):
              os.remove(filename)
  
          if filename.lower().endswith('.m3u8'):  # remove old files
              mkdir(os.path.split(filename)[0])
              ts_path = api_call.get_ts_folder(filename)
              mkdir(ts_path)
              [os.remove(file_) for file_ in glob.glob(ts_path + '/*.ts')]
  
          api_call.set_request(method='GET',
                               data=data,
                               params=params,
                               sub_url=_url)
  
          api_call.send(stream_to_file=filename)
  
          last_repeat_needed = 0
          while last_repeat_needed < api_call.repeat_needed:
              last_repeat_needed = api_call.repeat_needed
              for remaining_repeat_attempts in range(1000, -1, -1):
                  if not api_call.repeat_needed:
                      break
                  api_call.send(stream_to_file=filename)
          return filename
docs: This will stream the results to a file called <filename>
          This will return the url for a Request instead of actually
          performing the request, and then store it in self['label'].
  
          :param filename: str of the full path of the file to save
          :param _url:     str of the sub url of the api call (ex. g/device/list)
          :param kwargs:   dict of additional arguments
          :return: