docs: def get_input_media(
          media, *,
          is_photo=False, attributes=None, force_document=False,
          voice_note=False, video_note=False, supports_streaming=False
  ):
      """
      Similar to :meth:`get_input_peer`, but for media.
  
      If the media is :tl:`InputFile` and ``is_photo`` is known to be ``True``,
      it will be treated as an :tl:`InputMediaUploadedPhoto`. Else, the rest
      of parameters will indicate how to treat it.
      """
      try:
          if media.SUBCLASS_OF_ID == 0xfaf846f4:  # crc32(b'InputMedia')
              return media
          elif media.SUBCLASS_OF_ID == 0x846363e0:  # crc32(b'InputPhoto')
              return types.InputMediaPhoto(media)
          elif media.SUBCLASS_OF_ID == 0xf33fdb68:  # crc32(b'InputDocument')
              return types.InputMediaDocument(media)
      except AttributeError:
          _raise_cast_fail(media, 'InputMedia')
  
      if isinstance(media, types.MessageMediaPhoto):
          return types.InputMediaPhoto(
              id=get_input_photo(media.photo),
              ttl_seconds=media.ttl_seconds
          )
  
      if isinstance(media, (types.Photo, types.photos.Photo, types.PhotoEmpty)):
          return types.InputMediaPhoto(
              id=get_input_photo(media)
          )
  
      if isinstance(media, types.MessageMediaDocument):
          return types.InputMediaDocument(
              id=get_input_document(media.document),
              ttl_seconds=media.ttl_seconds
          )
  
      if isinstance(media, (types.Document, types.DocumentEmpty)):
          return types.InputMediaDocument(
              id=get_input_document(media)
          )
  
      if isinstance(media, (types.InputFile, types.InputFileBig)):
          if is_photo:
              return types.InputMediaUploadedPhoto(file=media)
          else:
              attrs, mime = get_attributes(
                  media,
                  attributes=attributes,
                  force_document=force_document,
                  voice_note=voice_note,
                  video_note=video_note,
                  supports_streaming=supports_streaming
              )
              return types.InputMediaUploadedDocument(
                  file=media, mime_type=mime, attributes=attrs)
  
      if isinstance(media, types.MessageMediaGame):
          return types.InputMediaGame(id=media.game.id)
  
      if isinstance(media, types.MessageMediaContact):
          return types.InputMediaContact(
              phone_number=media.phone_number,
              first_name=media.first_name,
              last_name=media.last_name,
              vcard=''
          )
  
      if isinstance(media, types.MessageMediaGeo):
          return types.InputMediaGeoPoint(geo_point=get_input_geo(media.geo))
  
      if isinstance(media, types.MessageMediaVenue):
          return types.InputMediaVenue(
              geo_point=get_input_geo(media.geo),
              title=media.title,
              address=media.address,
              provider=media.provider,
              venue_id=media.venue_id,
              venue_type=''
          )
  
      if isinstance(media, (
              types.MessageMediaEmpty, types.MessageMediaUnsupported,
              types.ChatPhotoEmpty, types.UserProfilePhotoEmpty,
              types.ChatPhoto, types.UserProfilePhoto,
              types.FileLocationToBeDeprecated)):
          return types.InputMediaEmpty()
  
      if isinstance(media, types.Message):
          return get_input_media(media.media, is_photo=is_photo)
  
      _raise_cast_fail(media, 'InputMedia')