code: def collect_list_of_available_assets(
      catalogue_path="GSO_catalogue.json",
  ):
      catalogue_path = file_io.as_path(catalogue_path)
      if catalogue_path.exists():
          return file_io.read_json(catalogue_path)
  
      bypass_ssl_certification()
      # Get a list of available assets
      list_of_assets = []
      for page in itertools.count(start=1):
          url = f"https://fuel.ignitionrobotics.org/1.0/GoogleResearch/models?page={page}"
          try:
              with urllib.request.urlopen(url) as f:
                  list_of_assets.extend(json.load(f))
          except urllib.error.HTTPError:
              assets = [get_metadata(a) for a in list_of_assets]
              file_io.write_json(assets, catalogue_path)
              return assets
  
imports: import argparse
  import functools
  import itertools
  import json
  import logging
  import multiprocessing
  import pathlib
  import re
  import shutil
  import ssl
  import sys
  import tarfile
  import urllib
  import urllib.request
  import urllib.error
  import zipfile
  import pybullet
  import tqdm
  import trimesh
  import trimesh.exchange.obj
  from kubric import file_io
  from kubric import redirect_io
  from kubric.kubric_typing import PathLike
label_desc: Use image node_id 4 for calling a global function with example usage: collect_list_of_available_assets(catalogue_path) and returns: file_io, assets