#2151 Le 08/04/2011, à 13:05
- rmy
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Non, Mélanie.
récupération de données: vrac–topic unique–mon site pro pour les particuliers : www.diskcard.fr– Je recycle volontiers tous vos disques durs HS (ou pas).
Le site pro pour les pros, spécialiste recupération de données RAID, NAS et serveurs: www.vodata.fr
Hors ligne
#2152 Le 08/04/2011, à 15:36
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
les cartes à côté
#2153 Le 08/04/2011, à 16:14
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
ola @omc,
dans 2 jours non seulement le bot ne fera pas la vaisselle, ni le café mais par contre réussira à nous faire virer
#2154 Le 08/04/2011, à 16:23
- tshirtman
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
mon plan diabolique avance bien
Hors ligne
#2155 Le 08/04/2011, à 16:27
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
mon plan machiavélique avance bien
je m'en doutais aussi, 4 pages il sont sympa quand même
#2156 Le 08/04/2011, à 16:29
- nathéo
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Au fait où peut-on avoir le code source du cdct ?
Dernière modification par nathéo (Le 08/04/2011, à 16:31)
C'est rarement par le sarcasme qu'on élève son âme.
Le jus de la vigne clarifie l'esprit et l'entendement.
De quoi souffres-tu ? De l'irréel intact dans le réel dévasté ?
La liberté n'est qu'un vain fantôme, quand une classe d'hommes peut affamer l'autre impunément. timezone[America/Bogota]
Hors ligne
#2157 Le 08/04/2011, à 16:30
- tshirtman
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
j'ai donné le lien page précédente, mais il est pas trop dur à trouver, il est sur google code.
Dernière modification par tshirtman (Le 08/04/2011, à 16:31)
Hors ligne
#2158 Le 08/04/2011, à 16:31
- nathéo
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Je viens de faire un tour sur google code (via la signature du compteur) il me semble pas avoir vu quelque chose qui ressemblait à du code source…
C'est rarement par le sarcasme qu'on élève son âme.
Le jus de la vigne clarifie l'esprit et l'entendement.
De quoi souffres-tu ? De l'irréel intact dans le réel dévasté ?
La liberté n'est qu'un vain fantôme, quand une classe d'hommes peut affamer l'autre impunément. timezone[America/Bogota]
Hors ligne
#2159 Le 08/04/2011, à 16:32
- tshirtman
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
il faut peut être cliquer sur "browse" ou suivre les instructions fournis sous "checkout"…
code.google.com/p/compteur-tdct/source/browse/trunk/compteur_couche_tard.py
Dernière modification par tshirtman (Le 08/04/2011, à 16:33)
Hors ligne
#2160 Le 08/04/2011, à 16:37
- nathéo
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Merci pour le lien, sinon pour la "visibilité" du truc sur google code heu comment dire…
C'est rarement par le sarcasme qu'on élève son âme.
Le jus de la vigne clarifie l'esprit et l'entendement.
De quoi souffres-tu ? De l'irréel intact dans le réel dévasté ?
La liberté n'est qu'un vain fantôme, quand une classe d'hommes peut affamer l'autre impunément. timezone[America/Bogota]
Hors ligne
#2161 Le 08/04/2011, à 16:43
- nany
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
tshirtman a écrit :mon plan machiavélique avance bien
![]()
je m'en doutais aussi, 4 pages il sont sympa quand même
Et tu peux t'estimer heureux : à trente-sept secondes près, tu avais droit à deux points.
Hors ligne
#2162 Le 08/04/2011, à 17:46
- nany
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
d'ailleurs ceci ne devrait pas être changé aussi ?
if ( (str_date.split(' ')[0] in ['Hier'] and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(5,24)) or (str_date.split(' ')[0] in ["Aujourd\'hui"] and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(5)) ):
Tout dépend de la période que tu veux prendre en compte.
Tu peux faire un truc de ce genre
if (
(str_date.split(' ')[0] in ['Hier']
and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(19,24))
or (str_date.split(' ')[0] in ["Aujourd\'hui"]
and int(str_date.split(' ')[2].split('<')[0].split(':')[0]) in range(19))
):
et lancer le compteur après 19h (mais avant minuit ).
Hors ligne
#2163 Le 08/04/2011, à 18:48
- omc
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
/Tdct let's flood !
Hors ligne
#2164 Le 08/04/2011, à 18:56
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
il me semblait bien ma plage est surement pas bonne mais pourquoi le lancer avant minuit ?
et il y a donc les graphiques aussi
DataBar = ','.join(DataBar.split(',')[5:24])+','+','.join(DataBar.split(',')[0:5])
et celle ci aussi
entry.setDate(Date(str(post.find("p","postedit").find("em")).split("à")[1][1:6].split(":"),utc))
Et il est où @Omc le floodeur HA bravo
edit oups il est là
bon il fait la vaisselle ou pas
Dernière modification par karamelo (Le 08/04/2011, à 19:07)
#2165 Le 08/04/2011, à 19:26
- omc
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
arg pas encore... Petit problème d'encodage des caractères !
Hors ligne
#2166 Le 08/04/2011, à 20:01
- nany
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
,membre de la communauté des lèves-tôt souhaite communiquer:
let's flood !
J'ai déjà dit que lève-tôt et couche-tard sont invariables.
──────────────────────────────────────────
il me semblait bien ma plage est surement pas bonne mais pourquoi le lancer avant minuit ?
Parce qu'après minuit, Cendrillon se retrouve en haillons.
Plus sérieusement : parce qu'après minuit, hier devient avant-hier et aujourd'hui devint hier.
Étonnant, non ?
et il y a donc les graphiques aussi
![]()
DataBar = ','.join(DataBar.split(',')[5:24])+','+','.join(DataBar.split(',')[0:5])
DataBar = ','.join(DataBar.split(',')[19:24])+','+','.join(DataBar.split(',')[0:19])
et celle ci aussi
entry.setDate(Date(str(post.find("p","postedit").find("em")).split("à")[1][1:6].split(":"),utc))
Non, ça c'est pour les edit. Le plus simple serait de modifier la classe Entry en remplaçant max par min :
class Entry:
def __init__(self,name='',date=Date(),edit=Date()):
self.name = name
self.date = min(date,edit)
def setName(self, name):
self.name = name
def setDate(self, date):
if date.points()>self.date.points(): self.date = date
Et il est où @Omc le floodeur HA bravo
[…]
Attention les gars ! Les bots sont tolérés mais j'imagine un bot floodeur risque le ban. Surtout dans un nid à modos comme le TdCT.
Et bon courage ! Je sens que vous approchez du but.
Dernière modification par le n@nyl@nd (Le 08/04/2011, à 20:24)
Hors ligne
#2167 Le 08/04/2011, à 20:12
- tshirtman
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Non, ça c'est pour les edit. Le plus simple serait de modifier la classe Entry en remplaçant max par min :
j'ai un doute sur comment ça marche, là, d'un coup… ce max est il vraiment utile? la comparaison sur le nombre de point étant faite dans setDate…
Hors ligne
#2168 Le 08/04/2011, à 20:22
- nany
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Le min est utile puisqu'ici le principe est à l'inverse du TdCT.
[Edit]Ça semble en effet un plus compliqué car je ne sais pas comment est effectuée la comparaison entre deux objets Date.[/Edit]
Dernière modification par le n@nyl@nd (Le 08/04/2011, à 20:32)
Hors ligne
#2169 Le 08/04/2011, à 20:28
- omc
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
/tdct Je vous souhaite une bonne nuit
Hors ligne
#2170 Le 08/04/2011, à 20:30
- tshirtman
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
ah si ça doit être utile vu que Date() est initialisé à une heure sans points par défaut.
Mais dans le cas ici,il suffit de prendre l'heure de création je pense.
Hors ligne
#2171 Le 08/04/2011, à 20:31
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Parce qu'après minuit, Cendrillon se retrouve en haillons.
Plus sérieusement : parce qu'après minuit, hier devient avant-hier et aujourd'hui devient hier.
Étonnant, non ?.
c'est d'un gout douteux
/tdct Je vous souhaite une bonne nuit
oh merde déjà tu es malade ?
Dernière modification par karamelo (Le 08/04/2011, à 20:32)
#2172 Le 08/04/2011, à 20:37
- nany
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
ah si ça doit être utile vu que Date() est initialisé à une heure sans points par défaut.
Mais dans le cas ici,il suffit de prendre l'heure de création je pense.
Et si j'ai envie d'éditer un post (celui-ci par exemple) demain matin pour marquer des points ?
Hors ligne
#2173 Le 08/04/2011, à 21:11
- omc
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
/tdct The Tdlvt-Bot is alive ! Gnap-gnap
Hors ligne
#2174 Le 08/04/2011, à 21:20
- compte supprimé
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Tdlvt-Bot
il est où le code source
#2175 Le 08/04/2011, à 21:22
- omc
Re : Topic des lève-tôts... Faisons manger leur slip aux couche-tards !
Arg ça à l'air de fonctionner...
Si vous voulez envoyer un message aux couche-tards il suffit de commencer votre post par /td... (voir au dessus) et le bot copie le message et poste chez les couche-tards.
Je laisse tourner le bouzin cette nuit... On verra bien
import types
from BeautifulSoup import BeautifulSoup
import urllib2
import re
import sys
import ClientForm
import mechanize as ClientCookie
import HTMLParser
import time
from datetime import date
import datetime
class Post:
"""This class to describe a post"""
def __init__(self, author, date, key, message):
self.author = author
self.date = date
self.key = key
self.message = message
def __init__(self, htmlCode):
# extract message
postMsg = str(htmlCode.find("div", "postmsg"))
postMsg = postMsg.replace("<div class=\"postmsg\">","")
postMsg = postMsg.replace("<p>","")
postMsg = postMsg.replace("</p>","")
postMsg = postMsg.replace("</div>","")
# extract author
postAuthor = htmlCode.find("dt").find("strong").find("a").string
# extract Key
postKey = int(htmlCode.find("h2").find("span").find("span").string.replace("#",""))
# extract date
postDateStr = htmlCode.find("h2").find("span").find("a").string
postDate = date.today()
if "Aujour" in postDateStr.string:
postDate = date.today()
elif "Hier" in postDateStr.string:
postDate = postDate - datetime.timedelta(1)
else:
postDateStr = postDateStr.split(',')[0]
postDateStr = postDateStr.replace("Le ","")
postDateStr = postDateStr.split('/')
postDate = datetime.date(int(postDateStr[2]),int(postDateStr[1]), int(postDateStr[0]))
#affect attributes
self.author = postAuthor
self.date = postDate
self.key = postKey
self.message = postMsg
def debug(self):
print "Author :" , self.author
print "Date :" , self.date
print "Key :" , self.key
print "message:\n", self.message
class Topic:
"""This class to describe a topic"""
def __init__(self, url):
self.url = url
self.pages = []
self.currentPage = 1
self.postsDic = {}
self.posts = []
def debug(self):
for post in self.posts:
post.debug()
print "---------------------------------------"
def openPage(self):
return BeautifulSoup(urllib2.urlopen(self.url + "&p=" + str(self.currentPage)))
def updatePageNumber(self):
self.pages = []
self.pages.append(self.currentPage)
page = self.openPage()
level0 = page.find('p','pagelink conl')
for level1 in level0.findAll('a'):
try:
self.pages.append(int(level1.string))
except:
print "cannot convert", level1.string, "to int"
def extractHtmlPostInCurrentPage(self):
page = self.openPage()
code = page.findAll("div","blockpost rowodd blockpost1")+page.findAll("div","blockpost roweven")+page.findAll("div","blockpost rowodd")
return code
def newPost(self):
newPost = []
self.updatePageNumber()
for page in self.pages:
if (page >= self.currentPage):
self.currentPage = page
htmlCodes = self.extractHtmlPostInCurrentPage()
for htmlCode in htmlCodes:
post = Post(htmlCode)
if self.postsDic.has_key(post.key) is False:
newPost.append(post)
post.debug()
return newPost
def savePost(self):
newPosts = self.newPost()
for post in newPosts:
self.postsDic[post.key] = post
self.posts.append(post)
def sendMessage(self, message):
# le fichier doit contenir le login du posteur sur la première ligne, et son mot de passe sur la deuxième (cela et seulement cela).
file = open("login","r")
login = file.readline().split('\n')[0]
password = file.readline().split('\n')[0]
file.close()
cookieJar = ClientCookie.CookieJar()
opener = ClientCookie.build_opener(ClientCookie.HTTPCookieProcessor(cookieJar))
opener.addheaders = [("User-agent","Mozilla/5.0 (compatible)")]
ClientCookie.install_opener(opener)
fp = ClientCookie.urlopen("http://forum.ubuntu-fr.org/login.php")
forms = ClientForm.ParseResponse(fp)
fp.close()
form = forms[1]
form["req_username"] = login
form["req_password"] = password
fp = ClientCookie.urlopen(form.click())
fp.close()
tid = self.url.split('=')[1] # la première ligne contenant l'addresse du topic.
print tid
fp = ClientCookie.urlopen("http://forum.ubuntu-fr.org/post.php?tid="+tid)
forms = ClientForm.ParseResponse(fp)
fp.close()
form = forms[1]
form["req_message"] = message
fp = ClientCookie.urlopen(form.click())
fp.close()
def main():
floodKey = "/tdct "
TdlvT = Topic("http://forum.ubuntu-fr.org/viewtopic.php?id=420632")
TdcT = Topic("http://forum.ubuntu-fr.org/viewtopic.php?id=449666")
TdlvT.savePost()
TdlvT.debug()
while True:
newPost = TdlvT.newPost()
if type(newPost) is not types.NoneType:
for post in newPost:
post.debug
if floodKey in post.message:
messageInit = post.message.replace(floodKey,"")
pars = HTMLParser.HTMLParser()
message = str(pars.unescape(post.author)) + str(", membre de la communauté des lèves-tôt souhaite communiquer \n[quote]") + str(pars.unescape(messageInit)) + str("[/quote]\nMerci.")
print "Message !"
print message
TdcT.sendMessage(message)
time.sleep(120)
main()
Hors ligne