From 5567aa55606965749f1665ae8bcd4579e8a7414d Mon Sep 17 00:00:00 2001 From: j Date: Sat, 24 Jan 2026 18:47:35 +0100 Subject: [PATCH] prepare player --- generate.py | 4 +-- player/player.py | 78 ++++++++++++++++++++++++------------------------ 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/generate.py b/generate.py index 624dd79..a88a764 100644 --- a/generate.py +++ b/generate.py @@ -1135,7 +1135,7 @@ def add_tag(item, tag): item.data['tags'].append(tag) item.save() -def process_motion_firstframe(): +def process_motion_firstframe(character="P1", keep=False): l = itemlist.models.List.objects.get(name='Motion-Firstframe') for i in l.items.all(): ai = Item.objects.filter(data__type__icontains='ai').filter(data__title=i.data['title']) @@ -1144,7 +1144,7 @@ def process_motion_firstframe(): continue print(i) try: - reshoot_item_segments(i, 'P1', keep=True) + replace_character_motion_control(i, character, keep=keep) except: add_tag(i, 'ai-failed') print('>> failed', i) diff --git a/player/player.py b/player/player.py index fa3d548..d36bd14 100755 --- a/player/player.py +++ b/player/player.py @@ -59,6 +59,7 @@ class Sync(Thread): _pos = None _tick = 0 need_to_sync = False + loops = [] def __init__(self, *args, **kwargs): self.is_main = kwargs.get('mode', 'main') == 'main' @@ -68,36 +69,33 @@ class Sync(Thread): if self.is_main: self.socket_enable_broadcast() - if kwargs.get("sax"): - self.sax = mpv.MPV( + if kwargs.get("music"): + music = mpv.MPV( log_handler=mpv_log, input_default_bindings=True, input_vo_keyboard=True, ) - self.sax.loop_file = True - self.sax.play("/srv/p_for_power/render/Saxophone-5.1.mp4") - else: - self.sax = None + music.loop_file = True + music.play("/srv/p_for_power/render/music-5.1.mp4") + self.loops.append(music) - if mpv.MPV_VERSION >= (2, 2): - self.mpv = mpv.MPV( + if kwargs.get("forest"): + forest = mpv.MPV( log_handler=mpv_log, input_default_bindings=True, input_vo_keyboard=True, - sub_font_size=CONFIG["font_size"], sub_font=CONFIG["font"], - sub_border_size=CONFIG["font_border"], - sub_border_color=CONFIG["sub_border_color"], - sub_margin_y=CONFIG["sub_margin"], - sub_ass_line_spacing=CONFIG["sub_spacing"], - ) - else: - self.mpv = mpv.MPV( - log_handler=mpv_log, input_default_bindings=True, - input_vo_keyboard=True, - sub_text_font_size=CONFIG["font_size"], sub_text_font=CONFIG["font"], - sub_border_size=CONFIG["font_border"], - sub_border_color=CONFIG["sub_border_color"], - sub_margin_y=CONFIG["sub_margin"], - sub_ass_line_spacing=CONFIG["sub_spacing"], ) + forest.loop_file = True + forest.play("/srv/p_for_power/render/forest-5.1.mp4") + self.loops.append(forest) + + self.mpv = mpv.MPV( + log_handler=mpv_log, input_default_bindings=True, + input_vo_keyboard=True, + sub_font_size=CONFIG["font_size"], sub_font=CONFIG["font"], + sub_border_size=CONFIG["font_border"], + sub_border_color=CONFIG["sub_border_color"], + sub_margin_y=CONFIG["sub_margin"], + sub_ass_line_spacing=CONFIG["sub_spacing"], + ) if CONFIG.get("vf"): self.mpv.vf = CONFIG["vf"] self.mpv.observe_property('time-pos', self.time_pos_cb) @@ -124,10 +122,10 @@ class Sync(Thread): fmt = '%Y-%m-%d %H' now = datetime.now() offset = (now - datetime.strptime(now.strftime(fmt), fmt)).total_seconds() - if self.sax: - self.sax.wait_until_playing() - self.sax.seek(offset, 'absolute', 'exact') - self.sax.pause = True + for loop in self.loops: + loop.wait_until_playing() + loop.seek(offset, 'absolute', 'exact') + loop.pause = True position = 0 for idx, item in enumerate(self.mpv.playlist): duration = ox.avinfo(item['filename'])['duration'] @@ -141,8 +139,8 @@ class Sync(Thread): break else: position += duration - if self.sax: - self.sax.pause = False + for loop in self.loops: + loop.pause = False self.ready = True Thread.__init__(self) @@ -185,8 +183,8 @@ class Sync(Thread): return self.is_paused = True self.mpv.pause = True - if self.sax: - self.sax.pause = True + for loop in self.loops: + loop.pause = True self.send_playback_state() def p_binding(self, *args): @@ -195,8 +193,8 @@ class Sync(Thread): self.is_paused = False self._tick = 0 self.mpv.pause = False - if self.sax: - self.sax.pause = False + for loop in self.loops: + loop.pause = False self.send_playback_state() def stop(self, *args): @@ -408,16 +406,14 @@ class Sync(Thread): def main(): - prefix = os.path.expanduser('~/Videos/p_for_power') - 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/p_for_power/render/128/front.m3u', help="m3u") - parser.add_argument('--prefix', help='video location', default=prefix) + parser.add_argument('--playlist', default='/srv/p_for_power/render/front.m3u', help="m3u") parser.add_argument('--window', action='store_true', help='run in window', default=False) parser.add_argument('--debug', action='store_true', help='debug', default=False) parser.add_argument('--hour', action='store_true', help='hour', default=False) - parser.add_argument('--sax', action='store_true', help='hour', default=False) + parser.add_argument('--no-forest', action='store_false', help='disable background forest loop', default=True) + parser.add_argument('--no-music', action='store_false', help='disable background music loop', default=True) parser.add_argument('--config', help='config', default=None) args = parser.parse_args() @@ -435,7 +431,11 @@ def main(): base = os.path.dirname(os.path.abspath(__file__)) #os.chdir(base) - player = Sync(mode=args.mode, playlist=args.playlist, fullscreen=not args.window, hour=args.hour, sax=args.sax) + player = Sync( + mode=args.mode, playlist=args.playlist, fullscreen=not args.window, hour=args.hour, + music=not args.no_music, + forest=not args.no_forest + ) while player.active: try: player.mpv.wait_for_playback()