code: def get_item(self, identifier, item_metadata=None, request_kwargs=None):
          
          request_kwargs = {} if not request_kwargs else request_kwargs
          if not item_metadata:
              logger.debug('no metadata provided for "{0}", '
                           'retrieving now.'.format(identifier))
              item_metadata = self.get_metadata(identifier, request_kwargs)
          mediatype = item_metadata.get('metadata', {}).get('mediatype')
          try:
              item_class = self.ITEM_MEDIATYPE_TABLE.get(mediatype, Item)
          except TypeError:
              item_class = Item
          return item_class(self, identifier, item_metadata)
docs: A method for creating :class:`internetarchive.Item <Item>` and
          :class:`internetarchive.Collection <Collection>` objects.
  
          :type identifier: str
          :param identifier: A globally unique Archive.org identifier.
  
          :type item_metadata: dict
          :param item_metadata: (optional) A metadata dict used to initialize the Item or
                                Collection object. Metadata will automatically be retrieved
                                from Archive.org if nothing is provided.
  
          :type request_kwargs: dict
          :param request_kwargs: (optional) Keyword arguments to be used in
                                      :meth:`requests.sessions.Session.get` request.