Wpis z mikrobloga

Chcę zrobić prostą apke desktopową w Pythonie, która wyświetli zsumowany czas wszystkich plików wideo w danym folderze i mam problem z pobraniem metadanych z pliku. Wszyscy polecają używać do tego celu ffmpeg. O ile do odczytania pojedyńczego pliku jest ok, to iteracja nim pętlą po kilkuset plikach nie jest zbyt optymalna i zajmuje zbyt wiele czasu. W Windowsie, kiedy zaznaczę pliki wideo i wejdę w 'details' to po chwili pokazuje mi zsumowany czas. Ma ktoś jakiś pomysł jak to zrobić?

#programowanie #python
  • 5
@exid7e: W sensie iterujesz po wielu plikach w pythonie i za każdym plikiem wołasz od nowa ffmpeg z tym plikiem jako input? I na jakim systemie chcesz to zrobić docelowo, na windowsie?
@exid7e Sprawdź, czy ten kawałek kodu będzie dla Ciebie wystarczająco szybki, jeżeli nie, to być może Windows "oszukuje" i zapisuje sobie metadane o plikach gdzieś do pamięci podręcznej, a nie wyciąga ich z plików za każdym razem.

import os
import mutagen.mp4

dir = 'path/to/dir/with/movies'
files = os.listdir(dir)
duration = 0

for file in files:
path = os.path.join(dir, file)
if not os.path.isfile(path):
continue
if not path.lower().endswith('.mp4'):
continue
mp4 = mutagen.mp4.MP4(path)
duration += mp4.info.length