
    +jK                        d dl mZ d dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZ dZdZdZd ZddZd Zd Zd Zd Zedk    r e             dS dS )    )annotationsN)Path)	OUTPUT_ROOTanalyze_with_nano_bananabundle_outputsensure_dirsimage_from_uploadrun_nano_banana_clean
save_image
to_overlay
write_jsonzNano Banana 2 Studiou}   Lis tout le texte visible, identifie les blocs, explique la structure de la mise en page, et prépare un clean plate précis.u   Retire tout le texte visible, les logos typographiques et les chiffres. Garde la composition, la lumière, les ombres et le fond naturels.c                     t          |           S )N)r	   )values    app.py_image_or_noner       s    U###    textobjectreturnstrc                0    t          j        | dd          S )NF   )ensure_asciiindent)jsondumps)r   s    r   _jsonr   %   s    :dq9999r   c                   t          |           }|dS t          ||          }t          ||          }t                       t	          |t
          dz            }t          t
          dz  |          }t          ||gd          }d|                    d           d|                    d	           d
t          |                    dg                      }|t          |          |t          |          fS )N)NAucune image fournie.N)user_requestzanalysis_overlay.pngzanalysis.jsonzanalysis_bundle.zip	Backend: backend | statusz
 | blocs: detected_boxes)r   r   r   r   r   r   r   r   getlenr   r   )	imageanalysis_requestimganalysisoverlayoverlay_path	json_pathbundler$   s	            r   
analyze_uir0   *   s   


C
{22':JKKKHh''GMMMg{5K'KLLL;8(CCI\957LMMF Ai00  A  AX\\(5K5K  A  AWZ[c[g[ghxz|[}[}W~W~  A  AFE(OOVS[[88r   c                   t          |           }|dS t          ||||dvrt          |          nd           \  }}}t          ||          }t	                       t          |t          dz            }	t          |t          dz            }
t          t          dz  |          }t          |	|
|gd          }|	                    d           d	| }||t          |          |t          |          fS )
N)NNr   NNN r    extra_instructionseedzclean_plate.pngzclean_overlay.pngzclean_analysis.jsonzclean_bundle.zipr"   r#   )r   r
   intr   r   r   r   r   r   r&   r   r   )r(   r)   clean_instructionr6   r*   r+   	clean_imgclean_statusr,   
clean_pathr-   r.   r/   r$   s                 r   clean_uir<   :   s   


C
{>>(=%+j00SYYYd	) ) )%Hi h''GMMMI{5F'FGGJg{5H'HIIL;)>>IIIZyACUVVFY''::L::FIuXFCCr   c                   t          |           }|dS t          ||||dvrt          |          nd           \  }}}t          ||          }t	                       t          t          dz  |          }	t          |t          dz            }
t          |t          dz            }t          |	|
|gd          }d|	                    d	           d
|	                    d           d
| }||t          |          |t          |          fS )N)NNNr   Nr2   r4   zfull_analysis.jsonzfull_clean_plate.pngzfull_overlay.pngzfull_bundle.zipr!   r"   r#   r$   )r   r
   r7   r   r   r   r   r   r   r&   r   r   )r(   r)   r8   r6   r*   r+   r9   r:   r,   analysis_pathr;   r-   r/   r$   s                 r   full_uir?   P   s   


C
{>>(=%+j00SYYYd	) ) )%Hi h''GMMM{-AA8LLMI{5K'KLLJg{5G'GHHL]JEGXYYF^i00^^X\\(5K5K^^P\^^FIuXFCCr   c            
     |   t                       t          j        t          t          j                                                  5 } t          j        d           t          j                    5  t          j        d          5  t          j	        dd          }t          j
        dt          d	
          }t          j
        dt          d
          }t          j        ddd          }t          j        dd          }t          j        dd          }t          j        dd          }d d d            n# 1 swxY w Y   t          j        d          5  t          j
        dd          }t          j        d          }	t          j                    5  t          j        d          5  t          j	        d          }
t          j        dd          }d d d            n# 1 swxY w Y   t          j        d           5  t          j	        d           }t          j        d!d          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    t(          ||g|
|||	g"           |                    t*          ||||g|
||||	g"           |                    t,          ||||g|
||||	g"           t          j        d#           d d d            n# 1 swxY w Y   |                     d$d%&           d S )'N)titlethemeuL  # Nano Banana 2 Studio
Version de départ centrée sur 2 choses: la compréhension du texte et le clean plate.

Backend attendu:
- `NANO_BANANA_API_KEY` ou `GOOGLE_API_KEY`
- modèle par défaut: `gemini-3.1-flash-image`

Si la clé manque, l'app retombe sur les heuristiques locales et ComfyUI pour garder un résultat exploitable.   )scalezImage sourcepil)labeltypeu   Consigne de compréhension   )rF   r   lineszConsigne clean plate   zSeed optionnelle*   r   )rF   r   	precisionzComprendre le texte	secondary)variantu   Générer le clean plateprimaryzFaire les deuxStatut)rF   rI   u   Télécharger le bundle)rF   u   Compréhensionu    Text overlay / zones détectéeszJSON d'analyser   )rF   languagezClean platezJSON + notes)fninputsoutputsu   ## Notes
- Nano Banana 2 correspond ici au modèle `gemini-3.1-flash-image`.
- Le clean plate peut fallback sur ComfyUI si l'API Gemini n'est pas dispo.
- On peut brancher la suite ensuite: recadrages, localisations, édition guidée par masque, etc.z0.0.0.0i  )server_nameserver_port)r   grBlocks	APP_TITLEthemesSoftMarkdownRowColumnImageTextboxDEFAULT_ANALYSIS_REQUESTDEFAULT_CLEAN_INSTRUCTIONNumberButtonFileTabsTabCodeclickr0   r<   r?   launch)demor(   r)   r8   r6   btn_analyze	btn_cleanbtn_fullr$   r/   r,   analysis_jsonclean_image
clean_jsons                 r   mainrr   f   sp   MMM	")..*:*:	;	;	; >
t
}		
 		
 		
 VXX 	T 	T### J J~EBBB#%:62$ $ $ 
 %'J03% % %!
 y'9qQQQ i(={SSSI&@)TTT	9%5yIIIJ J J J J J J J J J J J J J J" ### 	T 	T(!<<<'@AAAWYY T T 011 Y Y"$(1S"T"T"T(*6FQW(X(X(XY Y Y Y Y Y Y Y Y Y Y Y Y Y Y .. T T&(h]&C&C&C%'W>F%S%S%S
T T T T T T T T T T T T T T T	T T T T T T T T T T T T T T T	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T%	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T: 	+,fmV< 	 	
 	
 	

 	+->Ek:vvF 	 	
 	
 	

 	+->Ek:vvF 	 	
 	
 	
 	p	
 	
 	
s>
 >
 >
 >
 >
 >
 >
 >
 >
 >
 >
 >
 >
 >
 >
@ 	KKI4K88888s   (L.J B(D8,J 8D<<J ?D< J ?I)I	,,G$I	$G((I	+G(,I	,H;/I	;H??I	H?I	I)II)II)J )I--J 0I-1J 4L J	LJ	BLL!L__main__)r   r   r   r   )
__future__r   r   pathlibr   gradiorW   decliner   r   r   r   r	   r
   r   r   r   rY   ra   rb   r   r   r0   r<   r?   rr   __name__ r   r   <module>rz      sU   " " " " " "           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 #	* 
I $ $ $
: : : :
9 9 9 D D D,D D D,B9 B9 B9J zDFFFFF r   