
    gj9              	          d dl mZmZ d dlmZ d dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlmZmZ  e       Ze	j                  j                  d      Ze	j                  j                  d      Ze	j                  j                  d      Ze	j$                  j'                  d	      Z ej*                   eeeed
d            Zg dZdddddddZd ZddZej7                  d      defd       Zy)    )FastAPIRequest)processN)SpotifyOAuth)r   fuzzSPOTIPY_CLIENT_IDSPOTIPY_CLIENT_SECRETSPOTIPY_REDIRECT_URIz~/spotify_biblioteca.jsonz3user-modify-playback-state user-read-playback-statezspotify_token.txt)	client_idclient_secretredirect_uriscope
cache_path)auth_manager)+0034429b-fba7-4b82-a5c0-ea25e3114461_amzn_1z+46d2d79a-3f35-4c57-8438-0f642b1a3dc1_amzn_2+aa24d0ea-b345-4187-b7f8-36d5bac83875_amzn_2z+aa24d0ea-b345-4187-b7f8-36d5bac83875_amzn_1+215571e7-945e-4926-99ea-a2a000420c37_amzn_1+46d2d79a-3f35-4c57-8438-0f642b1a3dc1_amzn_1z+46d2d79a-3f35-4c57-8438-0f642b1a3dc1_amzn_4z+46d2d79a-3f35-4c57-8438-0f642b1a3dc1_amzn_3r   r   r   z+328df3a2-68eb-465f-a5fd-bc95c0616ab6_amzn_1r   z+5bbac0ce-0995-40d4-9137-a951e70c6642_amzn_1)zamzn1.ask.device.AMA3XJDH5VGFPGUIG5DTNDNYL6XSVEQ7LFUXPQZJDXWSYPKD7XMI6MPUWXXXQ3UB7OJ4FA3X3KH3E4LMNB2PY54WZDL3R7YBP3RLXAM7CDLF67U7VP3ZLYDDGSNY2LLNMRLKKA6V3ZRKU23RNTLK3CCMX4WQY5RACSJLPXPGKQAD4UGO5Y2A5YWLJHOQUB5JZIGKC5IBXAT3IV4Bzamzn1.ask.device.AMARJWFKOQQEXHS3S3FYL5NKS2674UN4J6ECSL6SXZPBRSMHTNUKN4GPL7GYZQRJKGYYAE3BNRGVKRPCNCDB3MTTKXUS2EKFTUKZAGOE5NIOZOFOJV33AMIBLMFB6JUOPWS5YTUXGWZH2EGR3ROKQWCLMV5OWJW4C7K2LSCPW7D3D37WMETR6MJEPYX4JKUXZPFRQ5PNVITFUWKXzamzn1.ask.device.AMA6UQVOGPYC7JNBASESWFQNE7GEK3ZLTVMD2BKB4FOXUDLHZ53N6YV34M5LA5FTL36HBEGCYWE4MZLRLYRCHSSM5BCSHELPBLAUAGMIOKPRREENL5AWU556PCRM7M6HDNAJHYEQB6BUVWJMGFMCL4GV7TOBFUQ3ALZ6TCEB34A6RTWVUT6HYQB2OAMJOI6LLXNF25AAXWJLSQAzamzn1.ask.device.AMA44JYVW62DNE6XPK4HN3DGN63RBCPZ3EUSSVS4M7BYHU7A3EU22KT5NRKWPHWW64JZA5AHVIG5GL5D2674R5WMM5QFJLB2UQLLKQEUZJJ7LQLY7FBDQT54CYZIVJKWPN2ZIF67HK2W37SSSIKTXX3BNEJ6QOWW5XJ3ARNGHC4XHYM57D5SQVCCSFCADJ2WRY72VR23ZHA2XF5Rzamzn1.ask.device.AMAWOFSPMEOPUY35RY4R6IFGJEPCFOX7CJ72IMKT6HOPELWD432FGJVX6NASDBXKJ6HDCNPXOXB6ZKSR5FUM5ZFYKJBXV6SJRAYDQP65PTDBJCR5EOZN5M4TN7FWB5XKCZHVWLE5OE3D5CW4BYYXLIQZ4SMNAHZTHUMD4DM66QOSVDJYAJED5DNF6GRPS6NNEKRUFQZMWVXJCXI6zamzn1.ask.device.AMAYXZ7DSJO2CZ5IZ6HSNUQLKTWLGS4YVDLVYUJJVG3NP2PPBYLHB2BYV27J5MEOJPNMQO3AH4I3G6WPYPAACWXKNLGF4WFQ7QLHAUBSP2JSI5FUFJS6IH6KMSWA5MTBADPLH3USLGBACN77EB4AOVSV2XAWPHC57ZGYHVUQO2B7FC7KPQQZ7WRJXBHEPFMASDN67L4LE4ZZHVTGc           
         t        j                  | |dt        j                        }|syt	        d       t	        d|  d       t        |d d       D ]"  \  }}t	        d|d	z    d
|d	    d|d           $ |d   d	   }|dz
  }|D cg c]  }|d	   |k\  s| }}t        j                  |      }t        |      d	kD  rSt	        dt        |       d| d       |D ]  }	t	        d|	d    d|	d	    d        t	        d|d    d|d	    d       nt	        d|d    d|d	    d       t	        d       |d   |d	   fS c c}w )N   )limitscorer)Nr   )
========================================u9   🔎 [RAIO-X THEFUZZ - TOKEN SET] Top 5 resultados para 'z':   z      u   º: z% | r   u   
🎲 [SORTEIO] u%    músicas na zona de tolerância (>= z%):z   - z (z%)u   
   👉 A sorteada foi: 'z' com %u&   
🎯 [BUSCA DIRETA] Líder isolada: ')========================================
)	r   extractr   token_set_ratioprint	enumeraterandomchoicelen)
texto_buscachaves_disponiveis
resultadosiresnota_maximamargem_aceitacao
candidatasresultado_sorteadocands
             "/home/ubuntu/main_spotify_alexa.pybuscar_melhor_musicar0   J   s    .@SWSgSghJ	-	Ek]RT
UVJrN+ 33AaC5SVHDQ123 Q-"K"Q ",J#s1v9I/I#JJJ  z2
:!#j/!22WXhWiilmn 	2DE$q'"T!WIR01	2 	+,>q,A+B&I[\]I^H__`ab78J18M7NfUghiUjTkklmn	-a "4Q"777 Ks   	E E c                     dd| d|ddS )Nz1.0	PlainText)typetext)outputSpeechshouldEndSession)versionresponse )textoencerrar_sessaos     r/   resposta_alexar<   m   s&     $ !0
	 	    z/alexarequestc                 Z  K   | j                          d {   }|j                  di       j                  d      }|j                  di       j                  dd      }t        d       t        d| d|        t        d       |d	k(  ri S |d
k(  rd|v rt        dd      S t        dd      S |dk(  r|j                  di       j                  di       }|j                  di       }d}|j	                         D ]  \  }}d|v s|d   j                         } n t        d| d       |sd|v rt        dd      S t        dd      S ddddddd}	|	j	                         D ]  \  }
}|
|v s|j                  |
|      } t        j                  j                  t              sd|v rt        d      S t        d      S t        t        dd       5 }t        j                  |      }d d d        t        j                               }t        ||      \  }}|r|j                  d!i       j                  d"i       j                  d#i       j                  d$      }t        d       t        d%       t        d&|        t         j                  |      }|rt        d'|        nt        d(       t        d)       	 t"        j%                         }|rgd*|v rct'        |d*         d+kD  rR|d*   D ]I  }|j                  d,      rd-nd.}t        d/| d0|j                  d1       d2|j                  d3              K nt        d4       t        d6       |d7k\  r,||   }t        d8| d9| d:| d;       	 |j                  d!i       j                  d"i       j                  d#i       j                  d$      }t        d<|        t         j                  |      }|rW	 t        d=       t"        j+                  ||g>       t        d?| d@|        d|v rt        dA| dB      S t        dC| dB      S 	 t        dE       t"        j+                  |gF       t        d?| dG       d|v rt        dA| dB      S t        dC| dB      S d|v rt        dO| dB      S t        dP| dB      S d|v rt        dQ      S t        dR      S d|v rt        dS      S t        dT      S 7 # 1 sw Y   xY w# t(        $ r}t        d5|        Y d }~d }~ww xY w# t(        $ r}t        dD       Y d }~d }~ww xY w# t(        $ r}t        dH       d}t,        D ]4  }	 t"        j+                  ||g>       dI} n# t(        $ r
}Y d }~.d }~ww xY w |r=t        d?| d@        d|v rt        dA| dB      cY d }~S t        dC| dB      cY d }~S d|v rt        dJ      cY d }~S t        dK      cY d }~S d }~ww xY w# t(        $ r7}t        dL|        d|v rt        dM      cY d }~S t        dN      cY d }~S d }~ww xY ww)UNr>   r3   localezpt-BRr   u   🔔 TIPO: u    | 🗣️ IDIOMA: z(========================================SessionEndedRequestLaunchRequestenz'Deejay ready. What do you want to hear?Fu'   Vitrola pronta. O que você quer ouvir?IntentRequestintentslots valuez&
[COMANDO RECEBIDO] ==> ALEXA OUVIU: ''z$Sorry, I didn't catch the song name.u)   Desculpe, não entendi o nome da música.z	i'm alonecappella	moonboots)u   ai meu alôzim alonez
club housez
mood boostmumbutcapelazThe database was not found.u%   O banco de dados não foi encontrado.rzutf-8)encodingcontextSystemdevicedeviceIdu(   🔍 [DEBUG] DIAGNÓSTICO DE ROTEAMENTO:z   -> ID da Alexa que ouviu: z!   -> Mapeado para o Spotify ID: uX      -> ⚠️ ATENÇÃO: Esta Alexa não está no 'mapa_dispositivos'! Pulando Plano A...z8
   [Status da API do Spotify neste exato milissegundo]:devicesr   	is_activeu
   🟢 ATIVOu   🔴 DORMINDOz      - z
 | Nome: 'namez' | ID: idzC      - A API retornou uma lista VAZIA (Tudo offline ou escondido).z"      - Erro ao ler sp.devices(): r   P   z==> ENCONTRADO: 'z	' | URI: z
 | Score: r   z&
[INFO] CAIXINHA QUE OUVIU O COMANDO: u=   Direcionando música para a caixinha específica do pedido...)	device_idurisz==> Sucesso! Tocando z no dispositivo: zPlaying .zTocando u3   Caixinha específica falhou. Indo para o plano B...u0   Tentando tocar no dispositivo ativo genérico...)rZ   z no dispositivo: ativoz7Nenhum dispositivo ativo. Acionando lista de resgate...Tz"No device available at the moment.u*   Nenhum dispositivo disponível no momento.zERRO GERAL DE PLAYBACK: z#Failed to communicate with Spotify.z!Falha ao comunicar com o Spotify.zI couldn't find the song u   Não encontrei a música zThe library is empty.u   A biblioteca está vazia.zSession ended.u   Sessão encerrada.)jsongetr    r<   itemslowerreplaceospathexistsARQUIVO_DADOSopenloadlistkeysr0   mapa_dispositivossprT   r$   	Exceptionstart_playbackmeus_dispositivos)r>   dadostipo_requisicaoidiomarE   rF   texto_alexa	slot_name	slot_data	correcoeserradocertofbiblioteca_musicalchaves_buscamelhor_resultado	pontuacaoalexa_device_idspotify_target_iddispositivos_spotifydevstatuse	track_uri
erro_ativotocou_com_sucessoaparelho_id
erro_locals                               r/   alexa_endpointr   y   s    ,,. Eii	2.226:OYYy"%))(G<F	68	K((;F8
DE	46 //	 /)6>!"KUSS!"KUSS	O	+9b)--h;

7B'$)KKM 	 Iy)#'0668	
 	7}AFGv~%&LeTT%&QSXYY '#$%! 
	 '__. 	AMFE$)11&%@	A ww~~m,v~%&CDD%&MNN-w7 	.1!%1	. .3356
 ';;&U#)
 $ii	26::8RHLLXWYZ^^_ijO- <=1/1BCD 1 5 5o F 9:K9LMNpqMN	@')zz|$'I9M,MRUVjktVuRvyzRz3I> e141E?
3776?:K8TWT[T[\`TaSbcde _` -  B./?@	)*:);9YKzZcYddefg:S&+ii	2&>&B&B8R&P&T&TU]_a&b&f&fgq&rOCOCTUV(9(=(=o(N% )	Z!"ab--8IQZP[-\!$9:J9KK\]n\o"pq#v~'5AQ@RRS6T'U U'5AQ@RRS6T'U U
dPQ))	{); 56F5GG]^_6>#1H=M<Na2P#QQ#1H=M<Na2P#QQD 6>),Ek]RS*TUU),Ek]RS*TUUv~%(=??%&ABBv~.//233_ !r	. 	.F  @:1#>??@2  ) Z!$WYYZ % d WY -2)+< )K) " 1 1Kyk 1 Z48 1 %#, ) ()) -!$9:J9KK\]h\i"jk#v~'5AQ@RRS6T'U U'5AQ@RRS6T'U U#v~'56Z'[ ['56b'c c/d2 ! S4QC89v~-.STT-.QRRSs  X+SC,X+A&X++A#X+S$CX+9BS$ +X+-A&W( AT	 X+T	 )X++AT* .X+/T* =AX+S!X+$	T-T;X+TX+		T'T"W( "T''W( *	W%3W 
U&$W &	U9/W 4U99)W "W%#W( 'X+(W 6W%7W( ;X+<W 
W%W( X+
W W%W( X+ W%%W( (	X(1X#X(X+
X#X(X+#X((X+)T)fastapir   r   thefuzzr   spotipyspotipy.oauth2r   r\   ra   r"   r   appenvironr]   r   r	   r
   rb   
expanduserrd   Spotifyrj   rm   ri   r0   r<   postr   r9   r=   r/   <module>r      s
   $   '  	  ! iJJNN#67 

'>? zz~~&<= ""#>?W__,'%
?"# 	  jW
 jW
 iV
 jW
 jW
 jW; F 8F
 (p4' p4 p4r=   