Aller au contenu
Forums Tennis-Classim

Yusuke118

Membre
  • Compteur de contenus

    6 696
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Yusuke118

  1. Outil de récupération du classement futur

    Je préconise de ne pas dépasser la profondeur 3. Profondeur 4 pour les petits palmares à la rigueur...
  2. Outil de récupération du classement futur

    Et pour Python 3.7.4 c'est là : https://www.python.org/ftp/python/3.7.4/
  3. Outil de récupération du classement futur

    Ah ben tiens j'aurais pas cru, je ne m'étais jamais penché sur la question. Ca explique certaines choses
  4. Outil de récupération du classement futur

    ah je savais pas qu'il y avait un terminal sous MAC qui émulait un environnement unix
  5. Outil de récupération du classement futur

    Je suis sous windows là et la plupart des classimiens sont sous Windows ou MAC. Il faut une solution qui convienne à tout le monde. sous windows faut soit récupérer la commande sous forme d'Unix-like ou bien utiliser un environnement type Cygwin ou encore une VM Linux...
  6. Outil de récupération du classement futur

    @Nicolas j'ai relancé le meme calcul en profondeur 3 via la version portée pour Python3 ( avec Python3.7.4 ) et c'est passé. Tu as corrigé le bug dans tes versions palmares.py/classement.py pour Python3 mais pas celles pour Python2 ou c'est autre chose ?
  7. Outil de récupération du classement futur

    Oui mais c'est pas pratique et pendant ce temps là tu ne vois pas ce qu'il se passe sur la console. J'ai plus vite fait de copier-coller le resultat et de le mettre manuellement dans le fichier créé par le script
  8. Outil de récupération du classement futur

    Tu l'as corrigé ou pas ? Car en python27 j'ai eu une erreur sur un calcul d'un joueur en profondeur 3 (avec un joueur du Top100 dans les palmares récupérés) qui remonte une erreur de type KeyError: u'Top' Palmarès récupérés pour 14013 joueurs Traceback (most recent call last): File "C:\Python27\palmares.py", line 634, in <module> main() File "C:\Python27\palmares.py", line 599, in main recupClassement(login, password, licence, profondeur, args.details) File "C:\Python27\palmares.py", line 538, in recupClassement profondeur - min(details_profondeur, profondeur)) File "C:\Python27\palmares.py", line 479, in classementJoueur nc, harm, s = classementJoueur(d.joueur, sexe, profondeur - 1, details_profondeur) File "C:\Python27\palmares.py", line 479, in classementJoueur nc, harm, s = classementJoueur(d.joueur, sexe, profondeur - 1, details_profondeur) File "C:\Python27\palmares.py", line 495, in classementJoueur cl, harm = calculClassement(myV, myD, sexe, joueur.classement, champ, impression) File "C:\Python27\classement.py", line 583, in calculClassement classementPropose = classementPropose1erTour( myVictoires, myClassement ) File "C:\Python27\classement.py", line 451, in classementPropose1erTour grosse = plusGrosseVictoire( myVictoires ) File "C:\Python27\classement.py", line 418, in plusGrosseVictoire sorted = sortVictoires( myVictoires ) File "C:\Python27\classement.py", line 398, in sortVictoires return sorted(myVictoires, key=lambda v: (classementNumerique[v[0]], v[2]), reverse=True) File "C:\Python27\classement.py", line 398, in <lambda> return sorted(myVictoires, key=lambda v: (classementNumerique[v[0]], v[2]), reverse=True) KeyError: u'Top'
  9. Outil de récupération du classement futur

    En fait l'année dernière j'avais prévu de le faire sur la fin août / début septembre mais comme on a changé de saison + la sortie des nouveaux classements j'ai laissé tomber. De mémoire c'est plus compliqué que ça mais je peux me tromper... Il me semble qu'il fallait modifier pas mal de fonctions afin de leur passer les arguments/variables nécessaires (remontée des données gérées par le script classement.py vers le script palmares.py ) pour pouvoir récupérer le détail du calcul et l'écrire sur la fin.
  10. Outil de récupération du classement futur

    Dans ma version, j'avais viré la variable "prenom" que j'estimais inutile pour tout intégrer à la variable "nom" : lignes 225/226 au sein de la fonction getIdentifiant : nom = matches[1] prenom = matches[2] remplacées par : nom = remove_accents(matches[1] + " " + matches[2]) et le return associé : return nom + ' ' + prenom, idu, cl, sexe devient juste : return nom, idu, cl, sexe En ayant au préalable déclaré bien sûr la fonction remove_accents en début de fichier après la déclaration des classes : def remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)]) qui nécessite la librairie unicodedata import unicodedata EDIT : J'ai aussi remplacé dans la fonction classementJoueur : print(s.encode(sys.stdout.encoding, errors='replace')) par : print(remove_accents(s)) afin de virer les accents dans les noms des adversaires affichés en fin de calcul La version de palmares.py intégrant ces modifications : ICI
  11. Outil de récupération du classement futur

    Petit bug sur la nouvelle version quand on calcule le palma d'un joueur présentant un caractère spécial dans ses nom/prénom. En fait comme à l'époque j'avais ajouté la chaine "NOM prenom" dans le nom du fichier résultat, ca génère une erreur lors de la création du fichier et on n'a pas de fichier du tout : Traceback (most recent call last): File "C:\Python27\palmares.py", line 628, in <module> main() File "C:\Python27\palmares.py", line 593, in main recupClassement(login, password, licence, profondeur, args.details) File "C:\Python27\palmares.py", line 537, in recupClassement fn = str( LICENCE ) + "_" + str( nom ) + "_p" + str( profondeur ) + ".txt" UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 8: ordinal not in range(128) L'erreur ci-dessus vient du calcul d'un joueur ayant pour prénom "Régis", il avait un nom de 6 lettres si bien que le "é" arrive en 9e position (position 8 à partir de 0) C'est pour ça que je serais d'avis de virer les caractères accentués de tous les nom/prénoms des joueurs y compris celui qu'on calcule.
  12. Outil de récupération du classement futur

    Bah tu contactes le 15/4 que tu as battu pour lui dire que son maintien dépend de toi et il sera d accord pour te payer ton dernier tournoi... ... ou pas 😆
  13. Outil de récupération du classement futur

    J'ouvre une invite DOS (cmd) en me mettant dans le répertoire python dans lequel se trouve également les scripts de l'outil et je tape la commande "palmares.py" ( cf le bout de code que j'avais copié plus haut )
  14. Outil de récupération du classement futur

    installé 2.7.16, ça change rien. J'ai contourné avec : password = args.password if args.password else getpass(str("Mot de passe : "))
  15. Outil de récupération du classement futur

    Tiens @Nicolas je n'avais pas récupéré/testé la version précédente qui permet de masquer le password. Après download des fichiers palmares.py + classement.py, ça me remonte une erreur sur l'appel de la fonction "getpass" : C:\Python27>palmares.py Identifiant : toto Traceback (most recent call last): File "C:\Python27\palmares.py", line 625, in <module> main() File "C:\Python27\palmares.py", line 569, in main password = args.password if args.password else getpass("Mot de passe : ") File "C:\Python27\lib\getpass.py", line 95, in win_getpass msvcrt.putch(c) TypeError: must be char, not unicode C:\Python27> Si par contre j'appelle la commande avec le prompt par défaut ( et non "Mot de passe : " ), ça fonctionne : password = args.password if args.password else getpass() ma version Python : 2.7.11
  16. Outil de récupération du classement futur

    Safari... tu es donc sur MAC. Je connais pas bien mais il faut voir du côté de l'application qui est lancée quand tu exécutes le script python.
  17. Outil de récupération du classement futur

    Tu as un firewall sur ton PC ? Le navigateur (Chrome/Firefox/IE) est surement autorisé à sortir sur le net mais peut-être pas l'invite de commande DOS... ( cmd.exe )
  18. Outil de récupération du classement futur

    Il ne faut pas non plus naviguer sur tenup via son navigateur en parallèle de l'exécution du script car il y aura un conflit de session le cas échéant. Mais pour les erreurd 403 (forbidden => interdit ), ça ressemble à un blocage de ton compte (trop de requêtes?) L authentification Tenup fonctionne bien via ton navigateur en test manuel ?
  19. Outil de récupération du classement futur

    A mon avis c'est plus simple de gérer l'exception dans le code pour faire en sorte d'autoriser le traitement d'un joueur anonyme. C'est juste au début du script de mémoire qu'on vérifie l'existence des nom et prénom et ensuite on utilise l'ID du joueur. Il suffirait par exemple comme variable pour le nom/prenom de mettre anonyme_<ID> et comme nom de fichier : <licence>_anonyme_<ID>_p<profondeur>.txt Edit : à partir ligne 221 du "palmares.py" ( sur ma version, je ne sais pas si j'ai pris la dernière ) dans la définition de la fonction "getIdentifiant" : if matches: sexe = matches[0] nom = matches[1] prenom = matches[2] Il suffirait de tester le caractère vide (chaine vide) des variables nom et prenom en fin de fonction et de leur affecter respectivement la chaine "anonyme" et la variable idu
  20. Outil de récupération du classement futur

    Sur la version que j ai modifié l année dernière je crois que j avais fait en sorte de virer tous les caractères accentués lors des traitements. Je n ai pas vérifié si c'est toujours le cas sur les nouvelles livraisons.
  21. Moi en hiver je les corde fraîchement et chaudement en été comme ça pas de pb 😆
  22. Outil de récupération du classement futur

    Au fait on est d'accord que ta mise à jour ne permet pas de prendre en compte le bonus de double ? Je ne sais pas si l'info était déjà présente sur tenup à l'époque mais c'est vrai qu'il apparait sur la page "Vous > Mon classement". ( url en https://tenup.fft.fr/classement/<id_joueur> ) Par contre c'est une valeur "figée" car liée au classement en vigueur et pas quelque chose qu'on peut recalculer en fonction des évolutions du classement de nos adversaires de double ( dont on ne dispose pas ) donc pas exploitable à mon sens.
  23. Outil de récupération du classement futur

    j'ai relancé le calcul en P2 sur mon numéro, ça me compte toujours le bonus championnat individuel (15 pts) pour ma victoire par WO à 15/3 Edit : C'est bon j'avais pas bien écrasé les fichiers classement.py et palmares.py Merci pour le taf
  24. Outil de récupération du classement futur

    J en profite pour signaler que le calcul m'a comptabilisé un bonus championnat individuel de 15 pts alors que j'ai une victoire en indiv par WO et une défaite. Il ne prend pas en compte le fait que ce soit une victoire par WO qui ne devrait rien rapporter.
  25. Outil de récupération du classement futur

    Merci. Je n'ai pas eu le courage de le faire sachant que l'intégration de la gestion des points de doubles me faisait peur et surtout qu'à date rien n'est vraiment facilement disponible sur tenup pour ce faire ( pas les mêmes résultats selon qu'on passe par l'appli, le web PC ou le web mobile ) Du coup j'ai testé le calcul sur mon numéro de licence en profondeur 2 et ça fonctionne par contre ça ne prend pas en compte les points de double mais c'est toujours mieux que rien J'ai testé avec ton numéro de licence en profondeur 1 et pas de souci ( calculé à 15/5 ). Pour ma part j'ai juste écrasé les fichiers classement.py et palmares.py par les nouveaux. Vu que ton message d'erreur arrive lors de la connexion au site FFT (tenup) avant le message "Récupération de l'identifiant", es-tu sûr d'avoir bien tapé tes identifiants Tenup ? le détail de ton calcul : c:\Python27>palmares.py Login : ********* Mot de passe : ***** Numero de licence : ****** Profondeur : 1 Connexion au site de la FFT Récupération de l'identifiant classement: 15/4 ******* 218*** 15/4 M Récupération de mon palmarès Récupération des palmarès des adversaires Attente des derniers palmarès Palmarès récupérés pour 26 joueurs profondeur : 1 calcul du classement de ******** ... ==> Classement proposé : 15/2 V = 12 (Nombre de victoires) [u'15/2', u'15/2'] E = 2 (Nb de défaites à échelon égal) [u'15/3'] I = 1 (Nb de défaites à échelon -1) [u'30/1', u'15/5', u'15/4', u'30', u'15/4', u'15/5', u'30/1', u'15/4', u'30'] G = 9 (Nb de défaites à échelons <= -2 et par w.o à partir du 3e) V - E - 2I - 5G : -37 Victoires prises en compte ( 8 ) : 15/3, 15/4, 15/5, 15/5, 15/5, 30, 30/1, 30/1 Bonif championnat indiv: 15 Points acquis : 110 - points nécessaires pour le maintien a 15/2 : 340 ==> Classement proposé : 15/3 V = 12 (Nombre de victoires) [u'15/3'] E = 1 (Nb de défaites à échelon égal) [u'15/4', u'15/4', u'15/4'] I = 3 (Nb de défaites à échelon -1) [u'30/1', u'15/5', u'30', u'15/5', u'30/1', u'30'] G = 6 (Nb de défaites à échelons <= -2 et par w.o à partir du 3e) V - E - 2I - 5G : -25 Victoires prises en compte ( 8 ) : 15/3, 15/4, 15/5, 15/5, 15/5, 30, 30/1, 30/1 Bonif championnat indiv: 15 Points acquis : 180 - points nécessaires pour le maintien a 15/3 : 325 ==> Classement proposé : 15/4 V = 12 (Nombre de victoires) [u'15/4', u'15/4', u'15/4'] E = 3 (Nb de défaites à échelon égal) [u'15/5', u'15/5'] I = 2 (Nb de défaites à échelon -1) [u'30/1', u'30', u'30/1', u'30'] G = 4 (Nb de défaites à échelons <= -2 et par w.o à partir du 3e) V - E - 2I - 5G : -15 Victoires prises en compte ( 8 ) : 15/3, 15/4, 15/5, 15/5, 15/5, 30, 30/1, 30/1 Bonif championnat indiv: 15 Points acquis : 305 - points nécessaires pour le maintien a 15/4 : 315 ==> Classement de sortie : 15/5 - Harmonisé : 15/5 - classement d'origine : 15/4 Nouveau classement de ******* : 15/5 (calcul) - 15/5 (harmonisation) Palmarès de ******* : [Nom] [Ancien classement] [Nouveau classement] [WO] [Coeff] === VICTOIRES === * 15/4 15/5 * 15/5 15/5 * 30/2 30/3 * 30 30/1 * 15/5 15/5 * 15/3 15/4 * 30/4 30/4 * 30 30 * 30/1 30/1 * 15/3 15/3 * 30/1 30/1 * 30 30/1 === DÉFAITES === * 30 30/1 * 15/4 15/5 * 15/3 15/3 * 15/3 15/2 * 15/4 15/4 * 15/5 30 * 15/3 15/3 WO * 15/3 15/4 * 15/1 15/1 * 15/5 15/5 * 30 30/1 * 15/5 15/4 * 15/5 30 * 15/3 15/2 nouveau classement: 15/5 (après harmonisation) - 15/5 (calculé)
×