Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ccb5b80d6d |
230
chaineTV.py
230
chaineTV.py
@ -8,21 +8,14 @@ import re
|
|||||||
import io
|
import io
|
||||||
from PIL import ImageTk
|
from PIL import ImageTk
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from kivy.app import App
|
from tkinter import Label,Button,Frame,Tk,Entry,StringVar,LEFT,RIGHT,Scrollbar,VERTICAL,Canvas,Y,BOTH,NW
|
||||||
from kivy.app import ObjectProperty
|
|
||||||
from kivy.uix.widget import Widget
|
|
||||||
from kivy.uix.label import Label
|
|
||||||
from kivy.uix.button import Button
|
|
||||||
from kivy.uix.image import Image
|
|
||||||
from kivy.uix.textinput import TextInput
|
|
||||||
from kivy.uix.boxlayout import BoxLayout
|
|
||||||
from kivy.graphics import Color,Rectangle
|
|
||||||
|
|
||||||
|
|
||||||
class Labbelink (Label):
|
class Labbelink (Label):
|
||||||
|
|
||||||
def __init__(self,text,link):
|
def __init__(self,parent,text,link):
|
||||||
Label.__init__(self,text=text,fg="blue",cursor="hand2")
|
Label.__init__(self,parent,text=text,fg="blue",cursor="hand2")
|
||||||
self.link=link
|
self.link=link
|
||||||
self.bind("<Button-1>",self._openlink)
|
self.bind("<Button-1>",self._openlink)
|
||||||
|
|
||||||
@ -33,120 +26,146 @@ class LabelImage(Label):
|
|||||||
|
|
||||||
def __init__(self,parent,url):
|
def __init__(self,parent,url):
|
||||||
raw_data = urllib.request.urlopen(url).read()
|
raw_data = urllib.request.urlopen(url).read()
|
||||||
imagetoinsert=Image(file=io.BytesIO(raw_data))
|
imagetoinsert=ImageTk.PhotoImage(file=io.BytesIO(raw_data))
|
||||||
Label.__init__(self,image=imagetoinsert)
|
Label.__init__(self,parent,image=imagetoinsert)
|
||||||
self.image = imagetoinsert
|
self.image = imagetoinsert
|
||||||
|
|
||||||
|
|
||||||
|
class ScrollableCanvas(Frame):
|
||||||
|
def __init__(self, parent, *args, **kw):
|
||||||
|
Frame.__init__(self, parent, *args, **kw)
|
||||||
|
|
||||||
|
self.canvas=canvas=Canvas(self,width=300,height=300,scrollregion=(0,0,500,500))
|
||||||
|
|
||||||
|
vbar=Scrollbar(self,orient=VERTICAL)
|
||||||
|
vbar.pack(side=RIGHT, fill=Y)
|
||||||
|
vbar.config(command=canvas.yview)
|
||||||
|
|
||||||
|
canvas.config(width=200,height=200)
|
||||||
|
canvas.config(yscrollcommand=vbar.set)
|
||||||
|
canvas.pack(side=LEFT,expand=True,fill=BOTH)
|
||||||
|
|
||||||
|
# create a frame inside the canvas which will be scrolled with it
|
||||||
|
self.interior = interior = Frame(canvas)
|
||||||
|
interior_id = canvas.create_window(0, 0, window=interior, anchor=NW )
|
||||||
|
# track changes to the canvas and frame width and sync them,
|
||||||
|
# also updating the scrollbar
|
||||||
|
def _configure_interior(event):
|
||||||
|
# update the scrollbars to match the size of the inner frame
|
||||||
|
size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
|
||||||
|
canvas.config(scrollregion="0 0 %s %s" % size)
|
||||||
|
if interior.winfo_reqwidth() != canvas.winfo_width():
|
||||||
|
# update the canvas's width to fit the inner frame
|
||||||
|
canvas.config(width=interior.winfo_reqwidth())
|
||||||
|
interior.bind('<Configure>', _configure_interior)
|
||||||
|
|
||||||
|
def _configure_canvas(event):
|
||||||
|
if interior.winfo_reqwidth() != canvas.winfo_width():
|
||||||
|
# update the inner frame's width to fill the canvas
|
||||||
|
canvas.itemconfigure(interior_id, width=canvas.winfo_width())
|
||||||
|
canvas.bind('<Configure>', _configure_canvas)
|
||||||
|
|
||||||
|
def _MouseWhell(event):
|
||||||
|
print (event.delta/120)
|
||||||
|
canvas.yview_scroll(-1*(event.delta/120), "units")
|
||||||
|
self.bind("<MouseWheel>",_MouseWhell)
|
||||||
|
|
||||||
|
|
||||||
class emmisionGUI(BoxLayout):
|
|
||||||
|
class emmisionGUI(Frame):
|
||||||
def __init__(self,parent,**kwarg):
|
def __init__(self,parent,**kwarg):
|
||||||
BoxLayout.__init__(self)
|
Frame.__init__(self,parent)
|
||||||
self.image=LabelImage(self,kwarg['img'])
|
self.image=LabelImage(self,kwarg['img'])
|
||||||
self.image.pack()
|
self.image.pack()
|
||||||
self.LabelTitle=Labbelink(("emmision ce soir: "+kwarg["title"]),kwarg['href'])
|
self.LabelTitle=Labbelink(self,("emmision ce soir: "+kwarg["title"]),kwarg['href'])
|
||||||
self.LabelTitle.pack()
|
self.LabelTitle.pack()
|
||||||
if len(kwarg['casting']) > 0:
|
if len(kwarg['casting']) > 0:
|
||||||
self.LabelReal=Label(text="réalisateur: "+kwarg['casting'][0])
|
self.LabelReal=Label(self,text="réalisateur: "+kwarg['casting'][0])
|
||||||
self.LabelReal.pack()
|
self.LabelReal.pack()
|
||||||
self.labelCasting=Label(text="acteur: "+str(kwarg['casting'][1:]))
|
self.labelCasting=Label(self,text="acteur: "+str(kwarg['casting'][1:]))
|
||||||
self.labelCasting.pack()
|
self.labelCasting.pack()
|
||||||
self.LabelSynopsys=Label(text="synopsys: " +kwarg['synopsis'],wraplength=350)
|
self.LabelSynopsys=Label(self,text="synopsys: " +kwarg['synopsis'],wraplength=350)
|
||||||
self.LabelSynopsys.pack()
|
self.LabelSynopsys.pack()
|
||||||
|
|
||||||
|
|
||||||
class RootWidget(BoxLayout):
|
class Interface:
|
||||||
txt_inpt = ObjectProperty(None)
|
|
||||||
|
|
||||||
class InterfaceApp(App):
|
|
||||||
def __init__(self,data):
|
def __init__(self,data):
|
||||||
App.__init__(self)
|
self.data = data
|
||||||
self.data=data
|
self.fenetre = Tk()
|
||||||
def build(self):
|
self.fenetre.title("recherche de chaine")
|
||||||
return RootWidget()
|
self.value = StringVar()
|
||||||
|
self.label = Label(self.fenetre, text="entrer numero de chaine")
|
||||||
|
self.entree = Entry(self.fenetre, textvariable=self.value, width=30)
|
||||||
|
self.frame = Frame(self.fenetre)
|
||||||
|
self.resultframe = ScrollableCanvas(self.fenetre)
|
||||||
|
self.bouton_update_base = Button(self.fenetre, text="update la base de chaine", command=self.click_update)
|
||||||
|
self.bouton = Button(self.frame, text="OK", command=self.click)
|
||||||
|
self.reset = Button(self.frame, text="reset", command=self.click_reset)
|
||||||
|
self.label.pack()
|
||||||
|
self.entree.pack()
|
||||||
|
self.entree.focus_set()
|
||||||
|
self.resultframe.pack(expand=1,fill='both')
|
||||||
|
self.frame.pack()
|
||||||
|
self.bouton.pack(side=LEFT)
|
||||||
|
self.reset.pack(side=RIGHT)
|
||||||
|
self.bouton_update_base.pack()
|
||||||
|
self.fenetre.bind("<Key-Return>", self.enter)
|
||||||
|
self.fenetre.bind("<Key-Escape>", self.eventreset)
|
||||||
|
|
||||||
|
|
||||||
|
def enter(self,evt):
|
||||||
|
self.click()
|
||||||
|
|
||||||
|
def eventreset(self,evt):
|
||||||
|
self.click_reset()
|
||||||
|
|
||||||
|
def mainloop(self):
|
||||||
|
self.fenetre.mainloop()
|
||||||
|
|
||||||
|
def click(self):
|
||||||
|
print(self.value.get())
|
||||||
|
Arrayvalue=self.value.get().split(" ")
|
||||||
|
for value in Arrayvalue:
|
||||||
|
|
||||||
|
|
||||||
#
|
try:
|
||||||
#class Interface:
|
strlink=geturlprogrammetv(self.data.get_chaine(value))
|
||||||
#
|
link= Labbelink(self.resultframe.interior,self.data.get_chaine(value),strlink)
|
||||||
# def __init__(self,data):
|
link.pack()
|
||||||
# self.data = data
|
self.resultframe.update()
|
||||||
# self.fenetre = Tk()
|
print(self.data.get_chaine(value))
|
||||||
# self.fenetre.title("recherche de chaine")
|
emision=parse_emmission(strlink)
|
||||||
# self.value = StringVar()
|
if emision:
|
||||||
# self.label = Label(self.fenetre, text="entrer numero de chaine")
|
if emision == "can't find show":
|
||||||
# self.entree = Entry(self.fenetre, textvariable=self.value, width=30)
|
Label(self.resultframe.interior,text="impssible de parser cette chaine").pack()
|
||||||
# self.frame = Frame(self.fenetre)
|
else:
|
||||||
# self.resultframe = ScrollableCanvas(self.fenetre)
|
emmisionGUI(self.resultframe.interior,**emision).pack()
|
||||||
# self.bouton_update_base = Button(self.fenetre, text="update la base de chaine", command=self.click_update)
|
else:
|
||||||
# self.bouton = Button(self.frame, text="OK", command=self.click)
|
Label(self.resultframe.interior,text="pas de connection internet impossible de determiner l'émission du soir").pack()
|
||||||
# self.reset = Button(self.frame, text="reset", command=self.click_reset)
|
|
||||||
# self.label.pack()
|
|
||||||
# self.entree.pack()
|
except KeyError:
|
||||||
# self.entree.focus_set()
|
print("numero de chaine inconnue")
|
||||||
# self.resultframe.pack(expand=1,fill='both')
|
unknow=Label(self.resultframe.interior, text="numero de chaine inconnue")
|
||||||
# self.frame.pack()
|
unknow.pack()
|
||||||
# self.bouton.pack(side=LEFT)
|
self.resultframe.canvas.yview_moveto(1)
|
||||||
# self.reset.pack(side=RIGHT)
|
|
||||||
# self.bouton_update_base.pack()
|
self.value.set("")
|
||||||
# self.fenetre.bind("<Key-Return>", self.enter)
|
|
||||||
# self.fenetre.bind("<Key-Escape>", self.eventreset)
|
def click_reset(self):
|
||||||
#
|
print("reset")
|
||||||
#
|
for child in self.resultframe.interior.winfo_children():
|
||||||
# def enter(self,evt):
|
child.destroy()
|
||||||
# self.click()
|
|
||||||
#
|
|
||||||
# def eventreset(self,evt):
|
def click_update(self):
|
||||||
# self.click_reset()
|
self.data.parsechaine()
|
||||||
#
|
labelupdate = Label(self.resultframe.interior, text="update chaine done"+"\r")
|
||||||
# def mainloop(self):
|
labelupdate.pack()
|
||||||
# self.fenetre.mainloop()
|
|
||||||
#
|
def _openlink(self,link):
|
||||||
# def click(self):
|
webbrowser.open_new(link)
|
||||||
# print(self.value.get())
|
|
||||||
# Arrayvalue=self.value.get().split(" ")
|
|
||||||
# for value in Arrayvalue:
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# try:
|
|
||||||
# strlink=geturlprogrammetv(self.data.get_chaine(value))
|
|
||||||
# link= Labbelink(self.resultframe.interior,self.data.get_chaine(value),strlink)
|
|
||||||
# link.pack()
|
|
||||||
# self.resultframe.update()
|
|
||||||
# print(self.data.get_chaine(value))
|
|
||||||
# emision=parse_emmission(strlink)
|
|
||||||
# if emision:
|
|
||||||
# if emision == "can't find show":
|
|
||||||
# Label(self.resultframe.interior,text="impssible de parser cette chaine").pack()
|
|
||||||
# else:
|
|
||||||
# emmisionGUI(self.resultframe.interior,**emision).pack()
|
|
||||||
# else:
|
|
||||||
# Label(self.resultframe.interior,text="pas de connection internet impossible de determiner l'émission du soir").pack()
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# except KeyError:
|
|
||||||
# print("numero de chaine inconnue")
|
|
||||||
# unknow=Label(self.resultframe.interior, text="numero de chaine inconnue")
|
|
||||||
# unknow.pack()
|
|
||||||
#
|
|
||||||
# self.value.set("")
|
|
||||||
#
|
|
||||||
# def click_reset(self):
|
|
||||||
# print("reset")
|
|
||||||
# for child in self.resultframe.interior.winfo_children():
|
|
||||||
# child.destroy()
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# def click_update(self):
|
|
||||||
# self.data.parsechaine()
|
|
||||||
# labelupdate = Label(self.resultframe.interior, text="update chaine done"+"\r")
|
|
||||||
# labelupdate.pack()
|
|
||||||
#
|
|
||||||
# def _openlink(self,link):
|
|
||||||
# webbrowser.open_new(link)
|
|
||||||
|
|
||||||
|
|
||||||
class JSONfile:
|
class JSONfile:
|
||||||
@ -274,5 +293,4 @@ if len(sys.argv) > 1:
|
|||||||
else:
|
else:
|
||||||
cli(arg,data.data)
|
cli(arg,data.data)
|
||||||
else:
|
else:
|
||||||
interface=InterfaceApp(data)
|
Interface(data).mainloop()
|
||||||
interface.run()
|
|
22
interface.kv
22
interface.kv
@ -1,22 +0,0 @@
|
|||||||
#:kivy!
|
|
||||||
<RootWidget>:
|
|
||||||
txt_inpt: txt_inpt
|
|
||||||
orientation:"vertical"
|
|
||||||
canvas.before:
|
|
||||||
Color:
|
|
||||||
rgba: 1, 1, 1, 1
|
|
||||||
Rectangle:
|
|
||||||
pos: self.pos
|
|
||||||
size: self.size
|
|
||||||
Label:
|
|
||||||
text:"entrer numéros de chaine"
|
|
||||||
color:0,0,0,1
|
|
||||||
|
|
||||||
TextInput:
|
|
||||||
id: txt_inpt
|
|
||||||
row:1
|
|
||||||
multiline:False
|
|
||||||
focus:True
|
|
||||||
Label:
|
|
||||||
text: txt_inpt.text
|
|
||||||
color:0,0,0,1
|
|
Loading…
Reference in New Issue
Block a user