Docfile commited on
Commit
02ffc87
·
verified ·
1 Parent(s): d34dbb1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -13
app.py CHANGED
@@ -618,7 +618,7 @@ def send_document_to_telegram(content_or_path, filename="reponse.txt", caption="
618
  return False
619
 
620
  # --- Background Image Processing ---
621
- def process_image_background(task_id, image_data):
622
  """Traite l'image, génère LaTeX, convertit en PDF (si possible), et envoie via Telegram."""
623
  pdf_file_to_clean = None
624
  try:
@@ -629,23 +629,26 @@ def process_image_background(task_id, image_data):
629
 
630
  img = Image.open(io.BytesIO(image_data))
631
  buffered = io.BytesIO()
632
- img.save(buffered, format="PNG") # Gemini prefers PNG or JPEG
633
  img_base64_str = base64.b64encode(buffered.getvalue()).decode()
634
 
635
  full_latex_response = ""
636
 
637
  try:
638
  task_results[task_id]['status'] = 'generating_latex'
639
- print(f"Task {task_id}: Génération LaTeX par Gemini...")
 
 
 
 
 
 
640
 
641
- # User's original model: "gemini-2.5-pro-exp-03-25"
642
- # Using "gemini-1.5-pro-latest" as a robust alternative. User can change if needed.
643
- # The user's original Gemini call structure:
644
  gemini_response = client.models.generate_content(
645
  model="gemini-2.5-flash-preview-04-17",
646
  contents=[
647
  {'inline_data': {'mime_type': 'image/png', 'data': img_base64_str}},
648
- ppmqth
649
  ],)
650
 
651
 
@@ -740,7 +743,7 @@ def index():
740
  def free():
741
  return render_template('free.html')
742
 
743
-
744
  @app.route('/solve', methods=['POST'])
745
  def solve():
746
  try:
@@ -751,33 +754,41 @@ def solve():
751
  if image_file.filename == '':
752
  return jsonify({'error': 'Aucun fichier sélectionné'}), 400
753
 
 
 
 
 
754
  image_data = image_file.read()
755
 
756
- # Envoyer l'image à Telegram (confirmation d'upload)
757
- send_to_telegram(image_data, f"Nouvelle image pour résolution (Tâche à venir)")
758
 
759
  task_id = str(uuid.uuid4())
760
  task_results[task_id] = {
761
  'status': 'pending',
762
  'response': '',
763
  'error': None,
764
- 'time_started': time.time()
 
765
  }
766
 
767
  threading.Thread(
768
  target=process_image_background,
769
- args=(task_id, image_data)
770
  ).start()
771
 
772
  return jsonify({
773
  'task_id': task_id,
774
- 'status': 'pending'
 
775
  })
776
 
777
  except Exception as e:
778
  print(f"Exception lors de la création de la tâche: {e}")
779
  return jsonify({'error': f'Une erreur serveur est survenue: {str(e)}'}), 500
780
 
 
 
781
  @app.route('/task/<task_id>', methods=['GET'])
782
  def get_task_status(task_id):
783
  if task_id not in task_results:
 
618
  return False
619
 
620
  # --- Background Image Processing ---
621
+ def process_image_background(task_id, image_data, resolution_style='colorful'):
622
  """Traite l'image, génère LaTeX, convertit en PDF (si possible), et envoie via Telegram."""
623
  pdf_file_to_clean = None
624
  try:
 
629
 
630
  img = Image.open(io.BytesIO(image_data))
631
  buffered = io.BytesIO()
632
+ img.save(buffered, format="PNG")
633
  img_base64_str = base64.b64encode(buffered.getvalue()).decode()
634
 
635
  full_latex_response = ""
636
 
637
  try:
638
  task_results[task_id]['status'] = 'generating_latex'
639
+ print(f"Task {task_id}: Génération LaTeX par Gemini (style: {resolution_style})...")
640
+
641
+ # Choisir le prompt selon le style
642
+ if resolution_style == 'light':
643
+ prompt_to_use = ppmqth_light # Vous devrez créer cette variable
644
+ else: # colorful par défaut
645
+ prompt_to_use = ppmqth
646
 
 
 
 
647
  gemini_response = client.models.generate_content(
648
  model="gemini-2.5-flash-preview-04-17",
649
  contents=[
650
  {'inline_data': {'mime_type': 'image/png', 'data': img_base64_str}},
651
+ prompt_to_use
652
  ],)
653
 
654
 
 
743
  def free():
744
  return render_template('free.html')
745
 
746
+
747
  @app.route('/solve', methods=['POST'])
748
  def solve():
749
  try:
 
754
  if image_file.filename == '':
755
  return jsonify({'error': 'Aucun fichier sélectionné'}), 400
756
 
757
+ # Récupérer le style de résolution
758
+ resolution_style = request.form.get('style', 'colorful') # 'colorful' par défaut
759
+ print(f"Style de résolution sélectionné: {resolution_style}")
760
+
761
  image_data = image_file.read()
762
 
763
+ # Envoyer l'image à Telegram avec info du style
764
+ send_to_telegram(image_data, f"Nouvelle image pour résolution (Style: {resolution_style})")
765
 
766
  task_id = str(uuid.uuid4())
767
  task_results[task_id] = {
768
  'status': 'pending',
769
  'response': '',
770
  'error': None,
771
+ 'time_started': time.time(),
772
+ 'style': resolution_style # Stocker le style pour référence
773
  }
774
 
775
  threading.Thread(
776
  target=process_image_background,
777
+ args=(task_id, image_data, resolution_style) # Passer le style
778
  ).start()
779
 
780
  return jsonify({
781
  'task_id': task_id,
782
+ 'status': 'pending',
783
+ 'style': resolution_style
784
  })
785
 
786
  except Exception as e:
787
  print(f"Exception lors de la création de la tâche: {e}")
788
  return jsonify({'error': f'Une erreur serveur est survenue: {str(e)}'}), 500
789
 
790
+
791
+
792
  @app.route('/task/<task_id>', methods=['GET'])
793
  def get_task_status(task_id):
794
  if task_id not in task_results: