dur
· 1.0 KiB · Text
Raw
#!/usr/bin/env python3
from sys import stderr, argv, exit
import subprocess
def hms(inp):
m,s = divmod(inp,60)
h,m = divmod(m,60)
return f"{str(int(h)).zfill(2)}:{str(int(m)).zfill(2)}:{str(round(s,2)).zfill(2)}"
# return ":".join(map(str,(int(h),int(m),round(s,2))))
def get_video_duration(fileloc) :
command = ['ffprobe',
'-v', 'fatal',
'-show_entries', 'stream=duration',
'-of', 'default=noprint_wrappers=1:nokey=1',
fileloc, '-sexagesimal']
ffmpeg = subprocess.Popen(command, stderr=subprocess.PIPE ,stdout = subprocess.PIPE )
out, err = ffmpeg.communicate()
if(err) : print(err)
out = out.decode('utf-8').strip()
return map(float,out.split(":"))
def main():
tot = 0.0
for fn in argv[1:]:
h,m,s = get_video_duration(fn)
tot += h*60*60 + m*60 + s
print(f"{hms(tot)}", end="\r", file=stderr)
print(hms(tot))
return 0
if __name__ == "__main__":
try:
exit(main())
except KeyboardInterrupt:
exit(127)
| 1 | #!/usr/bin/env python3 |
| 2 | from sys import stderr, argv, exit |
| 3 | import subprocess |
| 4 | |
| 5 | def 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 | |
| 11 | def 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 | |
| 23 | def 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 | |
| 32 | if __name__ == "__main__": |
| 33 | try: |
| 34 | exit(main()) |
| 35 | except KeyboardInterrupt: |
| 36 | exit(127) |