¿Cómo obtener de forma segura la extensión del archivo desde una URL?

Considere las siguientes URL

http://m3u.com/tunein.m3u
http://asxsomeurl.com/listen.asx:8024
http://www.plssomeotherurl.com/station.pls?id=111
http://22.198.133.16:8024

¿Cuál es la forma correcta de determinar las extensiones de archivo (.m3u / .asx / .pls)? Obviamente, el último no tiene una extensión de archivo.

EDITAR: Olvidé mencionar que m3u / asx / pls son listas de reproducción (archivos de texto) para secuencias de audio y deben analizarse de manera diferente. El objetivo determina la extensión y luego envía la url a la función de análisis adecuada. P.ej.


url = argv[1]
ext = GetExtension(url)
if ext == "pls":
  realurl = ParsePLS(url)
elif ext == "asx":
  realurl = ParseASX(url)
(etc.)
else:
  realurl = url
Play(realurl)
GetExtension () debería devolver la extensión del archivo (si corresponde), preferiblemente sin conectarse a la URL.

Respuestas a la pregunta(9)

Su respuesta a la pregunta