LuisBlanche
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -1,13 +1,10 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
import numpy as np
|
3 |
-
import random
|
4 |
import re
|
5 |
-
import os
|
6 |
from io import BytesIO
|
7 |
-
|
8 |
import mechanicalsoup
|
9 |
import pandas as pd
|
10 |
import requests
|
|
|
11 |
from reportlab.lib import colors
|
12 |
from reportlab.lib.enums import TA_CENTER
|
13 |
from reportlab.lib.pagesizes import A4
|
@@ -22,10 +19,8 @@ from reportlab.platypus import (
|
|
22 |
TableStyle,
|
23 |
)
|
24 |
from unidecode import unidecode
|
25 |
-
import base64
|
26 |
-
from pdf2image import convert_from_bytes
|
27 |
-
|
28 |
|
|
|
29 |
|
30 |
|
31 |
class PDFPoster:
|
@@ -41,7 +36,7 @@ class PDFPoster:
|
|
41 |
|
42 |
def generate_poster(
|
43 |
self,
|
44 |
-
vote_list,
|
45 |
message_1: str = "Les votes de vos députés sont souvent différents de ce que les responsables de partis annoncent dans les médias. Les données de votes sont ouvertes!",
|
46 |
message_2: str = "Les 30 juin, et 7 juin, renseignez vous, et votez en connaissance de cause !",
|
47 |
):
|
@@ -163,7 +158,7 @@ class PDFPoster:
|
|
163 |
buffer = BytesIO()
|
164 |
|
165 |
buffer.seek(0)
|
166 |
-
|
167 |
return buffer
|
168 |
|
169 |
def get_deputy_votes_page(self):
|
@@ -278,9 +273,6 @@ class PDFPoster:
|
|
278 |
return party
|
279 |
|
280 |
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
css = """
|
285 |
#col-container {
|
286 |
margin: 0 auto;
|
@@ -288,35 +280,37 @@ css = """
|
|
288 |
}
|
289 |
"""
|
290 |
|
|
|
291 |
def fetch_votes(deputy_name):
|
292 |
pdfposter = PDFPoster(deputy_name)
|
293 |
votes = pdfposter.retrieve_deputy_data()
|
294 |
-
vote_list = votes[
|
295 |
-
vote_list = votes[
|
296 |
return gr.update(choices=vote_list)
|
297 |
|
|
|
298 |
def generate_poster(deputy_name, message_1, message_2, vote_list):
|
299 |
# Set default messages if not provided
|
300 |
if not message_1:
|
301 |
message_1 = "Les votes de vos députés sont souvent différents de ce que les responsables de partis annoncent dans les médias. Les données de votes sont ouvertes!"
|
302 |
if not message_2:
|
303 |
message_2 = "Les 30 juin, et 7 juillet, renseignez vous, et votez en connaissance de cause !"
|
304 |
-
|
305 |
pdfposter = PDFPoster(deputy_name)
|
306 |
pdfposter.retrieve_deputy_data()
|
307 |
pdfbuffer = pdfposter.generate_poster(vote_list, message_1, message_2)
|
308 |
-
images = convert_from_bytes(
|
309 |
|
310 |
image_paths = []
|
311 |
for i, image in enumerate(images):
|
312 |
image_path = f"./static/{deputy_name}_page_{i+1}.png"
|
313 |
image.save(image_path, "PNG")
|
314 |
image_paths.append(image_path)
|
315 |
-
|
316 |
-
return image_paths, pdf_buffer.getvalue()
|
317 |
|
318 |
-
|
|
|
319 |
|
|
|
320 |
with gr.Column(elem_id="col-container"):
|
321 |
gr.Markdown("""
|
322 |
# Réalise une affiche des votes de ton député !
|
@@ -352,16 +346,12 @@ with gr.Blocks(css=css) as demo:
|
|
352 |
images_output = gr.Gallery(label="Image")
|
353 |
pdf_output = gr.File(label="Télécharger le PDF")
|
354 |
|
355 |
-
fetch_button.click(
|
356 |
-
fn=fetch_votes,
|
357 |
-
inputs=deputy_name,
|
358 |
-
outputs=vote_list
|
359 |
-
)
|
360 |
|
361 |
generate_button.click(
|
362 |
fn=generate_poster,
|
363 |
inputs=[deputy_name, message_1, message_2, vote_list],
|
364 |
-
outputs=[images_output, pdf_output]
|
365 |
)
|
366 |
|
367 |
demo.queue().launch()
|
|
|
|
|
|
|
|
|
1 |
import re
|
|
|
2 |
from io import BytesIO
|
3 |
+
|
4 |
import mechanicalsoup
|
5 |
import pandas as pd
|
6 |
import requests
|
7 |
+
from pdf2image import convert_from_bytes
|
8 |
from reportlab.lib import colors
|
9 |
from reportlab.lib.enums import TA_CENTER
|
10 |
from reportlab.lib.pagesizes import A4
|
|
|
19 |
TableStyle,
|
20 |
)
|
21 |
from unidecode import unidecode
|
|
|
|
|
|
|
22 |
|
23 |
+
import gradio as gr
|
24 |
|
25 |
|
26 |
class PDFPoster:
|
|
|
36 |
|
37 |
def generate_poster(
|
38 |
self,
|
39 |
+
vote_list,
|
40 |
message_1: str = "Les votes de vos députés sont souvent différents de ce que les responsables de partis annoncent dans les médias. Les données de votes sont ouvertes!",
|
41 |
message_2: str = "Les 30 juin, et 7 juin, renseignez vous, et votez en connaissance de cause !",
|
42 |
):
|
|
|
158 |
buffer = BytesIO()
|
159 |
|
160 |
buffer.seek(0)
|
161 |
+
|
162 |
return buffer
|
163 |
|
164 |
def get_deputy_votes_page(self):
|
|
|
273 |
return party
|
274 |
|
275 |
|
|
|
|
|
|
|
276 |
css = """
|
277 |
#col-container {
|
278 |
margin: 0 auto;
|
|
|
280 |
}
|
281 |
"""
|
282 |
|
283 |
+
|
284 |
def fetch_votes(deputy_name):
|
285 |
pdfposter = PDFPoster(deputy_name)
|
286 |
votes = pdfposter.retrieve_deputy_data()
|
287 |
+
vote_list = votes["vote_id"].tolist()
|
288 |
+
vote_list = votes["vote_topic"].tolist()
|
289 |
return gr.update(choices=vote_list)
|
290 |
|
291 |
+
|
292 |
def generate_poster(deputy_name, message_1, message_2, vote_list):
|
293 |
# Set default messages if not provided
|
294 |
if not message_1:
|
295 |
message_1 = "Les votes de vos députés sont souvent différents de ce que les responsables de partis annoncent dans les médias. Les données de votes sont ouvertes!"
|
296 |
if not message_2:
|
297 |
message_2 = "Les 30 juin, et 7 juillet, renseignez vous, et votez en connaissance de cause !"
|
298 |
+
|
299 |
pdfposter = PDFPoster(deputy_name)
|
300 |
pdfposter.retrieve_deputy_data()
|
301 |
pdfbuffer = pdfposter.generate_poster(vote_list, message_1, message_2)
|
302 |
+
images = convert_from_bytes(pdfbuffer.getvalue())
|
303 |
|
304 |
image_paths = []
|
305 |
for i, image in enumerate(images):
|
306 |
image_path = f"./static/{deputy_name}_page_{i+1}.png"
|
307 |
image.save(image_path, "PNG")
|
308 |
image_paths.append(image_path)
|
|
|
|
|
309 |
|
310 |
+
return image_paths, pdfbuffer.getvalue()
|
311 |
+
|
312 |
|
313 |
+
with gr.Blocks(css=css) as demo:
|
314 |
with gr.Column(elem_id="col-container"):
|
315 |
gr.Markdown("""
|
316 |
# Réalise une affiche des votes de ton député !
|
|
|
346 |
images_output = gr.Gallery(label="Image")
|
347 |
pdf_output = gr.File(label="Télécharger le PDF")
|
348 |
|
349 |
+
fetch_button.click(fn=fetch_votes, inputs=deputy_name, outputs=vote_list)
|
|
|
|
|
|
|
|
|
350 |
|
351 |
generate_button.click(
|
352 |
fn=generate_poster,
|
353 |
inputs=[deputy_name, message_1, message_2, vote_list],
|
354 |
+
outputs=[images_output, pdf_output],
|
355 |
)
|
356 |
|
357 |
demo.queue().launch()
|