code: def get_viirs_sdr_20170128_1229(
      base_dir=None,
      channels=(
          "I01",
          "I02",
          "I03",
          "I04",
          "I05",
          "M01",
          "M02",
          "M03",
          "M04",
          "M05",
          "M06",
          "M07",
          "M08",
          "M09",
          "M10",
          "M11",
          "M12",
          "M13",
          "M14",
          "M15",
          "M16",
          "DNB",
      ),
      granules=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
  ):
      r"""Get VIIRS SDR files for 2017-01-28 12:29 to 12:43.
  
      These files are downloaded from Zenodo. You can see the full file
      listing here: https://zenodo.org/record/263296
  
      Specific channels can be specified with the ``channels`` keyword argument.
      By default, all channels (all I bands, M bands, and DNB bands) will be
      downloaded. Channels are referred to by their band type and channel number
      (ex. "I01" or "M16" or "DNB"). Terrain-corrected geolocation files are
      always downloaded when the corresponding band data is specified.
  
      The ``granules`` argument will control which granules ("time steps")
      are downloaded. There are 10 available and the keyword argument can be
      specified as a tuple of integers from 1 to 10.
  
      This full dataset is ~10.1GB.
  
      Notes:
          File list was retrieved using the zenodo API.
  
          .. code-block:: python
  
              import requests
              viirs_listing = requests.get("https://zenodo.org/api/records/263296")
              viirs_dict = json.loads(viirs_listing.content)
              print("\n".join(sorted(x['links']['self'] for x in viirs_dict['files'])))
  
      """
      base_dir = base_dir or config.get("demo_data_dir", ".")
  
      subdir = os.path.join(base_dir, "viirs_sdr", "20170128_1229")
      os.makedirs(subdir, exist_ok=True)
      urls = (
          ZENODO_BASE_URL + fn
          for fn in _get_filenames_to_download(channels, granules)
      )
  
      files = []
      for url in urls:
          target = os.path.join(subdir, os.path.basename(url))
          files.append(target)
          if os.path.isfile(target):
              logger.info(f"File {target} already exists, skipping...")
              continue
          logger.info(f"Downloading file to {target}...")
          download_url(url, target)
  
      return files
  
imports: import logging
  import os
  from satpy import config
  from satpy.demo.utils import download_url
label_desc: Use image node_id 1 for calling a global function with example usage: get_viirs_sdr_20170128_1229(base_dir, channels, granules) and returns: files