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:
Benno Lang 2025-01-22 20:51:04 +10:30
parent 4587950623
commit 044e5bb921
3 changed files with 25 additions and 1 deletions

View file

@ -4,6 +4,7 @@ import sys
isNumber = re.compile('^[0-9]+$')
class Options:
verbose = False
loadFeed = True
downloadEpisodes = True
generate = True
@ -56,6 +57,8 @@ def read():
opts.downloadEpisodes = False
elif arg == "--no-gen" or arg == "--skip-gen":
opts.generate = False
elif arg == "--verbose":
opts.verbose = True
elif arg == 'new':
opts.episodes = 'new'
elif arg == 'old':

View file

@ -1,6 +1,7 @@
import glob
import re
import lib.fetcher as fetcher
import mutagen
import os
import os.path
@ -76,6 +77,19 @@ def saveEpisode(podcast, episode):
def findAudio():
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):
parts = audioFile.split('/')
return parts[1]

View file

@ -22,11 +22,18 @@ if not options.generate:
exit(0)
audioFiles = files.findAudio()
for audioFile in audioFiles:
print(f"Audio: {audioFile}")
audioLength = files.getAudioLength(audioFile)
language = files.getLangCode(audioFile)
skipped = True
if not files.hasTranscript(audioFile):
skipped = False
print(f"Transcribing audio: {audioFile} ({audioLength})", flush=True)
files.generateFromAudio(audioFile, 'transcribe')
if language in config['translate'] and not files.hasTranslation(audioFile):
skipped = False
print(f"Translating audio: {audioFile} ({audioLength})", flush=True)
files.generateFromAudio(audioFile, 'translate')
if skipped and options.verbose:
print(f"Skipped audio: {audioFile} ({audioLength})")