@danhachuel/thunderbolt 0.4.62 → 0.4.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/app/main.py +22 -8
  2. package/package.json +1 -1
package/app/main.py CHANGED
@@ -2109,15 +2109,29 @@ def render_channels():
2109
2109
  col1, col2 = st.columns([1, 1])
2110
2110
  with col1:
2111
2111
  if st.button("Buscar no YouTube", type="primary", use_container_width=True, key="youtube_channel_lookup"):
2112
- if lookup_mode.startswith("Página pública"):
2113
- result = youtube.fetch_channel_public(source)
2114
- elif not youtube.api_key:
2115
- result = IntegrationResult(False, "A YouTube Data API Key não está configurada. Escolha a opção Página pública — sem API Key ou configure a chave em Configurações > Contas Google.", {"status": "api_key_not_configured"})
2112
+ search_source = str(source or "").strip()
2113
+ st.session_state.pop("yt_import", None)
2114
+ st.session_state.pop("yt_message", None)
2115
+ st.session_state.pop("yt_ok", None)
2116
+ if not search_source:
2117
+ st.session_state["yt_message"] = "Introduza um URL youtube.com, um handle @nome ou um ID de canal UC... antes de pesquisar."
2118
+ st.session_state["yt_ok"] = False
2116
2119
  else:
2117
- result = youtube.fetch_channel(source)
2118
- st.session_state["yt_import"] = result.data
2119
- st.session_state["yt_message"] = result.message
2120
- st.session_state["yt_ok"] = result.ok
2120
+ try:
2121
+ with st.spinner("A pesquisar o canal no YouTube…"):
2122
+ if lookup_mode.startswith("Página pública"):
2123
+ result = youtube.fetch_channel_public(search_source)
2124
+ elif not youtube.api_key:
2125
+ result = IntegrationResult(False, "A YouTube Data API Key não está configurada. Escolha a opção Página pública — sem API Key ou configure a chave em Configurações > Contas Google.", {"status": "api_key_not_configured"})
2126
+ else:
2127
+ result = youtube.fetch_channel(search_source)
2128
+ st.session_state["yt_import"] = result.data if isinstance(result.data, dict) else {}
2129
+ st.session_state["yt_message"] = result.message
2130
+ st.session_state["yt_ok"] = result.ok
2131
+ except Exception as exc:
2132
+ st.session_state["yt_import"] = {}
2133
+ st.session_state["yt_message"] = f"A pesquisa do YouTube falhou ({type(exc).__name__}). Confirme o URL/handle e tente novamente. Detalhe: {str(exc)[:240]}"
2134
+ st.session_state["yt_ok"] = False
2121
2135
  with col2:
2122
2136
  if st.button("Limpar importação", use_container_width=True, key="youtube_channel_clear"):
2123
2137
  for key in ("yt_import", "yt_message", "yt_ok"):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danhachuel/thunderbolt",
3
- "version": "0.4.62",
3
+ "version": "0.4.63",
4
4
  "description": "Thunderbolt — interface local para operação de canais faceless e motor MoneyPrinterTurbo",
5
5
  "license": "MIT",
6
6
  "main": "scripts/cli.mjs",