2016-05-17 11 views
2

ich überprüfen möchten, ob eine URL Video Raw-Datei Link ist oder nicht, zum Beispiel:Python - Überprüfen Sie, ob eine URL ein Video Raw-Datei Link ohne ist urllib.request.urlopen

http://hidden_path/video_name.mp4

Nachfolgend finden mein aktueller Code:

def is_video(url): 
    r = None 
    try: 
     r = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})) 
    except: 
     return False 
    content_type = r.getheader("Content-Type") 
    if re.match("video*", content_type): 
     return True 
    return False 

Dieser Code wird Problem haben, wenn die Video-uRL ein großes Video ist, und es kann Timeout-Fehler auf dem Server verursachen.

Gibt es bessere Ansätze?

+0

könnte für einen HTTP-Download-Header Arbeit überprüft? – techydesigner

Antwort

2

Wenn Sie nur die Content-Type der Kopfzeile überprüfen möchten, können Sie eine HEAD Anfrage anstelle der GET Anfrage senden.

Sobald Sie die Antwort von der HEAD Anfrage erhalten haben, können Sie nach video in der Content-Type Header wie oben überprüfen.

Beispiel:

>>> req = urllib.request.Request(url, method='HEAD', headers={'User-Agent': 'Mozilla/5.0'}) 
>>> r = urllib.request.urlopen(req) 
>>> r.getheader('Content-Type') 
'video/mp4' 
0

Hope this tut es

import mimetypes 
url = 'http://media.theaterchurch.com/podcast/video/hd/720p/2016/05-08-16-720p.mp4' 
print mimetypes.MimeTypes().guess_type(url)[0] 

gibt dieses ...

video/mp4 
Verwandte Themen