implemented getting stream lengths

This commit is contained in:
Kjistóf 2017-01-15 20:06:19 +01:00
parent b033358b72
commit 7f3a8f94b2
1 changed files with 31 additions and 2 deletions

View File

@ -1,15 +1,44 @@
from subprocess import call, check_output, STDOUT
from subprocess import call, Popen, PIPE
from os import listdir
from re import match
from sys import argv
def getCmdStdErr(command):
process = Popen(command, stderr=PIPE, stdout=PIPE)
out, err = process.communicate()
return err
def getDuration(ffprobe_output):
durationPattern = r'.*Duration:\s(.+),\sstart.*'
regex = match(durationPattern, str(ffprobe_output))
duration = regex.groups()[0] if regex else None
if not duration:
raise ValueError('Cannot process ffprobe output!')
return duration
argv.append('https://coub.com/view/aeeuu')
AUDIO_FILE = 'audio'
VIDEO_FILE = 'video'
URL = argv[1] if len(argv) > 0 else ''
URL = argv[1] if len(argv) > 0 else '' # youtube-dl error message will be shown if ''
call(('/usr/bin/env', 'youtube-dl', '--extract-audio',
'--output', '{}.%(ext)s'.format(AUDIO_FILE),
URL))
call(('/usr/bin/env', 'youtube-dl', '--output', '{}.%(ext)s'.format(VIDEO_FILE),
URL))
for file in listdir():
if match('^{}.*'.format(AUDIO_FILE), file):
AUDIO_FILE = file
if match('^{}.*'.format(VIDEO_FILE), file):
VIDEO_FILE = file
audioLen = getDuration(getCmdStdErr(('/usr/bin/env', 'ffprobe', AUDIO_FILE)))
videoLen = getDuration(getCmdStdErr(('/usr/bin/env', 'ffprobe', VIDEO_FILE)))
print(audioLen)
print(videoLen)