|
|
@ -2,8 +2,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
# выбирает информацию по видео файлу.
|
|
|
|
# выбирает информацию по видео файлу.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
import subprocess
|
|
|
|
import subprocess
|
|
|
|
import json
|
|
|
|
import json
|
|
|
|
|
|
|
|
import zlib
|
|
|
|
import datetime
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
|
|
# правильный перевод!
|
|
|
|
# правильный перевод!
|
|
|
@ -26,9 +28,38 @@ def humanbytes(B):
|
|
|
|
elif TB <= B:
|
|
|
|
elif TB <= B:
|
|
|
|
return '{0:.2f} TB'.format(B / TB)
|
|
|
|
return '{0:.2f} TB'.format(B / TB)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# file_info
|
|
|
|
|
|
|
|
def file_info(fn):
|
|
|
|
|
|
|
|
meta = {}
|
|
|
|
|
|
|
|
with open(fn, 'rb') as fp:
|
|
|
|
|
|
|
|
filename, file_extension = os.path.splitext(fn)
|
|
|
|
|
|
|
|
created = os.path.getmtime(fn)
|
|
|
|
|
|
|
|
dt_m = datetime.datetime.fromtimestamp(created)
|
|
|
|
|
|
|
|
size = os.path.getsize(fn)
|
|
|
|
|
|
|
|
data = fp.read()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
meta["name"] = fn
|
|
|
|
|
|
|
|
meta["path"] = os.path.splitdrive(fn)[1]
|
|
|
|
|
|
|
|
meta["ext"] = file_extension.lower()
|
|
|
|
|
|
|
|
meta["date"] = dt_m
|
|
|
|
|
|
|
|
meta["type"] = "meta"
|
|
|
|
|
|
|
|
meta["crc"] = zlib.crc32(data)
|
|
|
|
|
|
|
|
meta["size"] = size
|
|
|
|
|
|
|
|
return meta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def humanbitrate(s):
|
|
|
|
|
|
|
|
items = s.split("/")
|
|
|
|
|
|
|
|
a = float(items[0])
|
|
|
|
|
|
|
|
b = float(items[1])
|
|
|
|
|
|
|
|
bitrate = "%8.1f" % (a / b)
|
|
|
|
|
|
|
|
return bitrate.strip()
|
|
|
|
|
|
|
|
|
|
|
|
# =================== начало программы ====================
|
|
|
|
# =================== начало программы ====================
|
|
|
|
|
|
|
|
|
|
|
|
file = "d:/vids/sea/Ça (1978) (+18) - поиск Яндекса по видео.mp4"
|
|
|
|
file = "d:/vids/sea/Ça (1978) (+18) - поиск Яндекса по видео.mp4"
|
|
|
|
|
|
|
|
meta = file_info(file)
|
|
|
|
|
|
|
|
#print(meta)
|
|
|
|
|
|
|
|
|
|
|
|
cmd = "ffprobe -v quiet -print_format json -show_format -show_streams \"%s\"" % file
|
|
|
|
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, capture_output=True, text=True, shell=True)
|
|
|
|
|
|
|
|
|
|
|
@ -44,10 +75,15 @@ 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["duration"] = datetime.datetime.strptime(str(total_seconds), "%H:%M:%S.%f").strftime("%H:%M:%S")
|
|
|
|
info["width"] = data["streams"][0]["width"]
|
|
|
|
info["width"] = data["streams"][0]["width"]
|
|
|
|
info["height"] = data["streams"][0]["height"]
|
|
|
|
info["height"] = data["streams"][0]["height"]
|
|
|
|
info["bit_rate"] = data["streams"][0]["avg_frame_rate"]
|
|
|
|
info["bit_rate"] = humanbitrate(data["streams"][0]["avg_frame_rate"])
|
|
|
|
info["codec"] = data["streams"][0]["codec_name"]
|
|
|
|
info["codec"] = data["streams"][0]["codec_name"]
|
|
|
|
|
|
|
|
|
|
|
|
info["filename"] = data["format"]["filename"]
|
|
|
|
info["filename"] = meta["name"]
|
|
|
|
info["size"] = humanbytes(data["format"]["size"])
|
|
|
|
info["ext"] = meta["ext"]
|
|
|
|
|
|
|
|
info["crc"] = meta["crc"]
|
|
|
|
|
|
|
|
info["created"] = meta["date"]
|
|
|
|
|
|
|
|
info["hcreated"] = meta["date"].strftime("%d.%m.%Y")
|
|
|
|
|
|
|
|
info["size"] = data["format"]["size"]
|
|
|
|
|
|
|
|
info["hsize"] = humanbytes(data["format"]["size"])
|
|
|
|
|
|
|
|
|
|
|
|
print(info)
|
|
|
|
print(info)
|
|
|
|