From d4372d05957d25796879399111b6f5bc53f98751 Mon Sep 17 00:00:00 2001 From: j Date: Thu, 27 Nov 2025 18:09:06 +0100 Subject: [PATCH] p_for_power --- align_subtitles.py | 4 +- config.jsonc | 11 +- management/commands/generate_clips.py | 4 +- management/commands/infinity.py | 4 +- management/commands/render.py | 4 +- management/commands/update_subtitles.py | 4 +- player/play-back.desktop | 2 +- player/play-front.desktop | 2 +- player/player-back.service | 2 +- player/player-front.service | 2 +- player/player.py | 10 +- player/saxophone-loop.desktop | 8 -- player/saxophone.service | 11 -- render.py | 1 + sax.py | 109 ------------------ ....t_for_time.js => infoView.p_for_power.js} | 0 16 files changed, 24 insertions(+), 154 deletions(-) delete mode 100644 player/saxophone-loop.desktop delete mode 100644 player/saxophone.service delete mode 100644 sax.py rename static/js/{infoView.t_for_time.js => infoView.p_for_power.js} (100%) diff --git a/align_subtitles.py b/align_subtitles.py index 491ec75..f12816a 100644 --- a/align_subtitles.py +++ b/align_subtitles.py @@ -21,7 +21,7 @@ https://textb.org/r/t_for_time_subtitles_5_ashley/ data = requests.get(url).text parts = data.strip().split('##') print(url) - prefix = '/srv/t_for_time/vo/' + url.split('/')[-2].split('subtitles_')[-1] + prefix = '/srv/p_for_power/vo/' + url.split('/')[-2].split('subtitles_')[-1] for part in parts: part = part.strip().split('\n') if part: @@ -86,7 +86,7 @@ def update_subtitles(): wav = i.files.filter(selected=True)[0].data.path id = i.get('title').split('_')[0] batch = i.get('batch')[0][5:].lower().replace('-', '_').replace(' ', '') - txt = '/srv/t_for_time/vo/%s_%s.txt' % (batch, id) + txt = '/srv/p_for_power/vo/%s_%s.txt' % (batch, id) if os.path.exists(txt): print(i, wav, txt) subtitles = gentle2subtitles(align_text(txt, wav)) diff --git a/config.jsonc b/config.jsonc index 79a4e2a..d295fbc 100644 --- a/config.jsonc +++ b/config.jsonc @@ -1015,7 +1015,7 @@ examples (config.SITENAME.jsonc) that are part of this pan.do/ra distribution. the system (from). */ "site": { - "description": "T for Time - pan.do/ra", + "description": "P for Power - pan.do/ra", "email": { // E-mail address in contact form (to) "contact": "system@time.0x2620.org", @@ -1025,12 +1025,12 @@ examples (config.SITENAME.jsonc) that are part of this pan.do/ra distribution. "system": "system@time.0x2620.org" }, "https": true, - "id": "t_for_time", - "name": "T for Time", + "id": "p_for_power", + "name": "P for Power", // Set to true to allow search engines to index the site "public": false, "sendReferrer": true, - "url": "time.0x2620.org" + "url": "power.0x2620.org" }, /* "sitePages" defines the sections of the main site dialog. If "news" is @@ -1052,9 +1052,6 @@ examples (config.SITENAME.jsonc) that are part of this pan.do/ra distribution. cross-instance references. */ "sites": [ - {"name": "0xDB", "url": "0xdb.org", "https": true}, - {"name": "Pad.ma", "url": "pad.ma", "https": true}, - {"name": "Indiancine.ma", "url": "indiancine.ma", "https": true} ], /* "textRightsLevels" defines a list of rights levels for texts. diff --git a/management/commands/generate_clips.py b/management/commands/generate_clips.py index abfd55d..c0a16df 100644 --- a/management/commands/generate_clips.py +++ b/management/commands/generate_clips.py @@ -1,13 +1,13 @@ from django.core.management.base import BaseCommand -from ...render import generate_clips +from ...render import generate_clips, default_prefix class Command(BaseCommand): help = 'generate symlinks to clips and clips.json' def add_arguments(self, parser): - parser.add_argument('--prefix', action='store', dest='prefix', default="/srv/t_for_time", help='prefix to build clips in') + parser.add_argument('--prefix', action='store', dest='prefix', default=default_prefix, help='prefix to build clips in') def handle(self, **options): return generate_clips(options) diff --git a/management/commands/infinity.py b/management/commands/infinity.py index 0ca70fa..64ea7af 100644 --- a/management/commands/infinity.py +++ b/management/commands/infinity.py @@ -5,14 +5,14 @@ import subprocess from django.core.management.base import BaseCommand from django.conf import settings -from ...render import render_infinity +from ...render import render_infinity, default_prefix class Command(BaseCommand): help = 'render infinity' def add_arguments(self, parser): - parser.add_argument('--prefix', action='store', dest='prefix', default="/srv/t_for_time", help='prefix to build clips in') + parser.add_argument('--prefix', action='store', dest='prefix', default=default_prefix, help='prefix to build clips in') parser.add_argument('--config', action='store', dest='config', default=None, help='config') parser.add_argument('--duration', action='store', dest='duration', default="3600", help='target duration of all fragments in seconds') parser.add_argument('--single-file', action='store_true', dest='single_file', default=False, help='render to single video') diff --git a/management/commands/render.py b/management/commands/render.py index 91e8fa5..b4a242c 100644 --- a/management/commands/render.py +++ b/management/commands/render.py @@ -5,14 +5,14 @@ import subprocess from django.core.management.base import BaseCommand from django.conf import settings -from ...render import render_all +from ...render import render_all, default_prefix class Command(BaseCommand): help = 'genrate kdenlive porject and render' def add_arguments(self, parser): - parser.add_argument('--prefix', action='store', dest='prefix', default="/srv/t_for_time", help='prefix to build clips in') + parser.add_argument('--prefix', action='store', dest='prefix', default=default_prefix, help='prefix to build clips in') parser.add_argument('--duration', action='store', dest='duration', default="3600", help='target duration of all fragments in seconds') parser.add_argument('--offset', action='store', dest='offset', default="1024", help='inital offset in pi') parser.add_argument('--no-video', action='store_true', dest='no_video', default=False, help='don\'t render video') diff --git a/management/commands/update_subtitles.py b/management/commands/update_subtitles.py index 1585ff5..e103375 100644 --- a/management/commands/update_subtitles.py +++ b/management/commands/update_subtitles.py @@ -5,14 +5,14 @@ import subprocess from django.core.management.base import BaseCommand from django.conf import settings -from ...render import update_subtitles +from ...render import update_subtitles, default_prefix class Command(BaseCommand): help = 'genrate kdenlive porject and render' def add_arguments(self, parser): - parser.add_argument('--prefix', action='store', dest='prefix', default="/srv/t_for_time", help='prefix to build clips in') + parser.add_argument('--prefix', action='store', dest='prefix', default=default_prefix, help='prefix to build clips in') parser.add_argument('--offset', action='store', dest='offset', default="1024", help='inital offset in pi') def handle(self, **options): diff --git a/player/play-back.desktop b/player/play-back.desktop index e6d630f..8f10cd9 100644 --- a/player/play-back.desktop +++ b/player/play-back.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application -Exec=/srv/pandora/t_for_time/player/player.py --mode peer --playlist /srv/t_for_time/render/back.m3u +Exec=/srv/pandora/p_for_power/player/player.py --mode peer --playlist /srv/p_for_power/render/back.m3u Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true diff --git a/player/play-front.desktop b/player/play-front.desktop index 6f95628..5d2337c 100644 --- a/player/play-front.desktop +++ b/player/play-front.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Application -Exec=/srv/pandora/t_for_time/player/player.py --mode main --playlist /srv/t_for_time/render/front.m3u +Exec=/srv/pandora/p_for_power/player/player.py --mode main --playlist /srv/p_for_power/render/front.m3u Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true diff --git a/player/player-back.service b/player/player-back.service index b0a2f14..8a19a62 100644 --- a/player/player-back.service +++ b/player/player-back.service @@ -7,7 +7,7 @@ Wants=network-online.target Type=simple Restart=on-failure KillSignal=SIGINT -ExecStart=/srv/pandora/t_for_time/player/player.py --mode peer --playlist /srv/t_for_time/render/back.m3u --config /srv/t_for_time/render/back.json +ExecStart=/srv/pandora/p_for_power/player/player.py --mode peer --playlist /srv/p_for_power/render/back.m3u --config /srv/p_for_power/render/back.json [Install] WantedBy=graphical-session.target diff --git a/player/player-front.service b/player/player-front.service index d514da8..17f998b 100644 --- a/player/player-front.service +++ b/player/player-front.service @@ -6,7 +6,7 @@ After=gnome-session.target network-online.target Type=simple Restart=on-failure KillSignal=SIGINT -ExecStart=/srv/pandora/t_for_time/player/player.py --mode main --playlist /srv/t_for_time/render/front.m3u --config /srv/t_for_time/render/front.json +ExecStart=/srv/pandora/p_for_power/player/player.py --mode main --playlist /srv/p_for_power/render/front.m3u --config /srv/p_for_power/render/front.json [Install] WantedBy=graphical-session.target diff --git a/player/player.py b/player/player.py index 28b41e0..fa3d548 100755 --- a/player/player.py +++ b/player/player.py @@ -13,7 +13,7 @@ import mpv import logging -logger = logging.getLogger('t_for_time') +logger = logging.getLogger('p_for_power') SYNC_TOLERANCE = 0.05 SYNC_GRACE_TIME = 5 @@ -74,7 +74,7 @@ class Sync(Thread): input_vo_keyboard=True, ) self.sax.loop_file = True - self.sax.play("/srv/t_for_time/render/Saxophone-5.1.mp4") + self.sax.play("/srv/p_for_power/render/Saxophone-5.1.mp4") else: self.sax = None @@ -408,11 +408,11 @@ class Sync(Thread): def main(): - prefix = os.path.expanduser('~/Videos/t_for_time') + prefix = os.path.expanduser('~/Videos/p_for_power') - parser = argparse.ArgumentParser(description='t_for_time sync player') + parser = argparse.ArgumentParser(description='p_for_power sync player') parser.add_argument('--mode', help='peer or main', default="peer") - parser.add_argument('--playlist', default='/srv/t_for_time/render/128/front.m3u', help="m3u") + parser.add_argument('--playlist', default='/srv/p_for_power/render/128/front.m3u', help="m3u") parser.add_argument('--prefix', help='video location', default=prefix) parser.add_argument('--window', action='store_true', help='run in window', default=False) parser.add_argument('--debug', action='store_true', help='debug', default=False) diff --git a/player/saxophone-loop.desktop b/player/saxophone-loop.desktop deleted file mode 100644 index 7b31def..0000000 --- a/player/saxophone-loop.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Type=Application -Exec=/usr/bin/mpv --quiet --loop /srv/t_for_time/render/Saxophone-5.1.mp4 -Hidden=false -NoDisplay=false -X-GNOME-Autostart-enabled=true -Name=loop -Comment= diff --git a/player/saxophone.service b/player/saxophone.service deleted file mode 100644 index 2b9d2f0..0000000 --- a/player/saxophone.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=saxophone loop - -[Service] -Type=simple -Restart=always -ExecStart=/usr/bin/mpv --quiet --loop /srv/t_for_time/render/Saxophone-5.1.mp4 -KillSignal=SIGINT - -[Install] -WantedBy=graphical-session.target diff --git a/render.py b/render.py index 8df5cf6..cbf8828 100644 --- a/render.py +++ b/render.py @@ -16,6 +16,7 @@ import lxml.etree from .pi import random from .render_kdenlive import KDEnliveProject, _CACHE, melt_xml, get_melt +default_prefix = "/srv/p_for_power" def random_int(seq, length): n = n_ = length - 1 diff --git a/sax.py b/sax.py deleted file mode 100644 index c1e916b..0000000 --- a/sax.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/python3 -import os -from render_kdenlive import KDEnliveProject, _CACHE -import subprocess - -def generate_sax_mix(root): - os.chdir(root) - - -root = os.path.abspath(".") - -long_wav = "Soon_Kim_Long_Reverb_Only2.wav" -nois_wav = "Soon_Kim_Noise.wav" -reverb_wav = "Soon_Kim_Short_Reverb_Mix2.wav" -''' -i = item.models.Item.objects.get(data__title='Soon_Kim_Long_Reverb_Only2') -i.files.all()[0].data.path -'/srv/pandora/data/media/6b/44/16/3f2905e886/data.wav' - -i = item.models.Item.objects.get(data__title='Soon_Kim_Short_Reverb_Mix2') -i.files.all()[0].data.path -'/srv/pandora/data/media/ee/e0/04/d4ab42c3de/data.wav' - -i = item.models.Item.objects.get(data__title='Soon_Kim_Noise') -i.files.all()[0].data.path -'/srv/pandora/data/media/84/88/87/d2fb2e2dc2/data.wav' -''' - - -reverb = { - "src": reverb_wav, - "duration": 3600.0, - "filter": { - "volume": "3.5" - }, -} - -long = { - "src": long_wav, - "duration": 3600.0, - "filter": { - "volume": "-1" - }, -} -noise = { - "src": nois_wav, - "duration": 3600.0, - "filter": { - "volume": "7.75" - }, -} - -project = KDEnliveProject(root) -project.append_clip('A1', long) -project.append_clip('A2', noise) -path = os.path.join(root, "sax-mix.kdenlive") -with open(path, 'w') as fd: - fd.write(project.to_xml()) - -project = KDEnliveProject(root) -project.append_clip('A1', reverb) -path = os.path.join(root, "sax-reverb-mix.kdenlive") -with open(path, 'w') as fd: - fd.write(project.to_xml()) - -cmds = [] -cmds.append([ - "melt", "sax-mix.kdenlive", '-quiet', '-consumer', 'avformat:sax-mix.wav' -]) -cmds.append([ - "melt", "sax-reverb-mix.kdenlive", '-quiet', '-consumer', 'avformat:sax-reverb-mix.wav' -]) -cmds.append([ - "ffmpeg", "-y", - "-nostats", "-loglevel", "error", - "-f", "lavfi", "-i", "anullsrc=r=48000:cl=mono", "-t", "3600", "silence.wav" -]) - -for src, out1, out2 in ( - ('sax-reverb-mix.wav', "fl.wav", "fr.wav"), - ("sax-mix.wav", "bl.wav", "br.wav"), -): - cmds.append([ - "ffmpeg", "-y", - "-nostats", "-loglevel", "error", - "-i", src, - "-filter_complex", - "[0:0]pan=1|c0=c0[left]; [0:0]pan=1|c0=c1[right]", - "-map", "[left]", out1, - "-map", "[right]", out2, - ]) - -cmds.append([ - "ffmpeg", "-y", - "-nostats", "-loglevel", "error", - "-i", "fl.wav", - "-i", "fr.wav", - "-i", "silence.wav", - "-i", "silence.wav", - "-i", "bl.wav", - "-i", "br.wav", - "-filter_complex", "[0:a][1:a][2:a][3:a][4:a][5:a]amerge=inputs=6[a]", - "-map", "[a]", - "-ar", "48000", - "-c:a", "aac", "Saxophone-5.1.mp4" -]) -for cmd in cmds: - print(" ".join([str(x) for x in cmd])) - subprocess.call(cmd) diff --git a/static/js/infoView.t_for_time.js b/static/js/infoView.p_for_power.js similarity index 100% rename from static/js/infoView.t_for_time.js rename to static/js/infoView.p_for_power.js