Fortune est un petit outil Unix qui fournit une citation sur demande, et sur la thématique choisie.





0x01. FORMAT DE FICHIER


L’amour est notre seul bien. Lui seul nous permet de nous aider les uns les autres.
%
Lorsque l’amour vous fait signe, suivez-le, bien que ses chemins soient escarpés et sinueux. Et quand ses ailes vous étreignent épanchez-vous en lui, en dépit de l’épée cachée dans son plumage qui pourrait vous blesser… et dès lors qu’il vous adresse la parole, croyez en lui. Même si sa voix fracasse vos rêves, comme le vent du nord saccage les jardins.
%
L’amour est un plaisir, mais son climat est variable.
%
Tu es chaque jour nouvelle. Et le dernier de tes baisers est toujours plus doux.
%
Quand le cœur d’un homme est assombri par des soucis, il suffit qu’une femme paraisse pour dissiper les nuages.
%
Toutes les pensées, toutes les passions, tous les délices, tout ce qu’agite cette enveloppe mortelle ne sont que le prêtres de l’amour qui alimentent la flamme sacrée.
%
Tout amour est doux, donné ou reçu, et pareil à la lumière, l’amour pénètre tout, sa voix familière n’est jamais source de tracas.
%
Un vieil amoureux c’est une fleur au cœur de l’hiver.
%
Dans sa première passion la femme aime son amant. Dans toutes les autres c’est l’amour qu’elle aime.
%
Et tout pour l’amour, sans rien en retour.
%



0x02. FORTUNE.PY


Les fichiers de fortune sont placés dans le dossier : $HOME/.local/share/fortune/


 
#!/usr/bin/env python
 
 
 
#
# Library
#
 
from getopt import getopt
from random import randrange
import sys
from os import system, getenv, popen
 
 
 
#
# Env
#
 
DB_FILES=getenv("HOME") + "/.local/share/fortune/"
 
 
 
#
# Get file database
#
 
def random_category(DB_FILES):
 
    hdl = popen("ls " + DB_FILES + "*.db")
    buff = hdl.read()
    buff = buff.split("\\n")
 
    categories = {}
    i = 0
    for category in buff:
        categories[i] = category.replace(".db","").replace(DB_FILES,"")
        i = i + 1
 
    r = randrange(0,len(categories)-1)
    category = categories[r]
    return( category)
 
 
 
#
# Random quote
#  index == -1  =>  random()
#
def get_quote(category,index):
    i = 0
    fortunes = {}
    fortunes[i] = ""
 
    file = DB_FILES + category + ".db"
    fh = open(file,"r")
 
    lines = fh.readlines()
 
    for line in lines:
        if line.strip() == "%":
            i = i + 1
            fortunes[i] = ""
        fortunes[i] = str(fortunes[i] + line).replace("%","")
    if index == -1:
        r = randrange(0,len(fortunes)-1)
    else:
        r = index
    return( str(i) + ";%" + str(r) + ";%" + "\\n" + fortunes[r] )
 
 
#
# Show list
#
def show_list():
    system("cd " + DB_FILES + " ; ls *.db|sed 's/.db//g'")
    sys.exit(0)
 
 
 
#
# Show usage
#
def usage():
    print """
Usage: fortune [ -h | -l | [-c category] [-q quote] ]
"""
 
 
 
#
# Parse arguments
#
 
category = ""
index    = -1
verbose  = 0
for opt,arg in getopt(sys.argv[1:],"c:q:hlv")[0]:
    if opt == "-c":
        category = arg
    if opt == "-q":
        index = int(arg)
    if opt == "-h":
        usage()
        sys.exit(0)
    if opt == "-l":
        show_list()
        sys.exit(0)
    if opt == "-v":
        verbose=1
 
 
 
#
# Get category and quote
#
 
if category == "":
    category = random_category(DB_FILES).split(",")
    category = category[0]
 
quote = get_quote(category,index).split(";%")
 
m = quote[0]
r = quote[1]
quote = quote[2]
 
# Print category/number/quote
info = "\\033[1;32m" + category + " > quote #" + str(r) + "/" + str(m) + "\\033[0m"
if verbose:
    print info.strip()
print quote.strip()
 
 
 



   =>   Écrit par : Nicolas, le 19 octobre 2015


 
Mots clés :  
  python 
  
  general 
  
  fun 
    >   Articles connexes :

Trim (ou strip) pour votre terminal


Supprimer les espaces, tabulation et sauts de lignes en début et fin de ligne peut être très utiles lors de l'utilisation courante du...

Bruteforce Vigenère



Comment gagner du temps sur Internet



Geeks, nerds, hackers, pirates, ...



2967747