code: def get_all_website_links_rec(url, reviewd_urls, limit=None):
      if limit is not None:
          if len(reviewd_urls) >= limit:
              return reviewd_urls
  
      if url not in reviewd_urls:
          # if something happens getting the website links for this url then log the error
          try:
              reviewd_urls[url] = get_all_website_links(url)
          except Exception as e:
              error_message = traceback.format_exc().splitlines()[-1]
              logger.error("An exception occurred: %s", str(e))
              reviewd_urls[url] = {
                  "url": url,
                  "urls": [],
                  "html_content": "",
                  "text_content": "",
                  "error": str(error_message),
              }
  
      to_rev_url_list = []
  
      # create a list of new urls to review that don't exist in the already reviewed ones
      for new_url in reviewd_urls[url]["urls"]:
          # if this is already in the urls, then no need to go and crawl for it
          if new_url in reviewd_urls or new_url in to_rev_url_list:
              continue
  
          # insert immediately to count limit between threads. fill later
          with url_list_lock:
              if limit is None or len(reviewd_urls) < limit:
                  reviewd_urls[new_url] = {}
                  to_rev_url_list.append(new_url)
              else:
                  break
  
      # if there is something to fetch, go fetch
      if len(to_rev_url_list) > 0:
          new_revised_urls = parallel_get_all_website_links(
              to_rev_url_list
          )
  
          reviewd_urls.update(new_revised_urls)
  
          for new_url in new_revised_urls:
              get_all_website_links_rec(new_url, reviewd_urls, limit)
  
imports: import concurrent.futures
  import io
  import re
  import traceback
  from threading import Lock
  from urllib.parse import urljoin, urlparse
  import fitz
  import pandas
  import requests
  from bs4 import BeautifulSoup
  from mindsdb.utilities import log
label_desc: Use image node_id 6 for calling a global function with example usage: get_all_website_links_rec(url, reviewd_urls, limit) and returns: reviewd_urls