diff --git a/negromate/web/builder.py b/negromate/web/builder.py index 6cfec32..71ff1b5 100644 --- a/negromate/web/builder.py +++ b/negromate/web/builder.py @@ -1,7 +1,5 @@ import os from shutil import copy -import sys -from pathlib import Path import subprocess from jinja2 import Environment, FileSystemLoader, select_autoescape @@ -10,8 +8,6 @@ import srt from negromate.songs.loader import load_songs -from .karaoke_templates import update_karaoke_songs - class SongPage: def __init__(self, song): @@ -114,9 +110,6 @@ class Builder: todo_context.update(global_context) self.render('todo.html', todo, todo_context) - template_file = self.template_folder / 'karaoke.ass' - update_karaoke_songs(songs, template_file) - static = self.root_folder / 'static' if not static.exists(): diff --git a/negromate/web/karaoke_templates.py b/negromate/web/karaoke_templates.py deleted file mode 100644 index f64fb6f..0000000 --- a/negromate/web/karaoke_templates.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import subprocess -import time -from contextlib import contextmanager - -import ass - -from negromate.songs.utils import needs_change - - -@contextmanager -def Xephyr_env(display=":2", *args, **kwargs): - env = os.environ.copy() - xephyr = subprocess.Popen(["Xephyr", display]) - env['DISPLAY'] = display - try: - yield env - finally: - xephyr.kill() - -def set_template(template_subtitles, orig_file, target_file=None): - if target_file is None: - target_file = orig_file - - with open(orig_file, 'r') as orig: - subtitles = ass.parse(orig) - - new_events = [] - for dialogue in template_subtitles.events: - new_events.append(dialogue) - - for dialogue in subtitles.events: - if dialogue.effect.startswith('code'): - continue - if dialogue.effect.startswith('template'): - continue - new_events.append(dialogue) - - subtitles.events = new_events - - with open(target_file, 'w', encoding='utf-8-sig') as target: - subtitles.dump_file(target) - - -def run(command, env, wait=None): - program = subprocess.Popen( - command, - env=env, - ) - if wait is not None: - time.sleep(wait) - - -def apply_template(subtitles, env): - run(["aegisub-3.2", subtitles], env=env, wait=2) - - # Si pide confirmación para cargar video ignorar el popup - run(["xdotool", "key", "Escape"], env=env, wait=0.1) - - # abrir el menú de automatización, bajar dos y darle a aplicar template - run(["xdotool", "key", "alt+u"], env=env, wait=0.1) - run(["xdotool", "key", "Down"], env=env, wait=0.1) - run(["xdotool", "key", "Down"], env=env, wait=0.1) - run(["xdotool", "key", "Return"], env=env, wait=2) - - # guardar - run(["xdotool", "key", "ctrl+s"], env=env) - - # cerrar programa - run(["xdotool", "key", "ctrl+q"], env=env) - - -def update_karaoke_songs(songs, template_file): - with open(template_file, 'r') as template: - template_subtitles = ass.parse(template) - - with Xephyr_env() as env: - for song in songs: - if song.metadata.get('karaoke'): - target = song.path / "{}.karaoke.ass".format(song.path.name) - if needs_change(target, (song.ass, template_file)): - set_template( - template_subtitles=template_subtitles, - orig_file=str(song.ass), - target_file=str(target) - ) - time.sleep(2) - apply_template(str(target), env) - time.sleep(2) diff --git a/requirements.txt b/requirements.txt index 80cbbfa..f107765 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ webvtt-py Jinja2 ass==0.4.4 -negromate.songs @ git+https://git.negromate.rocks/NegroMate/songs.git@1.0 +negromate.songs==1.2