Last active 1625145369

A script to get total duration of files provided in arguments. Python3 and ffprobe

Revision 795818ba004ef250ed65ab6b288bbdba876766b7

dur Raw
1#!/usr/bin/env python3
2from sys import stderr, argv, exit
3import subprocess
4
5def hms(inp):
6 m,s = divmod(inp,60)
7 h,m = divmod(m,60)
8 return f"{str(int(h)).zfill(2)}:{str(int(m)).zfill(2)}:{str(round(s,2)).zfill(2)}"
9# return ":".join(map(str,(int(h),int(m),round(s,2))))
10
11def get_video_duration(fileloc) :
12 command = ['ffprobe',
13 '-v', 'fatal',
14 '-show_entries', 'stream=duration',
15 '-of', 'default=noprint_wrappers=1:nokey=1',
16 fileloc, '-sexagesimal']
17 ffmpeg = subprocess.Popen(command, stderr=subprocess.PIPE ,stdout = subprocess.PIPE )
18 out, err = ffmpeg.communicate()
19 if(err) : print(err)
20 out = out.decode('utf-8').strip()
21 return map(float,out.split(":"))
22
23def main():
24 tot = 0.0
25 for fn in argv[1:]:
26 h,m,s = get_video_duration(fn)
27 tot += h*60*60 + m*60 + s
28 print(f"{hms(tot)}", end="\r", file=stderr)
29 print(hms(tot))
30 return 0
31
32if __name__ == "__main__":
33 try:
34 exit(main())
35 except KeyboardInterrupt:
36 exit(127)