Programme python résolu pour extraire toutes les parties .pdn d'un tournoi

Par Philippe Jeanneret – le 29/08/18 à 13h28Technique

Bonjour à tous
Je viens de réaliser un programme python qui extraie toutes les parties issue de toernooibase au format .pdn lisible sur TDam mais je suppose sur d'autres support.
La seule contrainte est de d'aller piocher pour chaque ronde le numéro wed de la première partie, connaître le kl (numéro de la série si plusieurs série) et l'Id du tournoi
Infos faciles à trouver en cliquant sur le pdn de la 1ere partie
Exemple : https://toernooibase.kndb.nl/applet/applet1pdn.php?kl=102&Id=7228&r=1&jr=19&wed=1088288&Teui=&taal=
Le wed est 1088288, l'id est 7228 et le kl est 102 (série excellence)
Le wed est à piocher 11 fois

La suite, le programme vous crée un fichier avec toutes les parties. Il faut avec un éditeur le nettoyer de deux choses : les balises html (1 manip) d'entête que l'on remplace par rien et les balises html que l'on remplace par une marque de paragraphe

Si vous êtes intéressés, faites moi signe.
Je peux ainsi, grâce aussi au travail de tous ceux qui ont rentré les parties, obtenir via toernoibase toutes les parties sans cliquer sur chaque.
Temps nécessaire pour une série : 5 minutes

écrivez moi sur lejeudedameslemag@gmail.com en précisant le sujet "programme pdn python". je ferai un envoi groupé avec les explications complémentaires.
A bientôt
Philippe Jeanneret

Réponses (7)

Par Stéphane – le 29/08/18 à 22h23

Bonjour Philippe, et merci pour ce travail !
Je n'ai pas vu le programme mais tu parles de deux manips à faire (en-tête et balises à supprimer) : le programme python ne pourrait-il pas s'en charger lui-même ?

Stéphane

Par Philippe Jeanneret – le 29/08/18 à 22h45

Bonsoir Stéphane.
Possible sûrement. Mais l'investissement en temps ne le mérite pas. La manipulation finale est très rapide.
Le programme pourra être amélioré par moi ou d'autres. Pour l'instant, je ne m'y suis pas plus penché. Le programme me convient parfaitement

Par Philippe Jeanneret – le 29/08/18 à 23h26

Le programme (mais pour les explications et la procédure le mail est mieux):

import urllib
import os
os.chdir("/home/philippe/Documents/dames")

pdn=''
listeWedPremierePartie=[]
import urllib.request

nomFichierPdn=input('Quel fichier voulez vous créer. Indiquer un nom explicite avec extension .pdn')

nbRondes=int(input('Indiquer le nombre de rondes : '))
id=input("quel est l'ID du tournoi : ")
kl=input("quel est le numéro kl (serie) du tournoi : ")
nbJoueurs=int(input('Indiquer le nombre de joueur de la série'))

for ronde in range(nbRondes):
wed=int(input('donner le numéro wed 1ere partie ronde'+str(ronde+1)+' : ' ))
listeWedPremierePartie.append(wed)


print ( listeWedPremierePartie)


for ronde in range (nbRondes):
for i in range(nbJoueurs):
url ='https://toernooibase.kndb.nl/applet/applet1pdn.php?kl='+kl+'&Id='+id+'&r='+str(ronde+1)+'&jr=19&wed='+str( listeWedPremierePartie[ronde]+i)+'&Teui=&taal='
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
page_pdn = response.read()
pdn += page_pdn.decode('utf8')


fichier=open(nomFichierPdn,'w')
fichier.write(pdn)
fichier.close()

Par Philippe Jeanneret – le 29/08/18 à 23h28

Attention, le programme précedent ne fonctionnera pas par un simple copié collé.
En python, il y a des indentations nécessaires qui ne sont pas passée ici par le copié collé.
Les programmeurs comprendront. Les autres risquent de ne pas s'y retrouver.
Le mieux encore une fois est d'avoir le programme par courriel avec les instructions complémentaires.

Par Stéphane – le 30/08/18 à 16h08

Salut Philippe,

Je t'ai envoyé un mail avec une extraction des en-têtes et des balises

a+

Par Philippe Jeanneret – le 31/08/18 à 18h47

Franchement ce petit programme python est une petite révolution. Il a été amélioré (partie nettoyage du fichier) et le résultat donne un fichier directement exploitable, en particulier sur TDAM. Fini le clic sur chaque partie. Un tournoi en 5 minutes avec ces 400 parties.

Par Philippe Jeanneret – le 31/08/18 à 18h47

j'oubliais, la partie consacrée au nettoyage a été réalisée par Stéphane Garel.