#1901 Le 25/05/2010, à 01:01
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#1902 Le 25/05/2010, à 01:26
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
The plop.
[logout]
Pour cause de vie personnelle mouvementée je ne serais plus très présent sur le forum, aussi bien en r qu'en w, pour une période indéterminée (à la Debian, le temps de publier une version stable).
Par conséquent, je laisse ma place au classement aux bons soins de Pylade .
Si trucs importants MP /me
[/logout]
Hors ligne
#1903 Le 25/05/2010, à 08:37
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
J’ai marqué trois points hier, et j’en marquerai deux ce soir et demain, mais après, compte sur moi pour retourner aux affaires avec des dix points !
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1904 Le 25/05/2010, à 08:42
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores totaux, depuis le début :
1) 345 samuncle
2) 277 nesthib
3) 237+5 grim7reaper
4) 235 Pylade
5) 200 mathieuI
6) 165 cm-t
7) 112 helly
8) 96 ǤƦƯƝƬ
9) 72 gnuuat
10) 70 petifrancais
11) 60 tshirtman
12) 37 ilagas
13) 25 GentooUser
14) 24 pierguiard
15) 23 Ouranos999
16) 19 Le Rouge
17) 18 Ph3nix_
18) 14 Kanor
19) 12 stratoboy
19) 12 kouskous
21) 10 CROWD
21) 10 keny
23) 7 Lagierl
23) 7 sailing
25) 6 Toineo
25) 6 Mornagest
25) 6 Zeibux
28) 5 xapantu
29) 4 danychou56
29) 4 Neros
29) 4 Biaise
32) 3 Р'tite G☢gole :mad:
33) 1 ceric
33) 1 pfriedK
33) 1 geenux
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#1905 Le 25/05/2010, à 08:42
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores de la période en cours :
1) 345 samuncle
2) 277 nesthib
3) 237 grim7reaper
4) 235 Pylade
5) 200 mathieuI
6) 165 cm-t
7) 112 helly
8) 96 ǤƦƯƝƬ
9) 72 gnuuat
10) 70 petifrancais
11) 60 tshirtman
12) 37 ilagas
13) 25 GentooUser
14) 24 pierguiard
15) 23 Ouranos999
16) 19 Le Rouge
17) 18 Ph3nix_
18) 14 Kanor
19) 12 stratoboy
19) 12 kouskous
21) 10 CROWD
21) 10 keny
23) 7 Lagierl
23) 7 sailing
25) 6 Toineo
25) 6 Mornagest
25) 6 Zeibux
28) 5 xapantu
29) 4 danychou56
29) 4 Neros
29) 4 Biaise
32) 3 Р'tite G☢gole :mad:
33) 1 ceric
33) 1 pfriedK
33) 1 geenux
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#1906 Le 25/05/2010, à 09:20
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
gnuuat: j'ai du mal à voir en quoi c'est plus pratique, au vue de tes deux exemples… mais bon, sache qu'au niveau optimisation c'est pareil ^^.
Hors ligne
#1907 Le 25/05/2010, à 16:06
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Je voulais juste savoir côté optimisation .
Mais en général, pour mon utilisation quotidienne, ++ctr sera plus simple :
#include <stdlib.h>
int main(void)
{
char *str;
int size;
size = 42;
str = malloc(sizeof(*str) * size);
while (--size >= 0)
str[ctr] = '\0';
return (EXIT_SUCCESS);
}
Bon, ce bout de code ne sert à rien (man bzero, memset, etc...), mais ça résume bien le genre de cas sur lequel je tombe souvent .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#1908 Le 25/05/2010, à 16:12
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
strncpy()
Hors ligne
#1909 Le 25/05/2010, à 21:13
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Le lendemain du towel day, avec un numéro multiple de 42.
C’est un bon présage.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1910 Le 25/05/2010, à 21:42
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
strncpy()
bzero rempli directement de zéros la chaine avec la taille donnée.
memset, permet de remplir la chaine avec le caractère donné pour la taille donnée.
strncpy, il copie les n premiers caractères chaine dans une autre.
Or ici, je rempli de \0, donc la fonction la plus appropriée est bzero .
Sinon, yavait l'utilisation de xcalloc aussi, qui est plus rapide .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#1911 Le 25/05/2010, à 22:19
- helly
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
BN World
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#1912 Le 25/05/2010, à 22:53
- Кຼزດ
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
plop += 1
Dernière modification par mathieuI (Le 25/05/2010, à 23:21)
dou
Hors ligne
#1913 Le 25/05/2010, à 23:06
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
inc plop
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#1914 Le 25/05/2010, à 23:25
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#1915 Le 25/05/2010, à 23:58
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
bonne nuit
editapoints
Dernière modification par tshirtman (Le 26/05/2010, à 00:00)
Hors ligne
#1916 Le 26/05/2010, à 00:05
- samυncle
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Hello world
Hors ligne
#1917 Le 26/05/2010, à 00:39
- cm-t
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
'nuit
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#1918 Le 26/05/2010, à 03:52
- samυncle
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
.
Hello world
Hors ligne
#1919 Le 26/05/2010, à 08:09
- tshirtman
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
>_< j'ai fais mes points ici au lieu de là bas… >_<
Hors ligne
#1920 Le 26/05/2010, à 09:17
- cm-t
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
pareil, ca m'arrive tout les soir
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#1921 Le 26/05/2010, à 11:48
- nany
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Bonjour chez vous.
>_< j'ai fais mes points ici au lieu de là bas… >_<
Bah, pour un point, ce n’est pas bien grave. D’ailleurs, @Pylade, si tu ne veux pas que samuncle te tombe dessus, quand tu seras rentré de tes partiels et avant de lancer le compteur, reprends ceci :
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)) :
En ligne
#1922 Le 26/05/2010, à 17:13
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores totaux, depuis le début :
1) 350 samuncle
2) 277 nesthib
3) 237+5 grim7reaper
3) 237 Pylade
5) 204 mathieuI
6) 170 cm-t
7) 115 helly
8) 96 ǤƦƯƝƬ
9) 76 gnuuat
10) 70 petifrancais
11) 65 tshirtman
12) 37 ilagas
13) 25 GentooUser
14) 24 pierguiard
15) 23 Ouranos999
16) 19 Le Rouge
17) 18 Ph3nix_
18) 14 Kanor
19) 12 stratoboy
19) 12 kouskous
21) 10 CROWD
21) 10 keny
23) 7 Lagierl
23) 7 sailing
25) 6 Toineo
25) 6 Mornagest
25) 6 Zeibux
28) 5 xapantu
29) 4 danychou56
29) 4 Neros
29) 4 Biaise
32) 3 Р'tite G☢gole :mad:
33) 1 ceric
33) 1 pfriedK
33) 1 geenux
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#1923 Le 26/05/2010, à 17:13
- Compteur du TdCCT
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Scores de la période en cours :
1) 350 samuncle
2) 277 nesthib
3) 237 grim7reaper
3) 237 Pylade
5) 204 mathieuI
6) 170 cm-t
7) 115 helly
8) 96 ǤƦƯƝƬ
9) 76 gnuuat
10) 70 petifrancais
11) 65 tshirtman
12) 37 ilagas
13) 25 GentooUser
14) 24 pierguiard
15) 23 Ouranos999
16) 19 Le Rouge
17) 18 Ph3nix_
18) 14 Kanor
19) 12 stratoboy
19) 12 kouskous
21) 10 CROWD
21) 10 keny
23) 7 Lagierl
23) 7 sailing
25) 6 Toineo
25) 6 Mornagest
25) 6 Zeibux
28) 5 xapantu
29) 4 danychou56
29) 4 Neros
29) 4 Biaise
32) 3 Р'tite G☢gole :mad:
33) 1 ceric
33) 1 pfriedK
33) 1 geenux
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#1924 Le 26/05/2010, à 17:18
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
D’ailleurs, @Pylade, si tu ne veux pas que samuncle te tombe dessus, quand tu seras rentré de tes partiels et avant de lancer le compteur, reprends ceci :
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)) :
Qui, que, quoi ?
Pas lu avant, c’est grave ?
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1925 Le 26/05/2010, à 17:21
- nany
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Eh ben, toujours pas finis ces partiels !
Pour la peine, deuxième version :
#!/usr/bin/env python
# encoding: utf-8
# auteur Gabriel Pettier
# license GPL V3 or later
# sert uniquement a compter les points sur ce topic :http://forum.ubuntu-fr.org/viewtopic.php?pid=938704
# et donc probablement inutile a quiquonque vu que mon serveur se charge de le lancer tous les matins
# publié a seul but de vérification par les interressés. ;), peut aussi servir si mon serveur n'est plus là
# pour assurer le service un jour.
# nécessite python 2.4 minimum, python-beautifulsoup et python-mechanize.
# le fichier '.compteur_logins' doit contenir le login du posteur sur la première ligne, et son mot de passe
# sur la deuxième (cela et seulement cela).
from BeautifulSoup import BeautifulSoup
import urllib2
import re
import time
import sys
import ClientForm
import mechanize as ClientCookie
#ignoreList = ('ArkSeth','compteur-couche-tards','fergo','pdas','Compteur_couche_tards','compteur-couche-tard') #TdCT
ignoreList = ('ArkSeth','Compteur du TdCCT','Chuck Norris','oracle_bot') #TdCCT
class Day:
"""un jour dure de 21h à 5h du matin exclu ([21h:5h[) il contient la derniere entrée (points) de ce jour pour chaque joueur"""
def __init__(self):
self.entries={}
def addEntry(self, entry):
#plus simple de faire un try except que de verifier que l'entrée existe. :/
try:
self.entries[entry.name] = max(self.entries[entry.name],entry.date.points())
except:
self.entries[entry.name] = entry.date.points()
def __str__(self):
for entry in self.entries.items():
print entry,'+',entries[entry]
def utcFrance():
return 1 + time.localtime(time.time())[-1] #1 + 1 si on est a l'heure d'été
class Date:
def __init__(self,tuple=(20,0),utc=utcFrance()):
self.h = (int(tuple[0])-utcFrance()+24+utc)%24
self.m = int(tuple[1])
def points(self):
if self.m in range(60):
if self.h in range(21,24):
return self.h - 20
if self.h in range(3):
return self.h + 4
if self.h in [3,4]:
return 10
return 0
class Entry:
def __init__(self,name='',date=Date(),edit=Date()):
self.name = name
self.date = max(date,edit)
def setName(self, name):
self.name = name
def setDate(self, date):
if date.points()>self.date.points(): self.date = date
class Score:
def __init__(self, tuple):
self.name = tuple[1]
self.num = int(tuple[0])
def __gt__(self, other):
return self.num>other.num
def __str__(self):
return '%i %s' %(self.num, self.name)
def getPage(url, entries, stat, urlscore):
# essaye jusqu'a 15 fois de récupérer la page
for i in range(15):
try:
page = BeautifulSoup(urllib2.urlopen(url))
break
except:
if i==14: raise
time.sleep(60)
print 'page récupérée, travail en cours'
for post in page.findAll('div','blockpost rowodd')+page.findAll('div','blockpost roweven'):
str_date = str(post.find('h2').find('span').find('a')).split('>')[1]
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)):
urlscore = url
try:
entry = Entry(str(post.find('div','postleft').find('a')).split('>')[1].split('<')[0])
except:
entry = Entry(str(post.find('div','postleft').find('strong')).split('>')[1].split('<')[0])
utc=utcFrance()
if str_date.split(' ')[2].split('<')[0].split(':')[0] not in stat:
stat[str_date.split(' ')[2].split('<')[0].split(':')[0]] = 1
else:
stat[str_date.split(' ')[2].split('<')[0].split(':')[0]] += 1
if 'GMT' in str(post):
try:
utc = int(str(post).split('GMT')[-1].split(' ')[0].split('<')[0])
except:
print entry.name,'-> no good GMT!'
entry.setDate(Date(str_date.split(' ')[2].split('<')[0].split(':'),utc))
if post.find('p','postedit') is not None:
try:
entry.setDate(Date(str(post.find('p','postedit').find('em')).split('à')[1][1:6].split(':'),utc))
except:
print 'error ->'+str(str(post.find('p','postedit').find('em')).split('à'))
#on ne veut pas les points des pseudos dans ignoreList
if entry.name not in ignoreList and (entry.date.points() is not 0): entries.addEntry(entry)
# erreur si le topic fait moins d'une page de long,FIXME!
#result = int(url.split('p=')[1]) < int(str(page.findAll('a')[-7]).split('p=')[1].split('"')[0]) #en espérant que le nombre de liens en bas de page ne change pas! :/
if str(page.find('p','pagelink conl')).split('conl">')[1].split('</p')[0].split(str(page.find('p','pagelink conl').find('strong'))) == ['', '']:
result = False
else:
result = int(url.split('p=')[1]) < int(str(page.find('p','pagelink conl').findAll('a')[-2]).split('p=')[1].split('"')[0])
#FIXED!
if not result:
# on vérifie si le sujet est fermé, auquel cas on renvoie le dernier lien fourni sur la page
if 'Sujet fermé' in ''.join((str(i) for i in page.findAll('p','postlink conr'))):
print str(page.findAll('div','postmsg')[-1])
result = str(page.findAll('div','postmsg')[-1].findAll('a')[-1]).split('"')[1]
return result, urlscore
def renderstats(stats):
if stats != {}:
DayStats = {'00': 0, '01': 0, '02': 0, '03': 0, '04': 0, '05': 0, '06': 0, '07': 0, '08': 0, '09': 0, '10': 0, '11': 0, '12': 0, '13': 0, '14': 0, '15': 0, '16': 0, '17': 0, '18': 0, '19': 0, '20': 0, '21': 0, '22': 0, '23': 0}
DayStats.update(stats)
HoursBar = 'h|'.join(sorted(DayStats.keys()))+'h'
HoursBar = HoursBar[20:]+'|'+HoursBar[:19]
HoursBar = HoursBar[0:len(HoursBar)-1]
HoursPie = 'h|'.join(sorted(stats.keys()))+'h'
for k in stats.keys():
HoursPie = HoursPie.replace(k+'h', k+'h%20-%20'+k+'h59')
DataBar = ','.join([str(DayStats[x]) for x in sorted(DayStats.keys())])
DataBar = ','.join(DataBar.split(',')[5:24])+','+','.join(DataBar.split(',')[0:5])
Vmax10 = str(10*(int(max([DayStats[x] for x in DayStats.keys()]))/10+1))
urlimage='[img]http://chart.apis.google.com/chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,c0c0c0&chl='+HoursPie+'&chd=t:'+','.join([str(stats[x]) for x in sorted(stats.keys())])+'&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16[/img]'
urlimage+='[img]http://chart.apis.google.com/chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,'+Vmax10+'&chxr=1,0,'+Vmax10+'&chf=b0,lg,0,803000,0,ffc080,1|bg,lg,90,d8d8d8,0,c0c0c0,0.9&chxl=0:|'+HoursBar+'h'+'&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:'+DataBar+'&chm=N,803000,0,-1,12&chtt=Nombre%20de%20posts%20par%20heure&chts=606060,16[/img]'
return urlimage
return None
def post(_file, stats, debug):
# le fichier '.compteur_logins' 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('.compteur_logins','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()
file = open('url','r')
tid = file.readline().split('=')[1][:-2] # la première ligne contenant l'adresse du topic.
file.close()
fp = ClientCookie.urlopen('http://forum.ubuntu-fr.org/post.php?tid='+tid)
forms = ClientForm.ParseResponse(fp)
fp.close()
form = forms[1]
title = (((_file == 'count') and 'Scores totaux, depuis le début ') or 'Scores de la période en cours ')
form['req_message'] = title+':[code]'
file = open(_file, 'r')
scores=file.readlines()
urlimage = renderstats(stats)
stats = {}
for i in range(len(scores)): #on veut toutes les lignes restantes
if i == 0:
tmpRange = 0
elif scores[i].split(' ')[0] == scores[i-1].split(' ')[0]:
pass
else:
tmpRange = i
#et on ajoute la ligne avec le bon rang a l'entrée
#form['req_message'] += (('Quelqu\'un' in scores[i] and '*** Vétéran des couche-tard, invaincu avant retraite ***\n') or '')+str(tmpRange+1)+') '+scores[i]+(('Quelqu\'un' in scores[i] and '******************************************************************************\n') or '') #TdCT
form['req_message'] += str(tmpRange+1)+') '+(_file == 'count' and ((('grim7reaper' in scores[i] and scores[i].replace(' ', '+5 ').split('\n')[0]+' ** bonus +5 pour avoir répondu à ce post : ./viewtopic.php?pid=3486252#p3486252 **\n')) or scores[i]) or scores[i]) #TdCCT
form['req_message'] += '[/code]'+(urlimage or '')
if debug:
print '\nmode debug : les scores ne sont pas incrémentés\n', form['req_message']
else:
fp = ClientCookie.urlopen(form.click())
fp.close()
def main(urlfile, files):
debug = True
stats = {}
f=open(urlfile,'r')
url=urlscore=f.readline().split('\n')[0]
f.close()
entries = Day()
while True:
print 'lecture de la page '+url
res = getPage(url, entries, stats, urlscore)
urlscore = res[1]
if not res[0]: break
url=url.split('p=')[0]+'p='+str(1+int(url.split('p=')[1]))
if res[0] is not True:
url = res[0]+'&p=1'
if not debug:
f=open(urlfile,'w')
f.write(urlscore+'\n')
f.close()
for file in files:
f=open(file,'r')
lines=f.readlines()
f.close()
exp = re.compile('^[0-9]+\s*')
scores = []
print '\nlecture scores courants :\n', entries.entries.items()
for line in lines:
if line not in [' ','']:
scores.append(Score([(line.split(' ')[0]),exp.split(line)[1].split('\n')[0]]))
new_scores=[]
for entry,num in entries.entries.items():
for score in scores:
if entry.lower() == score.name.lower():
score.num+=num
break
if score is scores[-1]:
new_scores.append(Score([num,entry]))
break
scores+=new_scores
# vérification des doublons
for nScore in range(len(scores)-1):
for mScore in range(nScore+1,len(scores)-1):
try:
if scores[nScore].name.lower() == scores[mScore].name.lower():
scores[nScore].num+=scores[mScore].num
del(scores[mScore])
except:
pass
scores.sort(reverse=True)
if not debug:
for score in scores:
f=open(file, 'w')
for score in scores:
f.write('%s\n'%score)
f.close()
for i in range(15):
try:
post(file, stats, debug)
stats = {}
break
except:
if i == 14: raise
time.sleep(60)
main('url',['count','count10days'])
J’ai essayé d’éclaircir le bleu autant que possible plus quelques petites modifications notamment la sauvegarde de l’url du dernier post à points (pas très utile sur ce topic mais d’avantage sur le TdCT).
@tshirtman : si tu veux récupérer ce code, tu noteras évidemment qu’il faut permuter les commentaires des lignes 25/26 et 205/206.
Dernière modification par le n@nyl@nd (Le 28/05/2010, à 16:34)
En ligne