docs: def _get_asset_urls(self, asset_id):
          """
          Get list of asset urls and file names. This method may internally
          use AssetRetriever to extract `asset` element types.
  
          @param asset_id: Asset ID.
          @type asset_id: str
  
          @return List of dictionaries with asset file names and urls.
          @rtype [{
              'name': '<filename.ext>'
              'url': '<url>'
          }]
          """
          dom = get_page(self._session, OPENCOURSE_ASSETS_URL,
                         json=True, id=asset_id)
          logging.debug('Parsing JSON for asset_id <%s>.', asset_id)
  
          urls = []
  
          for element in dom['elements']:
              typeName = element['typeName']
              definition = element['definition']
  
              # Elements of `asset` types look as follows:
              #
              # {'elements': [{'definition': {'assetId': 'gtSfvscoEeW7RxKvROGwrw',
              #                               'name': 'Презентация к лекции'},
              #                'id': 'phxNlMcoEeWXCQ4nGuQJXw',
              #                'typeName': 'asset'}],
              #  'linked': None,
              #  'paging': None}
              #
              if typeName == 'asset':
                  open_course_asset_id = definition['assetId']
                  for asset in self._asset_retriever([open_course_asset_id],
                                                     download=False):
                      urls.append({'name': asset.name, 'url': asset.url})
  
              # Elements of `url` types look as follows:
              #
              # {'elements': [{'definition': {'name': 'What motivates you.pptx',
              #                               'url': 'https://d396qusza40orc.cloudfront.net/learning/Powerpoints/2-4A_What_motivates_you.pptx'},
              #                'id': '0hixqpWJEeWQkg5xdHApow',
              #                'typeName': 'url'}],
              #  'linked': None,
              #  'paging': None}
              #
              elif typeName == 'url':
                  urls.append({'name': definition['name'].strip(),
                               'url': definition['url'].strip()})
  
              else:
                  logging.warning(
                      'Unknown asset typeName: %s\ndom: %s\n'
                      'If you think the downloader missed some '
                      'files, please report the issue here:\n'
                      'https://github.com/coursera-dl/coursera-dl/issues/new',
                      typeName, json.dumps(dom, indent=4))
  
          return urls