implemented getting stream lengths
This commit is contained in:
parent
b033358b72
commit
7f3a8f94b2
33
coub-dl.py
33
coub-dl.py
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user