[Python] Générateur de commentaires aléatoires

Publié le par Pierre J.

Salut, voici la première version du générateur aléatoire. Pour l'utiliser, copiez le texte que vous voulez dans la chaine de caractères text, à la place de celle qui est dans le programme.

Pour une deuxième version, il serait bon d'utiliser un parseur de HTML, ce qui permettrait de simplement fournir l'URL au programme et il irait chercher les commentaires tout seul dans la page Web. De l'aide serait la bienvenue, y a des motivés ?

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
#kristellisator.py
#but du programme:
#vous avez pas envie de comprendre, de lire tout, vous êtes un peu nuls et vous assumez ?
#utilisez le programme pour créer votre propre commentaire constitué de bouts de commentaires des autres !


import os, sys
import random
import string

#Nombre de phrases à générer
nbphrases = 5
#Nombre de propositions par phrase.
longphrasemax = 3

#Dans le texte suivant, on place des phrases. On peut copier coller les commentaires des pages de statmosphere et les copier ici.
#Le programme enlève automatiquement les lignes "commentaire n°X par Y ...."
text = """

Allez les gars, solides sur les appuis ! On reste concentrés, on fait pas de faute, on joue le ballon !

commentaire n° : 1 posté par : Pierre J. le: 02/10/2007 11:28:05
c'est pas le mercredi qu'il sort SAS ?

Mais ca serait quand meme vachement bien un espace ou les gens auraient un droit de reponse.

Wait and see.
commentaire n° : 2 posté par : clem le: 02/10/2007 11:32:23
Ah ouais merdum tu dois avoir raison. C'est demain l'impact !

Pour le droit de réponse, faudra attendre le forum des élèves sur le nouveau site. Ca avance d'ailleurs cette histoire ?

J'ai hâte de recevoir ce SAS Discute !

commentaire n° : 3 posté par : Pierre J. le: 02/10/2007 11:46:27
Ouais effectivement pour la calomnie contre les 3A ça avait l'air bien parti. Faites gaffe à ce que vous dites sur ce blog, l'ennemi manie extrêmement bien la citation hors-contexte détournée.
Heuresement, la rédaction fait son travail de journaliste et vérifie ses informations !

Sinon j'aime ta citaiton Pierre, d'autant qu'on s'est refait un 300 hier avec l'autre grand légume !

Si je ne l'ai pas lu, j'ai oui dire que la réponse bdeesque tendait encore un peu vers le bisounoursesque. Jusqu'où va-t-on devoir allé pour provoquer ce conflit sanglant où nos pulsions violentes et destructrices (et méprisantes) pourront enfin s'exrpimer ?
commentaire n° : 4 posté par : guillaume le: 02/10/2007 11:47:51
tu veux vraiment une réponse?
commentaire n° : 5 posté par : peyro le: 02/10/2007 12:00:52
Heureusement que Peyro est là pour qu'on garde les réflexes élémentaires de survie. Concentré, Guillaume, concentré !!
commentaire n° : 6 posté par : Pierre J. le: 02/10/2007 12:03:15
L'énorme faute d'orthographe fait office de mis à part.
C'est tout !
tain d'ailleurs en me relisant je ne sais vraiment pas ecrire, faute d'orthographe, fautes de frappe, je fais fort...

mes confuses
commentaire n° : 7 posté par : guillaume le: 02/10/2007 12:03:34
oui, il semblerait que y'ai pas de quoi casser 3 pattes a une courgette [oh un grand legume].

Mais ca me plairait vraiment beaucoup qu'ils s'expliquent sur leurs actes [surtout les trucs un peu serieux genre `doit on laisser de l'argent au futur bde ... bon, on se fait des polos rien que pour nous pour le Wei meme si ca sert a rien puis on en rediscute ensuite les gars'].

Mais bon. Chacun sa vision des choses.

Ce qui me desole le plus dans tout ca, c'est que les 1A doivent pas vraiment comprendre ce qui se passe, et que les 2A doivent pas avoir envie de rajouter de l'huile sur le feu.

Et les absents ont toujours torts, c'est bien connu. Personne veut faire un p'tit programme python qui selectionne des bouts de phrases qui veulent plus rien dire hors contexte ? Pierre ?

commentaire n° : 8 posté par : clem le: 02/10/2007 12:09:54
Je m'y attèle !
commentaire n° : 9 posté par : Pierre J. le: 02/10/2007 12:16:00
Et non, en fait je m'y attelle ! Désolay.
commentaire n° : 10 posté par : Pierre J. le: 02/10/2007 12:16:35
hehe ...

ca sera un super jouet. Fais le commercialiser par Mattel ! [ok, je sors]
commentaire n° : 11 posté par : clem le: 02/10/2007 12:46:18
a mon avis tel que c est parti vous aurez pas vraiment de reponse.
C est l argent du bde qui a paye les polos? Ils ont trouve des sponsors pr financer un peu ou bien?

commentaire n° : 12 posté par : Cocolumbo le: 02/10/2007 14:33:34
C'est dingue comme une blague (pourrie) de Clément nous calme tous !

De là à dire qu'il faudrait retourner tes blagues à l'usine Clément...

(ah oui il a l'air de faire meilleur dehors)
commentaire n° : 13 posté par : guillaume le: 02/10/2007 14:34:23
Bah je crois que la sogé a fait comme d'hab et a fourni les t-shirt "promo" (qui sont assez sympa d'ailleurs) et les polos j'imagine que c'est l'argent du bde.

Faudrait qu'on aille à l'école un de ces jours, on rentrerait en criant:
"Clément Pravin"
avec force roulement de tambours

là Clément rentre, tout le monde crie, on se fout sur la gueule, on démonte tout ceux qui sont plus jeunes que nous et on s'en va (après avoir pris 18 bibines chacun à la kfet sur le compte de David Cressey)
commentaire n° : 14 posté par : guillaume le: 02/10/2007 14:48:10
on va à la pena aprés?

moi j'm'en fous, tout plan se finissant là-bas est bon à prendre

"""

#On extrait les lignes du texte
lignes = text.splitlines()
#On enlève celles qui commence par "commentaire"
lignes = [l for l in lignes if not(l.startswith("commentaire"))]
#On extrait les phrases des lignes
listephrase = []
for l in lignes:
    l = l.replace("!", ".")
    l = l.replace("?", ".")
    l = l.replace(";", ".")
    phrases = l.split(".")
    listephrase.extend(phrases)

#On ne garde que les phrases de plus de 10 caractères, ça enlève la plupart des blagues
listephrase = [phrase for phrase in listephrase if len(phrase) > 15]

#On extrait les propositions des phrases
listeprop = []
for p in listephrase:
    nouvellespropositions= [pr.ljust(15).rstrip().rjust(15).strip() for pr in p.split(",")]
    listeprop.extend(nouvellespropositions)
listeprop = [string.lower(p) for p in listeprop]

#fonction de tri aléatoire d'une liste
newliste = []
def RandomDrawInList( listeorigin, listearemplir ):
    longueur = len(listeorigin)
    indice = random.randint(0, longueur-1)
    p = listeorigin.pop(indice)
    listearemplir.append(p)
    if len(listeorigin) != 0:
        RandomDrawInList(listeorigin, listearemplir)
RandomDrawInList(listeprop, newliste )
listeprop = newliste

#~ #Reconstitution d'un commentaire
print "--"
citation = ""

for phr in range(0, nbphrases):
    indicepif = random.randint(0, len(listeprop)-1)
    phrase = listeprop.pop(indicepif)
    for prop in range(0, longphrasemax-1):
        indicepif = random.randint(0, len(listeprop)-1)
        proposition = listeprop.pop(indicepif)
        phrase += ", "
        phrase += proposition
    phrase += ". "
    citation+= string.capitalize(phrase)
    citation+= 'n'
citation += "Commentaire posté à "+ str(random.randint(1,12))+"h"+str(random.randint(1,59))
auteurs = "Clem,Guillaume,Pierre,LN,A-S,PtiSeb,Saucisse masquée,Courgette,Prune des champs,Poire des prés,Pomme de pin,Maria,marie,Peyro,coco,camille"
auteurs = auteurs.split(',')
citation += " par " + auteurs[random.randint(0,len(auteurs))]

print citation

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
P
Peyro: spa fauxc'est toi le ratc'est toi le porcfaut que je me remette au pythonOn aime les animaux ici a ce que je vois. Mais python c'est le plus fort, vos rats et vos porcs, il se les bouffe au 4h...
Répondre
P
Alala quel dommage, moi qui pensait justement m'en inspirer pour mes nombreux projet de programmation.Bon, tant pis.
Répondre
P
Je me rends compte de trucs débiles en relisant, par exemple je trie la liste des propositions aléatoirement et ensuite je choisis aléatoirement dedans, c'est idiot. Enfin, bref c'est pas un exemple à suivre ce programme. Il a juste le mérite d'utiliser un paquet de fonctions de manipulation de strings et c'est pas moi le string.
Répondre
G
fichtre faut que je me remette au python, c'était chouette !
Répondre
P
Alors pour ceux et celles qui veulent m'aider, il s'agit de comprendre les chapitres 8 et 9 de:http://python.developpez.com/cours/DiveIntoPython/php/frdiveintopython/toc/index.phpY a moyen de s'occuper.Le chapitre 8 (traitement du HTML) permet de choper les commentaires à partir d'une page du blog.Le chapitre 9 (traitement du XML) permettrait (mais là c'est tendu) de générer de manière cool des textes en spécifiant une syntaxe. Dans le chapitre est expliqué un super générateur de texte de Kant, mapctlk.
Répondre