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