podkastomat/process

44 lines
1.4 KiB
Plaintext
Raw Permalink Normal View History

2025-01-21 12:29:56 +00:00
#!/usr/bin/python3
import lib.args as args
import lib.config as cfg
import lib.files as files
import lib.rss as rss
config = cfg.load()
options = args.read()
for podcast in config['podcasts']:
if options.filter and not options.filter in podcast['name'].lower():
continue
elif not options.filter and podcast['auto'] == False:
continue
2025-01-21 12:29:56 +00:00
files.addRef(podcast)
rss.fetch(podcast, options.loadFeed)
if options.downloadEpisodes:
eps = rss.getEpisodes(podcast, options.episodes, options.numEpisodes)
for ep in eps:
files.saveEpisode(podcast, ep, options)
2025-01-21 12:29:56 +00:00
if not options.generate:
exit(0)
audioFiles = files.findAudio()
for audioFile in audioFiles:
audioLength = files.getAudioLength(audioFile)
2025-01-21 12:29:56 +00:00
language = files.getLangCode(audioFile)
skipped = True
2025-01-21 12:29:56 +00:00
if not files.hasTranscript(audioFile):
skipped = False
print(f"Transcribing audio: {audioFile} ({audioLength})", flush=True)
files.generateFromAudio(audioFile, 'transcribe', options)
if (language in config['translate'] and not files.hasTranslation(audioFile)
and language != 'eo' and options.tts != 'vosk'
):
skipped = False
print(f"Translating audio: {audioFile} ({audioLength})", flush=True)
files.generateFromAudio(audioFile, 'translate', options)
if skipped and options.verbose:
print(f"Skipped audio: {audioFile} ({audioLength})")
2025-01-21 12:29:56 +00:00