2018-01-21 20:15:24 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from tkinter import *
|
2018-01-22 18:11:29 +00:00
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
import urllib.request
|
|
|
|
import json
|
2018-01-22 19:33:40 +00:00
|
|
|
import sys
|
2018-01-21 20:15:24 +00:00
|
|
|
|
|
|
|
def click ():
|
2018-01-22 18:11:29 +00:00
|
|
|
print (value.get())
|
|
|
|
try:
|
|
|
|
label2["text"]+=data[value.get()]+"\r"
|
2018-01-22 19:33:40 +00:00
|
|
|
print(data[value.get()])
|
2018-01-22 18:11:29 +00:00
|
|
|
except KeyError:
|
2018-01-22 19:33:40 +00:00
|
|
|
print ("numero de chaine inconnue")
|
2018-01-22 18:11:29 +00:00
|
|
|
label2["text"]+="numero de chaine inconnue"+"\r"
|
|
|
|
|
2018-01-21 20:15:24 +00:00
|
|
|
|
|
|
|
def click_reset ():
|
|
|
|
print ("exit")
|
|
|
|
fenetre.quit
|
|
|
|
label2["text"]=""
|
|
|
|
fenetre.mainloop
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-01-22 18:11:29 +00:00
|
|
|
def load_jsonfile(file):
|
|
|
|
with open(file, 'r', encoding='utf-8') as f:
|
|
|
|
return json.load(f)
|
|
|
|
|
2018-01-22 19:33:40 +00:00
|
|
|
def RepresentsInt(s):
|
|
|
|
try:
|
|
|
|
int(s)
|
|
|
|
return True
|
|
|
|
except ValueError:
|
|
|
|
return False
|
|
|
|
except TypeError:
|
|
|
|
return False
|
|
|
|
def parsechaine():
|
|
|
|
URL='https://fr.wikipedia.org/wiki/Liste_des_cha%C3%AEnes_de_Canal'
|
|
|
|
liste_chaine={}
|
|
|
|
response = urllib.request.urlopen(URL)
|
|
|
|
html = response.read()
|
|
|
|
parse=BeautifulSoup(html,"html.parser")
|
|
|
|
for item in parse.find_all('table'):
|
|
|
|
if (item.get("class") == ['wikitable'] or item.get("class") == ['wikitable', 'sortable'] ):
|
|
|
|
for tr in item.find_all('tr'):
|
|
|
|
|
|
|
|
firstTD=tr.find()
|
|
|
|
num=firstTD.string
|
|
|
|
if RepresentsInt(num):
|
|
|
|
#print (num)
|
|
|
|
if RepresentsInt(firstTD.find_next().string):
|
|
|
|
#print (firstTD.find_next().find_next().string)
|
|
|
|
liste_chaine[num]=firstTD.find_next().find_next().string
|
|
|
|
else:
|
|
|
|
#print (firstTD.find_next().string)
|
|
|
|
liste_chaine[num]=firstTD.find_next().string
|
|
|
|
print(json.dumps(liste_chaine, indent=4))
|
|
|
|
with open('chaine.json', 'w', encoding='utf-8') as f:
|
|
|
|
json.dump(liste_chaine, f, indent=4)
|
|
|
|
data=load_jsonfile('chaine.json')
|
|
|
|
label2["text"]+="update chaine done"+"\r"
|
|
|
|
|
|
|
|
def enter(evt):
|
|
|
|
click()
|
|
|
|
|
|
|
|
|
2018-01-22 18:11:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
data=load_jsonfile('chaine.json')
|
2018-01-21 20:15:24 +00:00
|
|
|
fenetre = Tk()
|
|
|
|
value = StringVar()
|
2018-01-22 19:42:03 +00:00
|
|
|
|
|
|
|
if(len(sys.argv)>1):
|
2018-01-22 19:33:40 +00:00
|
|
|
arg=True
|
2018-01-22 19:42:03 +00:00
|
|
|
else:
|
2018-01-22 19:33:40 +00:00
|
|
|
value.set("")
|
|
|
|
arg=False
|
|
|
|
|
2018-01-22 18:11:29 +00:00
|
|
|
label=Label(fenetre,text="entrer numero de chaine")
|
2018-01-21 20:15:24 +00:00
|
|
|
entree = Entry(fenetre, textvariable=value, width=30)
|
|
|
|
frame =Frame(fenetre)
|
|
|
|
label2=Label(fenetre, text="")
|
2018-01-22 19:33:40 +00:00
|
|
|
bouton_update_base= Button(fenetre,text="update la base de chaine",command=parsechaine)
|
2018-01-21 20:15:24 +00:00
|
|
|
bouton=Button(frame, text="OK", command=click)
|
|
|
|
reset=Button(frame, text="reset",command=click_reset)
|
|
|
|
|
|
|
|
label.pack()
|
|
|
|
entree.pack()
|
2018-01-22 19:33:40 +00:00
|
|
|
entree.focus_set()
|
2018-01-21 20:15:24 +00:00
|
|
|
frame.pack()
|
|
|
|
bouton.pack(side = LEFT)
|
|
|
|
reset.pack(side = RIGHT)
|
|
|
|
label2.pack()
|
2018-01-22 19:33:40 +00:00
|
|
|
bouton_update_base.pack()
|
|
|
|
fenetre.bind("<Key-Return>",enter)
|
|
|
|
if (arg==True):
|
2018-01-22 19:42:03 +00:00
|
|
|
for i in sys.argv[1:]:
|
|
|
|
value.set(i)
|
|
|
|
click()
|
|
|
|
value.set("")
|
2018-01-22 19:33:40 +00:00
|
|
|
|
2018-01-21 20:15:24 +00:00
|
|
|
fenetre.mainloop()
|