v1.0.0
parent
02ecf79797
commit
eb9e509ef8
@ -1,5 +1,9 @@
|
||||
# scan-vid
|
||||
|
||||
scan-vid получение мета информации по видео.
|
||||
Сканирует видео-файлы для получения мета информации
|
||||
|
||||
|
||||
## Особенности
|
||||
|
||||
Использует ffprobe для получения информации в виде json файла
|
||||
|
||||
Сканирует каталоги
|
@ -0,0 +1,53 @@
|
||||
#!/usr/local/bin/python
|
||||
|
||||
# выбирает информацию по видео файлу.
|
||||
|
||||
import subprocess
|
||||
import json
|
||||
import datetime
|
||||
|
||||
# правильный перевод!
|
||||
def humanbytes(B):
|
||||
"""Return the given bytes as a human friendly KB, MB, GB, or TB string."""
|
||||
B = float(B)
|
||||
KB = float(1024)
|
||||
MB = float(KB ** 2) # 1,048,576
|
||||
GB = float(KB ** 3) # 1,073,741,824
|
||||
TB = float(KB ** 4) # 1,099,511,627,776
|
||||
|
||||
if B < KB:
|
||||
return '{0} {1}'.format(B,'Bytes' if 0 == B > 1 else 'Byte')
|
||||
elif KB <= B < MB:
|
||||
return '{0:.2f} KB'.format(B / KB)
|
||||
elif MB <= B < GB:
|
||||
return '{0:.2f} MB'.format(B / MB)
|
||||
elif GB <= B < TB:
|
||||
return '{0:.2f} GB'.format(B / GB)
|
||||
elif TB <= B:
|
||||
return '{0:.2f} TB'.format(B / TB)
|
||||
|
||||
# =================== начало программы ====================
|
||||
|
||||
file = "d:/vids/sea/Ça (1978) (+18) - поиск Яндекса по видео.mp4"
|
||||
cmd = "ffprobe -v quiet -print_format json -show_format -show_streams \"%s\"" % file
|
||||
output = subprocess.run(cmd, capture_output=True, text=True, shell=True)
|
||||
|
||||
# обычный вывод
|
||||
#output = subprocess.run(cmd, text=True, shell=True)
|
||||
#print(output)
|
||||
|
||||
data = json.loads(output.stdout)
|
||||
info = {}
|
||||
|
||||
info["audio"] = len(data["streams"]) > 1
|
||||
total_seconds = datetime.timedelta(seconds=float(data["format"]["duration"]))
|
||||
info["duration"] = datetime.datetime.strptime(str(total_seconds), "%H:%M:%S.%f").strftime("%H:%M:%S")
|
||||
info["width"] = data["streams"][0]["width"]
|
||||
info["height"] = data["streams"][0]["height"]
|
||||
info["bit_rate"] = data["streams"][0]["avg_frame_rate"]
|
||||
info["codec"] = data["streams"][0]["codec_name"]
|
||||
|
||||
info["filename"] = data["format"]["filename"]
|
||||
info["size"] = humanbytes(data["format"]["size"])
|
||||
|
||||
print(info)
|
Loading…
Reference in New Issue