Remove karaoke ass generation, now in negromate.songs 1.2
This commit is contained in:
		
							parent
							
								
									22aad839e3
								
							
						
					
					
						commit
						cf7fff35ae
					
				| 
						 | 
					@ -1,7 +1,5 @@
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
from shutil import copy
 | 
					from shutil import copy
 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
from pathlib import Path
 | 
					 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from jinja2 import Environment, FileSystemLoader, select_autoescape
 | 
					from jinja2 import Environment, FileSystemLoader, select_autoescape
 | 
				
			||||||
| 
						 | 
					@ -10,8 +8,6 @@ import srt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from negromate.songs.loader import load_songs
 | 
					from negromate.songs.loader import load_songs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .karaoke_templates import update_karaoke_songs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SongPage:
 | 
					class SongPage:
 | 
				
			||||||
    def __init__(self, song):
 | 
					    def __init__(self, song):
 | 
				
			||||||
| 
						 | 
					@ -114,9 +110,6 @@ class Builder:
 | 
				
			||||||
        todo_context.update(global_context)
 | 
					        todo_context.update(global_context)
 | 
				
			||||||
        self.render('todo.html', todo, todo_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'
 | 
					        static = self.root_folder / 'static'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not static.exists():
 | 
					        if not static.exists():
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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)
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
webvtt-py
 | 
					webvtt-py
 | 
				
			||||||
Jinja2
 | 
					Jinja2
 | 
				
			||||||
ass==0.4.4
 | 
					ass==0.4.4
 | 
				
			||||||
negromate.songs @ git+https://git.negromate.rocks/NegroMate/songs.git@1.0
 | 
					negromate.songs==1.2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue