docs: def print_stats(self):
          """
          Print a series of relevant stats about a full execution. This function
          is meant to be called at the end of the program.
          """
          stats = self.calculate()
          total_time = '%d:%02d:%02d' % (stats['total_time'] / 3600,
                                         (stats['total_time'] / 3600) / 60,
                                         (stats['total_time'] % 3600) % 60)
          output = """\
  Total runtime: {total_time}
      Lyrics found: {found}
      Lyrics not found:{notfound}
      Most useful source:\
  {best} ({best_count} lyrics found) ({best_rate:.2f}% success rate)
      Least useful source:\
  {worst} ({worst_count} lyrics found) ({worst_rate:.2f}% success rate)
      Fastest website to scrape: {fastest} (Avg: {fastest_time:.2f}s per search)
      Slowest website to scrape: {slowest} (Avg: {slowest_time:.2f}s per search)
      Average time per website: {avg_time:.2f}s
  
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  xxx    PER WEBSITE STATS:      xxx
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  """
          output = output.format(total_time=total_time,
                                 found=stats['found'],
                                 notfound=stats['notfound'],
                                 best=stats['best'][0].capitalize(),
                                 best_count=stats['best'][1],
                                 best_rate=stats['best'][2],
                                 worst=stats['worst'][0].capitalize(),
                                 worst_count=stats['worst'][1],
                                 worst_rate=stats['worst'][2],
                                 fastest=stats['fastest'][0].capitalize(),
                                 fastest_time=stats['fastest'][1],
                                 slowest=stats['slowest'][0].capitalize(),
                                 slowest_time=stats['slowest'][1],
                                 avg_time=self.avg_time())
          for source in sources:
              stat = str(self.source_stats[source.__name__])
              output += f'\n{source.__name__.upper()}\n{stat}\n'
  
          print(output)