2012-07-03 3 views
5

사용자가 비디오 및 오디오 파일을 업로드하는 사이트에서 작업 중입니다. 업로드 할 때 일부 공용 메타 데이터 필드가 파일에서 채워 져야합니다. Hachoir을 찾았지만 문제가있는 것으로 보입니다. 메타 데이터 읽기 용 파서를 만들려면 파일 또는 스트림 객체가 아닌 파일 이름이 필요합니다.Python : Hachoir를 사용하여 파일과 유사한 객체의 메타 데이터를 추출하는 방법은 무엇입니까?

지금은 웹 개발을 위해 장고를 사용하고 있습니다. FileStorage API를 계속 사용하여 파일을 CDN에 멋지게 업로드 할 수 있습니다.

Hachoir를 오브젝트와 같은 파일과 함께 사용하는 방법은 무엇입니까? sample code 그들은 "진짜"파일에 대해서만 작품을 제공합니다.

답변

4

신속하고 더러운 조각 :

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 

그냥 더 나은 오류 처리를 필요로 :)