Report audio duration of each episode being processed
And, in new verbose mode, report when audio files are skipped (as they have been previously processed)
This commit is contained in:
parent
4587950623
commit
044e5bb921
|
@ -4,6 +4,7 @@ import sys
|
||||||
isNumber = re.compile('^[0-9]+$')
|
isNumber = re.compile('^[0-9]+$')
|
||||||
|
|
||||||
class Options:
|
class Options:
|
||||||
|
verbose = False
|
||||||
loadFeed = True
|
loadFeed = True
|
||||||
downloadEpisodes = True
|
downloadEpisodes = True
|
||||||
generate = True
|
generate = True
|
||||||
|
@ -56,6 +57,8 @@ def read():
|
||||||
opts.downloadEpisodes = False
|
opts.downloadEpisodes = False
|
||||||
elif arg == "--no-gen" or arg == "--skip-gen":
|
elif arg == "--no-gen" or arg == "--skip-gen":
|
||||||
opts.generate = False
|
opts.generate = False
|
||||||
|
elif arg == "--verbose":
|
||||||
|
opts.verbose = True
|
||||||
elif arg == 'new':
|
elif arg == 'new':
|
||||||
opts.episodes = 'new'
|
opts.episodes = 'new'
|
||||||
elif arg == 'old':
|
elif arg == 'old':
|
||||||
|
|
14
lib/files.py
14
lib/files.py
|
@ -1,6 +1,7 @@
|
||||||
import glob
|
import glob
|
||||||
import re
|
import re
|
||||||
import lib.fetcher as fetcher
|
import lib.fetcher as fetcher
|
||||||
|
import mutagen
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
|
@ -76,6 +77,19 @@ def saveEpisode(podcast, episode):
|
||||||
def findAudio():
|
def findAudio():
|
||||||
return glob.glob('podcasts/*/*/*.m[4p][a3]')
|
return glob.glob('podcasts/*/*/*.m[4p][a3]')
|
||||||
|
|
||||||
|
def getAudioLength(audioFile):
|
||||||
|
audio = mutagen.File(audioFile)
|
||||||
|
totalLength = audio.info.length
|
||||||
|
hours = int(totalLength // 3600)
|
||||||
|
totalLength -= 3600 * hours
|
||||||
|
minutes = int(totalLength // 60)
|
||||||
|
totalLength -= 60 * minutes
|
||||||
|
seconds = int(totalLength)
|
||||||
|
if hours == 0:
|
||||||
|
return f"{minutes}:{seconds}"
|
||||||
|
else:
|
||||||
|
return f"{hours}:{minutes}:{seconds}"
|
||||||
|
|
||||||
def getLangCode(audioFile):
|
def getLangCode(audioFile):
|
||||||
parts = audioFile.split('/')
|
parts = audioFile.split('/')
|
||||||
return parts[1]
|
return parts[1]
|
||||||
|
|
9
process
9
process
|
@ -22,11 +22,18 @@ if not options.generate:
|
||||||
exit(0)
|
exit(0)
|
||||||
audioFiles = files.findAudio()
|
audioFiles = files.findAudio()
|
||||||
for audioFile in audioFiles:
|
for audioFile in audioFiles:
|
||||||
print(f"Audio: {audioFile}")
|
audioLength = files.getAudioLength(audioFile)
|
||||||
language = files.getLangCode(audioFile)
|
language = files.getLangCode(audioFile)
|
||||||
|
skipped = True
|
||||||
if not files.hasTranscript(audioFile):
|
if not files.hasTranscript(audioFile):
|
||||||
|
skipped = False
|
||||||
|
print(f"Transcribing audio: {audioFile} ({audioLength})", flush=True)
|
||||||
files.generateFromAudio(audioFile, 'transcribe')
|
files.generateFromAudio(audioFile, 'transcribe')
|
||||||
if language in config['translate'] and not files.hasTranslation(audioFile):
|
if language in config['translate'] and not files.hasTranslation(audioFile):
|
||||||
|
skipped = False
|
||||||
|
print(f"Translating audio: {audioFile} ({audioLength})", flush=True)
|
||||||
files.generateFromAudio(audioFile, 'translate')
|
files.generateFromAudio(audioFile, 'translate')
|
||||||
|
if skipped and options.verbose:
|
||||||
|
print(f"Skipped audio: {audioFile} ({audioLength})")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue