2012-07-03 10 views
5

Pracuję nad witryną, w której użytkownicy przesyłają filmy i pliki audio. Po przesłaniu, niektóre popularne pola metadanych muszą zostać wypełnione z pliku. Znalazłem Hachoir i wygląda na to, że dobrze, ale z pewnym problemem, aby stworzyć parser do odczytu metadanych, wymagana jest nazwa pliku, a nie obiekt podobny do pliku lub strumienia.Python: Jak korzystać z Hachoir, jak wyodrębnić metadane dla obiektów podobnych do plików?

W tej chwili używam Django do tworzenia stron internetowych i chciałbym nadal korzystać z API FileStorage, aby pliki mogły być ładnie przesłane do CDN.

Jak używać Hachoir z obiektami podobnymi do plików? The sample code zapewniają prace, ale tylko dla "prawdziwych" plików.

Odpowiedz

4

Szybki i brudny fragment:

from hachoir_core.error import HachoirError 
from hachoir_core.stream import InputIOStream 
from hachoir_parser import guessParser 
from hachoir_metadata import extractMetadata 


def metadata_for_filelike(filelike): 
    try: 
     filelike.seek(0) 
    except (AttributeError, IOError): 
     return None 

    stream = InputIOStream(filelike, None, tags=[]) 
    parser = guessParser(stream) 

    if not parser: 
     return None 

    try: 
     metadata = extractMetadata(parser) 
    except HachoirError: 
     return None 

    return metadata 

Wystarczy lepszą obsługę błędów :)

Powiązane problemy