|
@@ -1,9 +1,11 @@
|
|
import os
|
|
import os
|
|
import warnings
|
|
import warnings
|
|
import tempfile
|
|
import tempfile
|
|
|
|
+import time
|
|
from utils.files import filename, write_srt
|
|
from utils.files import filename, write_srt
|
|
-from utils.ffmpeg import get_audio, overlay_subtitles, add_subs_new
|
|
|
|
-from utils.bazarr import get_wanted_episodes, get_episode_details
|
|
|
|
|
|
+from utils.ffmpeg import get_audio, add_subs_new
|
|
|
|
+from utils.bazarr import get_wanted_episodes, get_episode_details, sync_series
|
|
|
|
+from utils.sonarr import update_show_in_soarr
|
|
from utils.whisper import WhisperAI
|
|
from utils.whisper import WhisperAI
|
|
|
|
|
|
|
|
|
|
@@ -14,6 +16,7 @@ def process(args: dict):
|
|
srt_only: bool = args.pop("srt_only")
|
|
srt_only: bool = args.pop("srt_only")
|
|
language: str = args.pop("language")
|
|
language: str = args.pop("language")
|
|
sample_interval: str = args.pop("sample_interval")
|
|
sample_interval: str = args.pop("sample_interval")
|
|
|
|
+ audio_channel: str = args.pop('audio_channel')
|
|
|
|
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
|
|
|
|
@@ -24,27 +27,29 @@ def process(args: dict):
|
|
# if translate task used and language argument is set, then use it
|
|
# if translate task used and language argument is set, then use it
|
|
elif language != "auto":
|
|
elif language != "auto":
|
|
args["language"] = language
|
|
args["language"] = language
|
|
-
|
|
|
|
- a = get_wanted_episodes()
|
|
|
|
- print(f"Found {a['total']} episodes needing subtitles.")
|
|
|
|
- for episode in a['data']:
|
|
|
|
- episode_data = get_episode_details(episode['sonarrEpisodeId'])
|
|
|
|
- print(episode_data)
|
|
|
|
- audios = get_audio(args.pop("video"), args.pop(
|
|
|
|
- 'audio_channel'), sample_interval)
|
|
|
|
|
|
|
|
model_args = {}
|
|
model_args = {}
|
|
model_args["model_size_or_path"] = model_name
|
|
model_args["model_size_or_path"] = model_name
|
|
model_args["device"] = args.pop("device")
|
|
model_args["device"] = args.pop("device")
|
|
model_args["compute_type"] = args.pop("compute_type")
|
|
model_args["compute_type"] = args.pop("compute_type")
|
|
|
|
+
|
|
|
|
+ list_of_episodes_needing_subtitles = get_wanted_episodes()
|
|
|
|
+ print(f"Found {list_of_episodes_needing_subtitles['total']} episodes needing subtitles.")
|
|
|
|
+ for episode in list_of_episodes_needing_subtitles['data']:
|
|
|
|
+ print(f"Processing {episode['seriesTitle']} - {episode['episode_number']}")
|
|
|
|
+ episode_data = get_episode_details(episode['sonarrEpisodeId'])
|
|
|
|
+ audios = get_audio([episode_data['path']], audio_channel, sample_interval)
|
|
|
|
+ srt_output_dir = output_dir if output_srt or srt_only else tempfile.gettempdir()
|
|
|
|
+ subtitles = get_subtitles(audios, srt_output_dir, model_args, args)
|
|
|
|
|
|
- srt_output_dir = output_dir if output_srt or srt_only else tempfile.gettempdir()
|
|
|
|
- subtitles = get_subtitles(audios, srt_output_dir, model_args, args)
|
|
|
|
-
|
|
|
|
- if srt_only:
|
|
|
|
- return
|
|
|
|
|
|
+ if srt_only:
|
|
|
|
+ return
|
|
|
|
|
|
- add_subs_new(subtitles, output_dir, sample_interval)
|
|
|
|
|
|
+ add_subs_new(subtitles)
|
|
|
|
+ update_show_in_soarr(episode['sonarrSeriesId'])
|
|
|
|
+ time.sleep(5)
|
|
|
|
+ sync_series()
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
def get_subtitles(audio_paths: list, output_dir: str,
|
|
def get_subtitles(audio_paths: list, output_dir: str,
|