From b6af19377a5df9c5d5f19f2caec6b65f2a8a3e26 Mon Sep 17 00:00:00 2001 From: lionel <.> Date: Thu, 15 May 2025 12:22:00 +0200 Subject: [PATCH] Ajout de l'option service avec systemd-run --- HandBrake_recursive/HandBrake_recursive.py | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/HandBrake_recursive/HandBrake_recursive.py b/HandBrake_recursive/HandBrake_recursive.py index 0c245e8..bf0f8b1 100644 --- a/HandBrake_recursive/HandBrake_recursive.py +++ b/HandBrake_recursive/HandBrake_recursive.py @@ -68,6 +68,26 @@ def lever_inhibit_arret(inhibiteurs): session_manager = session_bus.get("org.gnome.SessionManager", "/org/gnome/SessionManager") session_manager.Uninhibit(inhibiteur) +def relancer_avec_systemd(): + # Constitue la commande avec systemd-run + cmd = [ + "systemd-run", + "--unit=handbrake_recursive", + "--user", + "--description=Encodage vidéo", + f'--working-directory={os.getcwd()}', + "--", + sys.argv[0] + ] + + # Ajoute les arguments sauf --service et --pager (journalctl utilise déjà un pager) + cmd += [arg for arg in sys.argv[1:] if arg not in ("--service", "--pager")] + + print(f"Lancement du script via systemd:\n{' '.join(cmd)}") + print(f"Pour suivre l'exécution du programme:\n journalctl --user -f -u handbrake_recursive") + + # Remplace le processus courant + os.execvp(cmd[0], cmd) # Définir la largeur de chaque colonne à environ 3 cm (approximativement 10.5 unités) def set_column_width(ws, column_range, width=15): @@ -410,8 +430,13 @@ def main(): parser.add_argument('-o', '--output_directory', required=True, help='Dossier de sortie pour les fichiers traités') parser.add_argument('--dry-run', action='store_true', help='Simule les actions sans modifier les fichiers') parser.add_argument('--pager', action='store_true', help='Utilise less pour paginer le résumé final') + parser.add_argument("--service", action="store_true", help="Lancer via systemd-run") args = parser.parse_args() + if args.service: + if "INVOCATION_ID" not in os.environ: + relancer_avec_systemd() + # Récupération des arguments preset_file = args.preset input_directory = args.input_directory