docs: def ytdl_progress_hook(self, d):
          """Called when youtube-dl updates progress"""
          if d['status'] == 'downloading':
              self.play_empty()
  
              if "elapsed" in d:
                  if d["elapsed"] > self.current_download_elapsed + 4:
                      self.current_download_elapsed = d["elapsed"]
  
                      current_download = 0
                      current_download_total = 0
                      current_download_eta = 0
                      if "total_bytes" in d and d["total_bytes"] > 0:
                          current_download_total = d["total_bytes"]
                      elif "total_bytes_estimate" in d and d["total_bytes_estimate"] > 0:
                          current_download_total = d["total_bytes_estimate"]
                      if "downloaded_bytes" in d and d["downloaded_bytes"] > 0:
                          current_download = d["downloaded_bytes"]
                      if "eta" in d and d["eta"] > 0:
                          current_download_eta = d["eta"]
  
                      if current_download_total > 0:
                          percent = round(100 * (current_download / current_download_total))
                          if percent > 100:
                              percent = 100
                          elif percent < 0:
                              percent = 0
  
                          seconds = str(round(current_download_eta)) if current_download_eta > 0 else ""
                          eta = " ({} {} remaining)".format(seconds, "seconds" if seconds != 1 else "second")
  
                          downloading = "Downloading song: {}%{}".format(percent, eta)
                          if self.prev_time != downloading:
                              self.timelog.debug(downloading)
                              self.prev_time = downloading
          if d['status'] == 'error':
              self.statuslog.error("Error downloading song")
          elif d['status'] == 'finished':
              self.statuslog.info("Downloaded song")
              downloading = "Downloading song: {}%".format(100)
              if self.prev_time != downloading:
                  self.timelog.debug(downloading)
                  self.prev_time = downloading
  
              if "elapsed" in d:
                  download_time = "{} {}".format(d["elapsed"] if d["elapsed"] > 0 else "<1",
                                                 "seconds" if d["elapsed"] != 1 else "second")
                  self.logger.debug("Downloaded song in {}".format(download_time))
  
              # Create an FFmpeg player
              future = asyncio.run_coroutine_threadsafe(self.create_ffmpeg_player(d['filename']), client.loop)
              try:
                  future.result()
              except Exception as e:
                  logger.exception(e)
                  return