Como obter com segurança a extensão do arquivo a partir de um URL?

Considere os seguintes URLs

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

Qual é a maneira correta de determinar as extensões de arquivo (.m3u / .asx / .pls)? Obviamente, o último não possui uma extensão de arquivo.

EDIT: Esqueci de mencionar que m3u / asx / pls são listas de reprodução (arquivos de texto) para fluxos de áudio e devem ser analisadas de maneira diferente. O objetivo determina a extensão e envia o URL para a função de análise apropriada. Por exemplo.


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 () deve retornar a extensão do arquivo (se houver), de preferência sem se conectar ao URL.

questionAnswers(9)

yourAnswerToTheQuestion