
    Wj,              	           d Z ddlZddlZddlZddlZddlmZ dZ ee      j                  dz  Z
dZddd	d
dddddZdedefdZddedededz  fdZdededefdZdedededz  fdZy)u   
Módulo de música automática via ccMixter (Creative Commons)
Claude analisa o conteúdo do vídeo → define mood → ccMixter retorna trilha MP3 gratuita
    N)Pathzl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tempzhttp://ccmixter.org/api/queryzupbeat,instrumentalzinspiring,instrumentalzcorporate,instrumentalz!energetic,electronic,instrumentalzambient,calm,instrumentalzcinematic,instrumentalzhappy,upbeat,instrumentalz#motivational,inspiring,instrumental)upbeat	inspiring	corporate	energeticcalmdramatichappymotivationaltexto_transcricaoreturnc                 P   | j                         syt        j                  t              }d| dd  d}	 |j                  j                  ddd	|d
g      }|j                  d   j                  j                         j                         }|t        v r|S dS # t        $ r Y yw xY w)u   
    Claude analisa a transcrição e retorna o mood ideal para a trilha sonora.
    Retorna um dos: upbeat, inspiring, corporate, energetic, calm, dramatic, happy, motivational
    r   )api_keyu   Analise o texto abaixo (transcrição de um vídeo para Instagram) e escolha o mood ideal para a trilha sonora de fundo.

Texto: Ni  u  

Responda com UMA PALAVRA apenas, escolhendo entre:
upbeat, inspiring, corporate, energetic, calm, dramatic, happy, motivational

Considere:
- Conteúdo motivacional/empreendedorismo = inspiring ou motivational
- Conteúdo de IA/tecnologia = corporate ou energetic
- Conteúdo de estilo de vida = upbeat ou happy
- Conteúdo educativo = calm ou corporate
- Conteúdo de vendas = upbeat ou energetic

Responda apenas com a palavra.zclaude-haiku-4-5-20251001
   user)rolecontent)model
max_tokensmessagesr   )strip	anthropic	AnthropicANTHROPIC_KEYr   creater   textlower	MOOD_TAGS	Exception)r   clientpromptrespmoods        6/opt/mia/workspace/video_editor/backend/music_utils.pyanalisar_mood_do_videor&      s    
 ""$  7F%4 ! ""F 	%%-%&9: & 

 ||A##))+113y(t9k9 s   A B B 	B%$B%r$   duracao_min_segc           	      `   t         j                  | d      }	 t        j                  t        |dddddd      }|j                  d	k7  ry
|j                         }|D ]  }|j                  dd      }d|v sd|v r|j                  dg       }t        d |D        d
      }|st        d |D        d
      }|s[|j                  d      sm|d   |j                  dd      |j                  d      xs |j                  dd      || dc S  	 y
# t        $ r}	t        d|	        Y d
}	~	y
d
}	~	ww xY w)u   
    Busca uma trilha instrumental no ccMixter pelo mood.
    Filtra por licença comercial (Attribution sem NonCommercial).
    Retorna dict com url, nome, artista ou None.
    zinstrumental,backgroundmediajsonr   score)tagstypeformatlimitord   )paramstimeout   Nlicense_name NoncommercialNonCommercialfilesc              3   J   K   | ]  }|j                  d       dk(  s|  yw)file_nicnamemp3Nget.0fs     r%   	<genexpr>z)buscar_musica_ccmixter.<locals>.<genexpr>_   s      P1~1F%1OQPs   ##c              3   j   K   | ]+  }|j                  d i       j                  d      dk(  s(| - yw)file_format_infozdefault-extr<   Nr=   r?   s     r%   rB   z)buscar_musica_ccmixter.<locals>.<genexpr>a   s0      oqQUU;Mr5R5V5VWd5ein5n os   )33download_urlupload_nameTrilhauser_real_name	user_nameUnknown)urlnomeartistalicencar$   z$[music] Erro ao buscar no ccMixter: )	r   r>   requestsCCMIXTER_URLstatus_coder*   nextr    print)
r$   r'   r,   rtrackstrackr5   r9   mp3_filees
             r%   buscar_musica_ccmixterrY   A   sJ    ==89D$:LL/
  ==C 	E 99^R8L,./\2Q IIgr*EPPRVWH oE oquvHLL8#N3!IImX>$yy)9:_eiiU^>_+  	0   :4QC899:s0   1D 
A,D 7D 	?D 	D 	D-D((D-rK   destinoc                 z   	 t        j                  | ddddi      }|j                          t        |d      5 }|j	                  d      D ]  }|j                  |        	 d	d	d	       t        j                  j                  |      d
kD  S # 1 sw Y   +xY w# t        $ r}t        d|        Y d	}~yd	}~ww xY w)z(Baixa o MP3 para o caminho especificado.T   z
User-AgentzMozilla/5.0)streamr3   headerswbi    )
chunk_sizeNi'  u    [music] Erro ao baixar música: F)rO   r>   raise_for_statusopeniter_contentwriteospathgetsizer    rS   )rK   rZ   rT   rA   chunkrX   s         r%   baixar_musicari   r   s    
LLT2".!>@	'4  	A48 	 www'%//	 	  045s.   7B )B#)B BB 	B:"B55B:job_idc                 j   t        d       t        |       }t        d|        t        d| d       t        |      }|st        d| d       t        d      }|st        d       y	t        d
|d    d|d           t        t        | dz        }t        |d   |      rt        d|        |S y	)u   
    Pipeline completo: analisa mood → busca trilha → baixa → retorna caminho local.
    Retorna o caminho do MP3 baixado ou None se falhar.
    u'   [music] Analisando mood do conteúdo...z[music] Mood detectado: z/[music] Buscando trilha no ccMixter para mood 'z'...z([music] Nenhuma trilha encontrada para 'z', tentando fallback...instrumentalu#   [music] Nenhuma trilha disponível.Nz[music] Trilha: 'rL   z' por rM   z
_music.mp3rK   u   [music] Download concluído: )rS   r&   rY   strTEMP_DIRri   )r   rj   r$   rV   rZ   s        r%   obter_musica_para_videoro      s    
 
35!"34D	$TF
+,	;D6
FG"4(E8>UVW&~635	eFm_F53C2D
EF(xz223GU5\7+-gY78    )<   )__doc__rO   re   rer   pathlibr   r   __file__parentrn   rP   r   rm   r&   intdictrY   boolri   ro    rp   r%   <module>r{      s     	 	  ~>  6). (**5-*-9		"c "c "J. .s .D4K .bs S T s C C$J rp   