Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/10/2023, à 15:31

jlfh0816

[RESOLU] script bash et python pour téléchargement de données ds Calc

Bonjour,

J’ai bidouillé un petit script appelé veracash.sh qui me permet de récupérer en temps réel le cours de l’or (gramme et once) sur le site web éponyme puis de mettre en forme les valeurs téléchargées afin qu’elles soient exploitables dans un tableau Calc lequel actualise lui-même ses propres données chaque minute.

Le téléchargement des valeurs qui m’intéressent (gramme et once) est effectué grâce à l’option - dump de w3m (navigateur web utilisable dans un terminal). Pour lever toute ambiguïté, je précise que j’ai bien entendu préalablement sollicité et obtenu l’accord écrit de la société afin de respecter leur droits d’auteurs.

Afin d’automatiser le processus d’insertion et de mise à jour des valeurs téléchargées, j’ai choisi de faire appel à un second script appelé mon_script.sh (pas très original mais je manque d’idées…) dont la fonction est triple :
- exécuter une première fois le sous-script veracash.sh afin que le tableur Calc dispose d’une première salve de valeurs avant son ouverture;
- ensuite, ouvrir Calc sur le tableau dédié à cette gestion ;
- enfin, relancer en boucle le sous-script veracash.sh toutes les minutes afin que Calc dispose de valeurs en temps réel.

Lorsque l’utilisateur ferme Calc (en privilégiant l’option « sauvegarder les données »), cette action de fermeture entraîne l’arrêt automatique du script principal mon_script.sh

Et, dans un dernier temps, wmctrl ferme la fenêtre du terminal actif.

Je me permets de faire appel à vous au sujet du script principal mon_script.sh car, même s’il fonctionne tant bien que mal, plusieurs choses dysfonctionnent :
- l’arrêt automatique de mon_script.sh ne s’effectue qu’après un laps de temps de 30 à 60 secondes. Je ne comprends pas pourquoi la fermeture n’est pas instantanée. Peut-être l’attente d’achèvement d’une boucle de 60 secondes du sous-script veracash.sh ?
- ce script principal ne fonctionne pas du tout dans un lanceur, même si je choisis de le faire exécuter dans un terminal. Je précise que j’utilise des chemins absolus dans la commande du lanceur.
Dans cette configuration « lanceur », Calc s’ouvre correctement mais jamais le sous-script veracash.sh (ni sa boucle) : la syntaxe de son appel n’est peut-être pas correcte ?

Merci beaucoup par avance de vos remarques et de votre aide !

Voici le script principal mon_script.sh :

#!/bin/bash

# exécuter le sous-script veracash.sh une première fois
$HOME/.scripts/veracash.sh;

#patienter 5 secondes, le temps du téléchargement d'une première salve de données
sleep 5;

#ouvrir (dans une session unique) le tableur Calc sur le tableau veracash.ods
libreoffice --calc $HOME/.scripts/veracash.ods &
calc_pid=$!

#exécuter le script veracash.sh toutes les 60 secondes
while true; do
    $HOME/.scripts/veracash.sh;
    sleep 60;

# Vérifier si le processus Calc est toujours en cours d'exécution
    if ! ps -p $calc_pid > /dev/null; then
        break
    fi
done

#ferme la fenêtre du terminal
wmctrl -c :ACTIVE:

Dernière modification par jlfh0816 (Le 19/12/2023, à 15:03)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#2 Le 25/10/2023, à 17:04

Watael

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

salut,

pour l'arrêt automatique, essaie sleep 60 & wait
et je n'utilise pas de lanceur, je ne saurai te répondre à ce sujet. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 25/10/2023, à 17:36

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Merci de ta réponse Watael.
J'ai donc testé ta proposition en remplaçant simplement (je n'ai rien changé d'autre dans le script) :

 sleep 60

dans la boucle par

 sleep 60 & wait

Je n'observe pas de changement du comportement du script à la fermeture manuelle de Calc : mon_script.sh finit bien par s'arrêter automatiquement mais toujours au bout de 30 à 60 secondes seulement. Et wmctrl finit ensuite le travail en fermant la fenêtre du terminal.
Merci en tout cas de ta réponse !


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#4 Le 25/10/2023, à 17:57

Watael

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

et veracash.sh prend combien de temps a s'exécuter ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 26/10/2023, à 08:43

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Bonjour Watael,
le script veracash.sh s'exécute entièrement en 1 à 2 secondes (enfin, lorsque la connexion internet fonctionne normalement smile ).
Il s'est toujours bien comporté et n'a jamais généré de message d'erreur.
Est-ce que tu souhaites que je le poste si ça peut permettre d'avancer ?

Dernière modification par jlfh0816 (Le 26/10/2023, à 08:47)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#6 Le 26/10/2023, à 09:42

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Le problème de l'exécution par un lanceur est résolu : j'avais fait une erreur dans l'indication des chemins roll .

Donc, il ne reste plus à résoudre que le problème du temps (trop long, 30 à 60 secondes) d'arrêt automatique du script principal après fermeture du tableur Calc.

Dernière modification par jlfh0816 (Le 26/10/2023, à 10:15)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#7 Le 27/10/2023, à 04:34

noje

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Pour une sortie plus rapide, regarde si pas mieux. 

ancien

while true; do
    $HOME/.scripts/veracash.sh;
    sleep 60;

modif

while true; do
    sleep 60;$HOME/.scripts/veracash.sh

Dernière modification par noje (Le 27/10/2023, à 04:35)


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#8 Le 27/10/2023, à 10:01

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Merci noje de ta proposition.
J'ai testé mais ça ne change rien au comportement du script principal mon_script.sh : il nécessite toujours 30 à 60 secondes pour stopper automatiquement après la fermeture manuelle de Calc.

Ceci dit, je l'utilise maintenant par l'intermédiaire d'un lanceur et, à l'intérieur de celui-ci, j'ai décoché la case "exécuter dans un terminal" (je suis sous Xubuntu). Ca me permet de ne plus afficher de fenêtre du terminal sur le bureau et par conséquent je ne me pré-occupe plus trop de savoir si le script principal s'est arrêté ou pas. En réalité, il doit probablement continuer à être actif pendant 30 à 60 secondes mais comme je ne le vois plus dans un terminal, ça ne me tracasse moins. Faut juste que je fasse attention à ne pas relancer mon_script.sh avant 60 secondes pour ne pas avoir deux sessions du script en fonctionnement en même temps.


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#9 Le 27/10/2023, à 10:59

noje

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Le souci est dans monscript très certainement alors.
Mais bon comme c'est un truc top secret, en masquant ce qui doit l'être, tu devrais nous le montrer.


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#10 Le 27/10/2023, à 14:11

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Merci noje de ta réponse.
Mais non, il n'y a rien de secret, ce n'est pas dans mes habitudes smile.

Le script principal mon_script.sh est déjà dans mon post #1

Quant au sous-script veracash.sh, je le partage bien volontiers :

#!/bin/bash
w3m -dump https://www.veracash.com/fr/cours-or > $HOME/.scripts/resultat1.txt;

#les valeurs GoldSpot et GolPremium qui sont téléchargées par ce script relèvent du droit d'auteur de la société VeraCash.

#on sélectionne dans resultat1.txt la partie du texte contenant le cours de l'once "Spot" puis on extrait la valeur
grep -A 2 "Quel est le prix de l'once d'or aujourd'hui ?" $HOME/.scripts/resultat1.txt > $HOME/.scripts/resultat2.txt;
spot_once=$(grep -Eo '[0-9]+(\.[0-9]+)? €' $HOME/.scripts/resultat2.txt | sed 's/ €//');

#on sélectionne dans resultat1.txt la partie du texte contenant le cours de l'once "Premium" puis on extrait la valeur
grep -A 3 "Quel est le prix de l'once d'or aujourd'hui ?" $HOME/.scripts/resultat1.txt | tail -n 1 > $HOME/.scripts/resultat3.txt;
premium_once=$(grep -Eo '[0-9]+(\.[0-9]+)? €' $HOME/.scripts/resultat3.txt | sed 's/ €//');

#on sélectionne dans resultat1.txt la partie du texte contenant le cours du gramme "Spot" puis on extrait la valeur
grep -A 2 "Quel est le prix du gramme d'or aujourd'hui ?" $HOME/.scripts/resultat1.txt | tail -n 1 > $HOME/.scripts/resultat4.txt;
spot_gramme=$(grep -Eo '[0-9]+(\.[0-9]+)? €' $HOME/.scripts/resultat4.txt | sed 's/ €//');

#on sélectionne dans resultat1.txt la partie du texte contenant le cours du gramme "Premium" puis on extrait la valeur
grep -A 3 "Quel est le prix du gramme d'or aujourd'hui ?" $HOME/.scripts/resultat1.txt | tail -n 1 > $HOME/.scripts/resultat5.txt;
premium_gramme=$(grep -Eo '[0-9]+(\.[0-9]+)? €' $HOME/.scripts/resultat5.txt | sed 's/ €//');

#on remplace le point décimal par une virgule et on crée les fichiers xml que Calc sait utiliser
echo "$spot_once" | tr '.' ',' > $HOME/.scripts/spot_once.xml;
echo "$premium_once" | tr '.' ',' > $HOME/.scripts/premium_once.xml;
echo "$spot_gramme" | tr '.' ',' > $HOME/.scripts/spot_gramme.xml;
echo "$premium_gramme" | tr '.' ',' > $HOME/.scripts/premium_gramme.xml

PS: lorsque j'exécute le script principal mon_script.sh par l'intermédiaire d'un lanceur, je supprime sa dernière ligne:

wmctrl -c :ACTIVE:

Dernière modification par jlfh0816 (Le 27/10/2023, à 14:35)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#11 Le 28/10/2023, à 18:26

noje

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Donc non ça ne vient pas de là non plus, je ne vois plus que LibreOffice ou
le lanceur type icône.

Pour en être certain au niveau des scripts, tu peux si tu veux mettre  "set -x"
en début après le shebang.
C'est un mode qui permet d'avoir plus de détails sur ce qui est fait, à condition
d'avoir un retour, ce qui n'est peut-être pas le cas avec le lanceur parfois de
mémoire ou optionnel. (permet parfois de comprendre où ça bloque.)

Un exemple de script avec "set -x" :

#!/usr/bin/bash
set -x

echo "
ceci est un texte 
qui est mis pour exemple"
echo 

ps -U root -u root | head -n2

a="une variable" 
echo "$a"

Le retour les + sont les exécutions à l'exception des lignes après echo étant mis sur plusieurs lignes :

+ echo '
ceci est un texte
qui est mis pour exemple'

ceci est un texte
qui est mis pour exemple
+ echo

+ ps -U root -u root
+ head -n2
PID TTY          TIME CMD
1 ?        00:00:00 systemd
+ a='une variable'
+ echo 'une variable'
une variable 

- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#12 Le 29/10/2023, à 16:34

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Bonjour noje et merci beaucoup pour ta patience.

J’ai testé les deux scripts en leur ajoutant "set -x" et voici les retours affichés sur le terminal :

1°) pour le script principal mon_script.sh

jlfh0816 @ Voyager1804  ~/.scripts
└─ $ ▶ ./mon_script.sh
+ /home/jlfh0816/.scripts/veracash.sh
+ sleep 5
+ calc_pid=424
+ libreoffice --calc /home/jlfh0816/.scripts/veracash.ods
+ true
+ /home/jlfh0816/.scripts/veracash.sh
+ sleep 60
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB
+ ps -p 424
+ break

2°) pour le sous-script veracash.sh

jlfh0816 @ Voyager1804  ~/.scripts
└─ $ ▶ ./veracash.sh
+ w3m -dump https://www.veracash.com/fr/cours-or
+ grep -A 2 'Quel est le prix de l'\''once d'\''or aujourd'\''hui ?' resultat1.txt
++ grep -Eo '[0-9]+(\.[0-9]+)? €' resultat2.txt
++ sed 's/ €//'
+ spot_once=1875.2
+ grep -A 3 'Quel est le prix de l'\''once d'\''or aujourd'\''hui ?' resultat1.txt
+ tail -n 1
++ grep -Eo '[0-9]+(\.[0-9]+)? €' resultat3.txt
++ sed 's/ €//'
+ premium_once=1931.46
+ grep -A 2 'Quel est le prix du gramme d'\''or aujourd'\''hui ?' resultat1.txt
+ tail -n 1
++ grep -Eo '[0-9]+(\.[0-9]+)? €' resultat4.txt
++ sed 's/ €//'
+ spot_gramme=60.29
+ grep -A 3 'Quel est le prix du gramme d'\''or aujourd'\''hui ?' resultat1.txt
+ tail -n 1
++ grep -Eo '[0-9]+(\.[0-9]+)? €' resultat5.txt
++ sed 's/ €//'
+ premium_gramme=62.1
+ echo 1875.2
+ tr . ,
+ echo 1931.46
+ tr . ,
+ echo 60.29
+ tr . ,
+ echo 62.1
+ tr . ,

A priori, il y a donc un message d’erreur de 4 lignes, en rapport avec l'exécution du script principal mon_script.sh :

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB

Ce message semble s’afficher au cours de l’exécution de la boucle de 60 secondes.
Il évoque un problème de librairie png mais je suis circonspect car je n’utilise aucune image au format png (ni d’ailleurs aucune autre d’un format différent).

J’ai fait une recherche rapide sur la toile et, a priori, ça n’est qu’un message d’avertissement ("warning") et pas un message d’erreur ?
Le fait est que ça n’empêche pas le script de s’exécuter.

Dernière modification par jlfh0816 (Le 29/10/2023, à 18:24)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#13 Le 01/11/2023, à 11:06

noje

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Oui les warnings n'empêchent pas le fonctionnement d'un script ou d'une application.
libre office dernier suspect...

Dernière modification par noje (Le 01/11/2023, à 11:07)


- LTS 18.04 & 22.04 - jwm - cwm - zsh

Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)

Hors ligne

#14 Le 02/11/2023, à 15:24

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Merci noje de ta réponse.
Je vais donc chercher sur les forums pour LibreOffice Calc et je reviendrai poster si j'obtiens une explication.
En tout cas, merci beaucoup de t'être penché sur mon problème.


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#15 Le 30/11/2023, à 16:38

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

N’ayant toujours pas réussi à comprendre et donc à corriger ce qui ne va pas dans mon script mon_script.sh, j’ai tenté une autre approche en remplaçant la boucle

while true; do
    $HOME/.scripts/veracash.sh;
    sleep 60;

par une autre chargée de vérifier (chaque seconde) si le nombre total de secondes qui s’est écoulé depuis le lancement du script est un multiple de 60 ou pas. Si c’est le cas, le sous-script veracash.sh est exécuté. Dans le cas contraire, il ne se passe rien hormis la poursuite du décompte des secondes.

Autre modification, la vérification du statut affiché / non affiché de la feuille de calcul Calc est assurée par wmctrl.

Avec ces deux modifications, le script principal fonctionne beaucoup mieux. Notamment, je n’ai plus à attendre 60 secondes après la fermeture de la fenêtre Calc pour obtenir l’arrêt du script principal et du sous-script.

Voici la nouvelle version du script principal mon_script.sh:


#!/bin/bash

# initialiser la variable pour le temps écoulé en secondes
SECONDS=0

# exécuter une première fois le sous-script veracash.sh
"$HOME/.scripts/veracash.sh"

echo "le sous-script veracash.sh a été exécuté une première fois"
echo "attente 5 secondes"
sleep 5

# ouvrir la feuille de calcul veracash.ods
libreoffice --calc "$HOME/.scripts/veracash.ods" &
echo "le tableau Calc a été ouvert"
echo "attente 5 secondes"
sleep 5

while true; do
    # obtenir l'heure actuelle au format HH:MM:SS
    current_time=$(date +"%T")

    # Si le temps écoulé depuis le lancement du script est un multiple de 60 secondes
    if [ $((SECONDS % 60)) -eq 0 ]; then
        # Exécuter le sous-script veracash.sh
        "$HOME/.scripts/veracash.sh"
        echo "$current_time : relance du sous-script veracash.sh"
    fi

    # Attendre une seconde avant de vérifier à nouveau
    sleep 1

    # Vérifier si la fenêtre du tableur est ouverte
    if wmctrl -l | grep "veracash.ods" >/dev/null; then
        echo "$current_time : la fenêtre du tableur est affichée: poursuite du script principal"
    else
        echo "$current_time : la fenêtre du tableur a été fermée: arrêt du script principal"
        echo "dans 5 secondes" 
        sleep 5
        exit
    fi
done

Dernière modification par jlfh0816 (Le 30/11/2023, à 22:12)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#16 Le 30/11/2023, à 16:41

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

J’ai également tenté de convertir le script principal mon_script.sh et le sous-script veracash.sh en python.
En bidouillant (beaucoup car je ne maîtrise pas du tout ce langage), j’y suis arrivé pour le sous-script mais je n’y suis pas parvenu pour le script principal roll
Si cela peut intéresser quelqu’un, voici ci-dessous le sous-script veracash dans sa version python. Il me paraît s’exécuter plus rapidement que sa version bash.

#!/usr/bin/python3
# coding=utf-8
import subprocess
import re
import os

def run_w3m(url):
    try:
        result = subprocess.run(["w3m", "-dump", url], check=True, capture_output=True, text=True)
        html_content = result.stdout
        return html_content
    except subprocess.CalledProcessError as e:
        print(f"Erreur lors de l'exécution de w3m : {e}")
        return ""

def extract_and_save(lines, output_path):
    if lines:
        result_text = "\n".join(lines)
        expanded_path = os.path.expanduser(output_path)
        with open(expanded_path, "w") as output_file:
            output_file.write(result_text)

def extract_value_and_save(text, output_path):
    match = re.search(r'([0-9]+(\.[0-9]{1,2})?) €', text)

    if match:
        value = match.group(1)
        # s'assurer que la virgule décimale est suivie d'au moins un chiffre
        if '.' in value:
            value = f"{float(value):.2f}"

        expanded_path = os.path.expanduser(output_path)
        # remplacer le point décimal par une virgule et sauvegarder dans un fichier
        with open(expanded_path, "w") as output_file:
            output_file.write(value.replace('.', ','))

print("Début de l'exécution de veracash.py")

url = "https://www.veracash.com/fr/cours-or"
html_content = run_w3m(url)

if html_content:
    # once d'or
    pattern_once = re.compile(r"Quel est le prix de l'once d'or aujourd'hui ?(.+?)\n(.+?)\n(.+?)\n", re.DOTALL)
    match_once = pattern_once.search(html_content)
    extract_and_save([match_once.group(i) for i in range(1, 4)], "~/.scripts/resultat2.txt")
    extract_value_and_save(match_once.group(2), "~/.scripts/resultat3.txt")
    extract_value_and_save(match_once.group(3), "~/.scripts/resultat4.txt")

    # redirection vers les fichiers XML
    extract_value_and_save(match_once.group(2), "~/.scripts/spot_once.xml")
    extract_value_and_save(match_once.group(3), "~/.scripts/premium_once.xml")

    # gramme d'or
    pattern_gramme = re.compile(r"Quel est le prix du gramme d'or aujourd'hui ?(.+?)\n(.+?)\n(.+?)\n", re.DOTALL)
    match_gramme = pattern_gramme.search(html_content)
    extract_and_save([match_gramme.group(i) for i in range(1, 4)], "~/.scripts/resultat5.txt")
    extract_value_and_save(match_gramme.group(2), "~/.scripts/resultat6.txt")
    extract_value_and_save(match_gramme.group(3), "~/.scripts/resultat7.txt")

    # redirection vers les fichiers XML
    extract_value_and_save(match_gramme.group(2), "~/.scripts/spot_gramme.xml")
    extract_value_and_save(match_gramme.group(3), "~/.scripts/premium_gramme.xml")

    print("Extraction et sauvegarde réussies.")
    print("Fin de l'exécution de veracash.py")

Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#17 Le 30/11/2023, à 16:52

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

J’ai oublié : lorsque j'exécute le script principal dans un terminal, j’ai toujours un message d’avertissement qui, sans être identique, ressemble malgré tout à celui déjà évoqué à la fin du post #12 :

(soffice:65058): Gtk-WARNING **: 16:42:48.638: Theme parsing error: main-dark.css:2486:0: Expected a valid selector

(soffice:65058): Gtk-WARNING **: 16:42:48.674: Theme parsing error: main-dark.css:2486:0: Expected a valid selector

(soffice:65058): Gtk-WARNING **: 16:42:48.795: Theme parsing error: main-dark.css:2486:0: Expected a valid selector

(soffice:65058): Gtk-WARNING **: 16:42:49.084: Theme parsing error: main-dark.css:2486:0: Expected a valid selector

Je ne comprends pas pourquoi il apparaît car je n’utilise aucune image de quelque format que ce soit. Ces avertissements apparaissent juste après l’ouverture de Calc mais je n’ai rien trouvé à ce sujet sur la toile...
Le bon côté de la chose, c'est qu'il ne s'agit que d'un message d'avertissement, il n'empêche pas le bon déroulement du script.


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#18 Le 18/12/2023, à 18:35

jlfh0816

Re : [RESOLU] script bash et python pour téléchargement de données ds Calc

Pour ceux que cela intéresse, j’ai enfin réussi à convertir le script principal mon_script.sh en python. Il fonctionne très bien en duo avec le sous-script veracash.py du post #16.

Voici le code :

#!/usr/bin/python3
# coding=utf-8
import os
import subprocess
import time
from datetime import datetime

# Chemins en variables
tableau_calc = os.path.expanduser("~/.scripts/veracash.ods")
sous_script = os.path.expanduser("~/.scripts/veracash.py")

# Initialiser la variable pour le temps écoulé en secondes
seconds = 0

# Exécuter le sous-script veracash.py une première fois
subprocess.run(["/usr/bin/python3.10", sous_script])

print("le sous-script veracash.py a été exécuté une première fois")
print("attente 5 secondes")
time.sleep(5)

# Ouvrir le tableau veracash.ods
subprocess.Popen(["libreoffice", "--calc", tableau_calc])
print("le tableau Calc a été ouvert")
print("attente 5 secondes")
time.sleep(5)

while True:
    # Obtenir l'heure actuelle au format HH:MM:SS
    current_time = datetime.now().strftime("%H:%M:%S")

    # Si le temps écoulé depuis le lancement du script est un multiple de 60 secondes
    if seconds % 60 == 0:
        # Exécuter le sous-script veracash.py
        subprocess.run(["/usr/bin/python3.10", sous_script])
        print(f"{current_time} : relance du sous-script veracash.py")

    # Attendre une seconde avant de vérifier à nouveau
    time.sleep(1)

    # Vérifier si la fenêtre du tableur est ouverte
    try:
        subprocess.check_output(["wmctrl", "-l"]).decode().index("veracash.ods")
        print(f"{current_time} : la fenêtre du tableur est affichée: poursuite du script principal")
    except ValueError:
        print(f"{current_time} : la fenêtre du tableur a été fermée: arrêt du script principal")
        print("dans 5 secondes")
        time.sleep(5)
        exit()

    # Incrémenter le temps écoulé
    seconds += 1

Dernière modification par jlfh0816 (Le 19/12/2023, à 21:57)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne