Python от URL до расширения файла - PullRequest
0 голосов
/ 02 мая 2020

Я загрузил много файлов плейлистов здесь

Код, который я написал:

path = 'playlist_files/samples'
files = os.listdir(path)
for name in files:
    filename = "http://users.sch.gr/apappas/temp/"+name
    r = requests.get(filename, verify=False, timeout=5)
    print(filename+" "+r.headers['content-type'])

Вывод:

http://users.sch.gr/apappas/temp/test03.pls application/pls+xml
http://users.sch.gr/apappas/temp/test05.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test04.smil application/smil+xml
http://users.sch.gr/apappas/temp/test05.wpl application/vnd.ms-wpl
http://users.sch.gr/apappas/temp/test01.pla text/plain
http://users.sch.gr/apappas/temp/test02.ram audio/x-pn-realaudio
http://users.sch.gr/apappas/temp/test01.hypetape text/xml
http://users.sch.gr/apappas/temp/test01.rss application/rss+xml
http://users.sch.gr/apappas/temp/test03.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test02.mpcpl text/plain
http://users.sch.gr/apappas/temp/test01.xspf application/x-xspf+xml
http://users.sch.gr/apappas/temp/test02.rmp text/plain
http://users.sch.gr/apappas/temp/test01.kpl text/plain
http://users.sch.gr/apappas/temp/test03.wpl application/vnd.ms-wpl
http://users.sch.gr/apappas/temp/test01.wax audio/x-ms-wax
http://users.sch.gr/apappas/temp/test01.pls application/pls+xml
http://users.sch.gr/apappas/temp/test02.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test01.wpl application/vnd.ms-wpl
http://users.sch.gr/apappas/temp/test06.smil application/smil+xml
http://users.sch.gr/apappas/temp/test06.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test02.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test01.b4s text/xml
http://users.sch.gr/apappas/temp/test01.rmp text/xml
http://users.sch.gr/apappas/temp/test02.wpl application/vnd.ms-wpl
http://users.sch.gr/apappas/temp/test06.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test01.smil application/smil+xml
http://users.sch.gr/apappas/temp/test04.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test02.atom application/atom+xml
http://users.sch.gr/apappas/temp/test02.rss application/rss+xml
http://users.sch.gr/apappas/temp/test04.rmp text/xml
http://users.sch.gr/apappas/temp/test04.pls application/pls+xml
http://users.sch.gr/apappas/temp/test01.plist text/xml
http://users.sch.gr/apappas/temp/test03.mpcpl text/plain
http://users.sch.gr/apappas/temp/test02.plp text/plain
http://users.sch.gr/apappas/temp/test05.smil application/smil+xml
http://users.sch.gr/apappas/temp/test01.plp text/plain
http://users.sch.gr/apappas/temp/test06.rss application/rss+xml
http://users.sch.gr/apappas/temp/test01.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test01.ram audio/x-pn-realaudio
http://users.sch.gr/apappas/temp/test04.rss application/rss+xml
http://users.sch.gr/apappas/temp/test01.atom application/atom+xml
http://users.sch.gr/apappas/temp/test03.rmp text/xml
http://users.sch.gr/apappas/temp/test05.pls application/pls+xml
http://users.sch.gr/apappas/temp/test01.wvx video/x-ms-wvx
http://users.sch.gr/apappas/temp/test01.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test01.xml text/xml
http://users.sch.gr/apappas/temp/test02.smil application/smil+xml
http://users.sch.gr/apappas/temp/test01.mpcpl text/plain
http://users.sch.gr/apappas/temp/test04.wpl application/vnd.ms-wpl
http://users.sch.gr/apappas/temp/test04.mpcpl text/plain
http://users.sch.gr/apappas/temp/test01.m3u8 application/vnd.apple.mpegurl
http://users.sch.gr/apappas/temp/test03.rss application/rss+xml
http://users.sch.gr/apappas/temp/test02.pls application/pls+xml
http://users.sch.gr/apappas/temp/test07.smil application/smil+xml
http://users.sch.gr/apappas/temp/test04.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test02.xspf application/x-xspf+xml
http://users.sch.gr/apappas/temp/test05.rss application/rss+xml
http://users.sch.gr/apappas/temp/test03.m3u audio/x-mpegurl
http://users.sch.gr/apappas/temp/test03.smil application/smil+xml
http://users.sch.gr/apappas/temp/test05.asx video/x-ms-asf
http://users.sch.gr/apappas/temp/test02.plist text/xml
http://users.sch.gr/apappas/temp/test08.smil application/smil+xml
http://users.sch.gr/apappas/temp/test02.b4s text/xml
http://users.sch.gr/apappas/temp/test07.asx video/x-ms-asf

Теперь я хочу из содержимого типа или из загруженного файла извлечь расширение.

Например: http://www.example.com/index.php?file=22 ---> тип содержимого: some_content_type -> file_extension = ?

Возможно ли это?

Редактировать: filename.split(".")[-1] неверный ответ, поскольку для http://www.example.com/index.php?file=22 расширение будет php? File = 22 false

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Вы можете получить его из имени файла следующим образом:

from urllib.parse import urlparse
import os

url = "http://www.example.com/index.php.gz?file=22"
clean_path = urlparse(url).path
extension = os.path.splitext(clean_path)[1]
0 голосов
/ 03 мая 2020
import mimetypes

extension = mimetypes.guess_extension(type, strict=True)

if(extension=="None"):
    try:
         parse_pls_file(filename)
         parse_m3u_file(filename)
         ....
         parse_asx_file(filename)
    except Exception as e:
         print(e)
else:
#save file as `filename+extension`

Я написал много парсеров, а остальные напишу через несколько дней. Итак, я думаю, что все в порядке. Я прав?

...