You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.8 KiB
Python

7 months ago
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Rectangle
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.core.window import Window
from kivymd.app import MDApp
from kivymd.uix.button import MDRectangleFlatButton
import requests, json, os, random
# API key
api_key="A RECUPERER DU SERVEUR API"
class MainApp(MDApp):
def build(self):
return MainWidget()
# class widget
class MainWidget(BoxLayout):
def __init__(self, **kwargs):
super(MainWidget, self).__init__(orientation='vertical', **kwargs)
self.cols = 1
# citation
self.quote_label = Label(text="", font_size='20sp')
self.load_citation()
self.add_widget(self.quote_label)
# bouton
#button = Button(text='Recharger', size_hint=(None, None), size=(300, 100), pos_hint={'center_x': 0.5, 'center_y': 0.1})
button = MDRectangleFlatButton(text='Recharger', size_hint=(None, None), size=(300, 100), pos_hint={'center_x': 0.5, 'center_y': 0.1}, line_color="white", text_color="white")
button.bind(on_press=self.load_citation)
self.add_widget(button)
# espace en dessous le bouton
empty_label = Label(size_hint=(None, None), size=(1, 50))
self.add_widget(empty_label)
# for button
def load_citation(self, instance=None):
quote = get_citation()
auteur = quote[1]
citation = split_string(quote[0], 40)
self.quote_label.text = citation + "\n\n -- " + auteur
background_images = [f for f in os.listdir('./assets/img/') if f.endswith(('.png'))]
if background_images:
random_image = random.choice(background_images)
self.canvas.before.children[1].source = os.path.join('./assets/img/', random_image)
# fonction pour récupérer la citation de l'API
def get_citation():
api_url = "https://citations.gregandev.fr/api/citations/random"
try:
headers = {
"API-Key": api_key
}
response = requests.get(api_url, headers=headers)
datas = json.loads(response.text)
zen_quote = [datas["citations"]["citation"], datas["citations"]["auteur"]]
# print(zen_quote[0])
return zen_quote
except Exception as e:
print(f"Erreur lors de la requête API : {e}")
return "pb"
# fonction pour mettre en forme le texte
def split_string(input_string, chunk_size):
result = []
while input_string:
index = min(chunk_size, len(input_string))
while index < len(input_string) and input_string[index] != ' ':
index += 1
result.append(input_string[:index])
input_string = input_string[index:].lstrip()
return "\n".join(result)
# main
if __name__ == '__main__':
app = MainApp()
app.run()