Ceci est une ancienne révision du document !
Code source du script
- anniv.py
#! /usr/bin/env python3 # -*- coding: utf-8 -*- bdays = """\ 23-8-1754 Louis XVI 24-8-1948 Jean-Michel Jarre 15-6-1943 Johnny Hallyday 28-9-1934 Brigitte Bardot """ from datetime import date def str2date(str_date): d, m, y = str_date.split('-') return (int(y), int(m), int(d)) def find_next(bdays, md): if not bdays: return [] match = [] for l in bdays: next_date = (l[0][1], l[0][2]) if len(match): # Check if there is another bday the same day if next_date == (match[0][0][1], match[0][0][2]): match.append(l) else: break elif next_date >= md: match.append(l) return match if len(match) else find_next(bdays, (0,0)) if __name__ == "__main__": converted = [] for l in bdays.splitlines(): tokens = l.strip().split() if tokens: converted.append((str2date(tokens[0]), ' '.join(tokens[1:]))) # Sort by month and day sorted_bdays = sorted(converted, key=lambda d: (d[0][1], d[0][2])) today = date.today() md = (today.month, today.day) next_bdays = find_next(sorted_bdays, md) for bday in next_bdays: bmd = (bday[0][1], bday[0][2]) if bmd == md: print(f"Aujourd'hui : Anniversaire de {bday[1]}\n{today.year-bday[0][0]} ans") else: isnextyear = bmd < md dt = date(today.year if not isnextyear else today.year+1, bmd[0], bmd[1]) - today print(f"Anniversaire de {bday[1]} dans {dt.days} jours\n{today.year-bday[0][0]} ans")
Utilisation
Téléchargez le script çi-dessus et copiez-le à l'endroit de votre choix sur votre système.
Éditer le script pour ajouter les dates d'anniversaire et les noms de vos amis ou autres personnalités préférés. Il est important de respecter format de la date AAA-MM-JJ
'. L'ordre n'a pas d'importance (la liste est triée à chaque exécution du script).
Afficher le message à l'ouverture du terminal
Dans un terminal :
$ echo "python3 ~/anniv.py | cowsay" >> ~/.bashrc
Remplacer l'emplacement du script ~/anniv.py
en fonction de l'endroit où vous l'avez mis sur votre machine.