LuisBlanche commited on
Commit
29f3572
·
verified ·
1 Parent(s): 3678058

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -26
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
- import shutil
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['vote_id'].tolist()
295
- vote_list = votes['vote_topic'].tolist()
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(pdf_buffer.getvalue())
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
- with gr.Blocks(css=css) as demo:
 
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()