2012-07-03 8 views
5

Kullanıcıların videoları ve ses dosyalarını yükledikleri bir sitede çalışıyorum, yüklediğimde, dosyadan bazı ortak meta veri alanları doldurulmalıdır. Hachoir'u buldum ve iyi görünüyor, ancak bir problemle, meta veri okuması için bir ayrıştırıcı oluşturmak için gerekli olan dosya benzeri veya akış nesnesi yerine bir dosya adıdır.Python: Hachoir'i kullanarak dosya benzeri nesneler için meta verileri nasıl çıkarırsınız?

Şu anda web geliştirme için Django kullanıyorum ve FileStorage API'sini kullanmaya devam etmek istiyorum, bu yüzden dosyalar bir CDN'ye güzel bir şekilde yüklenebilir.

Hachoir dosya benzeri nesnelerle nasıl kullanılır? sample code, yalnızca "gerçek" dosyalar için çalışırlar.

cevap

4

Hızlı ve kirli pasajı:

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 

Sadece daha iyi hata işleme gerek :)

İlgili konular