cave/chaineTV.py

105 lines
2.7 KiB
Python
Raw Normal View History

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()