Depuis Mars 2020, nous sommes nombreux à travailler ou étudier depuis la maison. Cela veut dire que nous passons encore plus d'heures devant nos écrans et l'impact négatif sur la vision peut très vite se ressentir. La solution est pourtant simple d'après mon ohpatomologue. Il suffit d'appliquer la règles des 20 20 20. C'est quoi cette règle ? Elle dit que chaque 20 min, éloigne tes yeux des écrans pendant 20 secondes où tu regardes un objet qui est à 20 mètres.

Seul problème, il faut se rappeler de cette règle chaque fois qu'on travaille. Il est très facile d'oublier de prendre une pause quand on est concentré sur une tâche. J'ai donc appelé Python à la rescousse pour m'aider à me souvenir de prendre une pause plus souvent. L'objectif est simple. Je souhaite que mon programme Python, selon ma préférence, ouvre une vidéo Youtube dans mon navigateur chaque 20 min, quelque soit ce que je suis entrain de faire. J'ai choisi cette vidéo pour l'occassion . Avec celle là, nulle doute que je me souviendrai de reposer mes yeux quelques secondes. Le plus, c'est que ce code me permet d'appliquer la méthode Pomodoro.

Voici une démo de mon programme si vous souhaitez la voir:

Quelques spécifications

Nous allons rendre le programme un peu général afin qu'il puisse laisser l'utilisateur choisir la durée de chaque session de travail, la durée de la pause et le nombre de sessions qu'il veut. Nous accepterons ses paramètres en ligne de commande avec le module python argparse :

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--session", "-s", type=int)
parser.add_argument("--duree", "-d", help="Duree d'une session en minute", type=int)
parser.add_argument("--pause", "-p", help="La durée de la pause en minute", type=int)
args = parser.parse_args()

Nous pouvons désormais avoir accéder aux entrées de l'utilisateur avec args.session, args.duree et args.pause.

La fonction session()

Il est temps maintenant d'implémenter la fonctionalité qui à la fin d'une session, ouvre une vidéo dans le navigateur. En python, on peut ouvrir une page web grâce à la librairie webbrowser. Nous utiliserons la librairie time pour faire reposer notre programme, le temps qu'on travaille. Voici la fonction session qui prend en entrée la durée d'une session et la durée d'une pause en minutes :

def session(duree, pause):
    """
    Lance une session de travail de durée minute,
    ouvre une vidéo dans le navigateur
    et fais une pause de "pause" minute
    :param duree:
    :param pause:
    :return:
    """
    print("Une session a commencé")
    time.sleep(duree * 60)
    webbrowser.open("https://www.youtube.com/watch?v=yzg94Iamm_c")
    print("Pause en cours")
    time.sleep(pause * 60)

Il nous suffit désormais de répéter cette fonction autant de fois que l'utilisateur souhaite faire de sessions :

for i in range(args.session):
    session(args.duree, args.pause)
    print(f"Session {i + 1} terminée, il reste {args.session - i - 1} sessions")

Voilà notre code est fin prêt et on peut l'exécuter comme ceci: Supposons que je souhaite faire 3 sessions de 30 minutes avec 5 minutes de pause en chaque session. La commande sera donc :

python main.py --session 3 --duree 30 --pause 5

Améliorations

Si vous avez exécuté ce code, vous remarquerez qu'à la fin de la dernière session, il fait une pause. C'est dû au fait que la fonction session se termine par une pause. Ce que nous voudrions, c'est qu'il n'y ait pas de pause à la fin de la dernière session ou si nous avons voulu faire qu'une seule session. Je laisse cette amélioration comme exercice au lecteur pour pratiquer les notions de conditions en Python. Vous pouvez regarder ma vidéo sur les conditions en Python ici.

Conclusion

Dans cet article, nous avons codé un programme qui nous rappelle qu'on doit souvent prendre des pauses et regarder au loin pour protéger nos yeux des écrans. Savoir programmer pour obtenir un emploi, c'est bien mais c'est dans ces conditions où on code pour résoudre un problème personnel, qu'on s'améliore. Alors si vous souhaitez acquérir approfondir vos compétences en programmation, je vous conseil de choisir un projet qui repond à l'un de vos besoins et amusez-vous.

N'hésitez pas à me laisser un commentaire si vous avez trouvé ce post utile.