@danhachuel/thunderbolt 0.2.13
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.
- package/MANUAL-INSTALACAO.md +513 -0
- package/README.md +173 -0
- package/app/main.py +624 -0
- package/hermes_ui/blueprints.py +157 -0
- package/hermes_ui/domain.py +149 -0
- package/hermes_ui/metadata_cleaner.py +190 -0
- package/hermes_ui/storage.py +220 -0
- package/integrations/local_runtime.py +24 -0
- package/integrations/moneyprinter_config.py +175 -0
- package/integrations/platforms.py +107 -0
- package/package.json +33 -0
- package/requirements.txt +5 -0
- package/scripts/cli.mjs +115 -0
- package/scripts/install.mjs +315 -0
- package/seed/blueprints/BLUEPRINTCANALMILITAR.json +72 -0
- package/seed/blueprints/BlueprintAnimalFacts-Felune.json +98 -0
- package/seed/blueprints/BlueprintCocomelon.json +329 -0
- package/seed/blueprints/BlueprintFilosofiaeEstoicismo.json +350 -0
- package/seed/blueprints/BlueprintHist/303/263ria.json +337 -0
- package/seed/blueprints/BlueprintMecanicaAutomotiva-Fatosmecanicos.json +54 -0
- package/seed/blueprints/BlueprintNatureVault.json +58 -0
- package/seed/blueprints/BlueprintOra/303/247/303/243o.json +338 -0
- package/seed/blueprints/BlueprintStickMan.json +50 -0
- package/seed/blueprints/BlueprintUniverso.json +308 -0
- package/seed/blueprints/BlueprintZackD-VoxelVault.json +54 -0
- package/seed/blueprints/CELEBRITIES.json +242 -0
- package/seed/blueprints/blueprintcanalfinan/303/247as.json +329 -0
- package/storage/blueprints/importados/demo-content-hermes.json +23 -0
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
# Manual de Instalação — Thunderbolt UI
|
|
2
|
+
|
|
3
|
+
Este manual descreve a instalação local da UI Thunderbolt, baseada no MoneyPrinterTurbo, utilizando o pacote npm `@danhachuel/thunderbolt`. O fluxo recomendado instala automaticamente o ambiente Python, as dependências da aplicação, as dependências do MoneyPrinterTurbo, o Streamlit e o suporte FFmpeg através de `imageio-ffmpeg`.
|
|
4
|
+
|
|
5
|
+
> **Versão deste manual:** 0.2.13
|
|
6
|
+
> **Pacote npm:** `@danhachuel/thunderbolt`
|
|
7
|
+
> **Porta padrão da UI:** `localhost:3030`
|
|
8
|
+
> **Repositório:** [github.com/DanHachuel/thunderbolt](https://github.com/DanHachuel/thunderbolt)
|
|
9
|
+
|
|
10
|
+
## 1. O que será instalado
|
|
11
|
+
|
|
12
|
+
A instalação assistida cria um ambiente local separado para evitar misturar as dependências do Thunderbolt com outros projectos Python.
|
|
13
|
+
|
|
14
|
+
| Componente | Local ou comportamento padrão |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Python | Python 3.11 ou superior já instalado no sistema |
|
|
17
|
+
| Ambiente virtual | `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`) |
|
|
18
|
+
| MoneyPrinterTurbo | `~/.thunderbolt/MoneyPrinterTurbo` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\MoneyPrinterTurbo`) |
|
|
19
|
+
| Storage Thunderbolt | `~/.thunderbolt/storage` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\storage`) |
|
|
20
|
+
| Dependências Thunderbolt | Instaladas a partir do `requirements.txt` incluído no pacote |
|
|
21
|
+
| Dependências MoneyPrinterTurbo | Instaladas a partir do `requirements.txt` do repositório oficial |
|
|
22
|
+
| Streamlit | Instalado como dependência Python |
|
|
23
|
+
| FFmpeg | Disponibilizado pelo pacote Python `imageio-ffmpeg` |
|
|
24
|
+
| Porta da aplicação | `3030`, configurável com `THUNDERBOLT_PORT` |
|
|
25
|
+
|
|
26
|
+
A aplicação não instala drivers de GPU, Docker, modelos Whisper ou credenciais externas. As chaves de API do MoneyPrinterTurbo são configuradas na aba **Configurações** e sincronizadas com o `config.toml` do clone local.
|
|
27
|
+
|
|
28
|
+
O MoneyPrinterTurbo declara Python 3.11 ou superior como requisito e documenta a instalação com `uv` ou com `venv + pip`. A aplicação segue o mesmo princípio e adiciona um instalador assistido próprio.[1]
|
|
29
|
+
|
|
30
|
+
## 2. Pré-requisitos
|
|
31
|
+
|
|
32
|
+
Instale os seguintes componentes antes de executar o instalador:
|
|
33
|
+
|
|
34
|
+
| Pré-requisito | Necessário | Observação |
|
|
35
|
+
|---|---:|---|
|
|
36
|
+
| Python 3.11+ | Sim | No Windows, o instalador tenta instalar automaticamente via winget; noutros sistemas deve estar instalado |
|
|
37
|
+
| npm | Sim | Normalmente vem incluído com Node.js |
|
|
38
|
+
| Node.js 18+ | Sim | Necessário para executar o pacote via `npx` |
|
|
39
|
+
| Git | Sim para instalação automática do MoneyPrinterTurbo | Pode ser evitado usando `--skip-moneyprinter` ou `MONEYPRINTER_PATH` |
|
|
40
|
+
| winget | Recomendado no Windows | Permite ao instalador instalar Python 3.11 automaticamente; vem normalmente com Windows 10/11 actualizado |
|
|
41
|
+
| Internet | Sim durante a instalação | Necessária para npm, GitHub e PyPI |
|
|
42
|
+
| Espaço em disco | Recomendado 5 GB ou mais | Dependências, caches, modelos e artefactos podem ocupar espaço adicional |
|
|
43
|
+
|
|
44
|
+
A instalação local do MoneyPrinterTurbo recomenda Windows 10+, macOS 11+ ou uma distribuição Linux corrente. Python 3.11 é a opção de referência do projecto base.[1]
|
|
45
|
+
|
|
46
|
+
### 2.1 Windows: PowerShell bloqueia npx.ps1
|
|
47
|
+
|
|
48
|
+
Em algumas instalações Windows, o PowerShell bloqueia o wrapper `npx.ps1` por causa da política de execução de scripts. Nesse caso, use `npx.cmd`, que executa o mesmo npm/npx sem depender do wrapper PowerShell:
|
|
49
|
+
|
|
50
|
+
```powershell
|
|
51
|
+
npx.cmd --yes @danhachuel/thunderbolt install
|
|
52
|
+
npx.cmd --yes @danhachuel/thunderbolt doctor
|
|
53
|
+
npx.cmd --yes @danhachuel/thunderbolt
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Se preferir corrigir a política para o seu utilizador:
|
|
57
|
+
|
|
58
|
+
```powershell
|
|
59
|
+
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Para permitir apenas durante a sessão actual:
|
|
63
|
+
|
|
64
|
+
```powershell
|
|
65
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Não é necessário usar `Unrestricted`. Se estiver num terminal MobaXterm ou CMD, também pode executar:
|
|
69
|
+
|
|
70
|
+
```cmd
|
|
71
|
+
cmd /c npx.cmd --yes @danhachuel/thunderbolt install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2.2 Confirmar versões
|
|
75
|
+
|
|
76
|
+
Linux ou macOS:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
node --version
|
|
80
|
+
npm --version
|
|
81
|
+
python3 --version
|
|
82
|
+
git --version
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Windows PowerShell:
|
|
86
|
+
|
|
87
|
+
```powershell
|
|
88
|
+
node --version
|
|
89
|
+
npm --version
|
|
90
|
+
py --version
|
|
91
|
+
git --version
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
O Python deve apresentar a versão `3.11` ou superior. Se estiver no Windows sem Python, o instalador tenta executar automaticamente `winget install --exact --id Python.Python.3.11`. Se `winget` não estiver disponível, instale o App Installer/Microsoft Store ou Python a partir de [python.org](https://www.python.org/downloads/windows/) e repita a instalação. Em macOS/Linux, o instalador não assume permissões administrativas para instalar Python no sistema; instale-o pelo gestor de pacotes ou use `THUNDERBOLT_PYTHON`.
|
|
95
|
+
|
|
96
|
+
## 3. Instalação recomendada via npx
|
|
97
|
+
|
|
98
|
+
Execute:
|
|
99
|
+
|
|
100
|
+
Windows PowerShell ou MobaXterm:
|
|
101
|
+
|
|
102
|
+
```powershell
|
|
103
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.13 install
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Linux/macOS:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npx --yes @danhachuel/thunderbolt@0.2.13 install
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
A instalação normal é **segura para actualizações**: preserva `storage`, Blueprints, Brandings, configurações e artefactos do utilizador. Remove apenas `.venv`, o clone técnico do MoneyPrinterTurbo e dependências que serão recriadas. Uma pasta antiga sem dados do utilizador, como `C:\Users\<utilizador>\AppData\Local\hermes` da tentativa incompleta, pode ser removida; uma pasta antiga que contenha Blueprints, Brandings ou storage é preservada e apenas avisada no terminal. Feche processos Python, Node, Streamlit e MobaXterm que estejam a usar as pastas antes de executar.
|
|
113
|
+
|
|
114
|
+
Se quiser apagar absolutamente tudo de forma intencional, use o comando destrutivo separado:
|
|
115
|
+
|
|
116
|
+
```powershell
|
|
117
|
+
npx.cmd --yes --prefer-online @danhachuel/thunderbolt@VERSAO install --purge-data
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
O parâmetro `--purge-data` apaga Blueprints, Brandings, configurações, storage e artefactos locais. Não o use numa actualização normal.
|
|
121
|
+
|
|
122
|
+
No Windows, a instalação cria automaticamente `C:\\Users\\danha\\AppData\\Local\\THUNDERBOLT\\storage` quando executada pela conta `danha`; para outras contas, `%LOCALAPPDATA%\\THUNDERBOLT\\storage` aponta para a pasta equivalente do utilizador.
|
|
123
|
+
|
|
124
|
+
O instalador irá:
|
|
125
|
+
|
|
126
|
+
1. procurar Python 3.11 ou superior;
|
|
127
|
+
2. se estiver no Windows e Python não existir, instalar Python 3.11 automaticamente pelo `winget`;
|
|
128
|
+
3. criar o ambiente virtual `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`);
|
|
129
|
+
4. clonar o repositório oficial MoneyPrinterTurbo para `~/.thunderbolt/MoneyPrinterTurbo` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\MoneyPrinterTurbo`);
|
|
130
|
+
5. instalar as dependências do Thunderbolt;
|
|
131
|
+
6. instalar as dependências Python do MoneyPrinterTurbo;
|
|
132
|
+
7. instalar `imageio-ffmpeg` para disponibilizar FFmpeg no ambiente Python;
|
|
133
|
+
8. criar `~/.thunderbolt/storage/state/settings.json` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\storage\state\settings.json`);
|
|
134
|
+
9. registar o caminho local do MoneyPrinterTurbo;
|
|
135
|
+
10. deixar o ambiente pronto para o comando de arranque.
|
|
136
|
+
|
|
137
|
+
No Windows, o caminho padrão é construído a partir de `USERPROFILE`, `HOMEDRIVE/HOMEPATH` ou, em último recurso, `HOME`. O instalador remove o redireccionamento de MobaXterm (`AppData\Local\hermes` ou `AppData\Roaming\MobaXterm\home`) e usa `%LOCALAPPDATA%\\THUNDERBOLT`, salvo se `THUNDERBOLT_HOME` for definido explicitamente. A pasta `AppData\Local\npm-cache\_npx` é apenas cache temporária do npm e não é a pasta de instalação final. O fluxo normal preserva os dados; somente `--purge-data` activa a limpeza destrutiva.
|
|
138
|
+
|
|
139
|
+
A instalação pode demorar alguns minutos, especialmente durante a instalação de `faster-whisper` e de bibliotecas de processamento de vídeo. O caminho do pacote dentro de `AppData\Local\npm-cache\_npx` que aparece no log é temporário; o launcher usa esse pacote apenas para executar o instalador e os ficheiros finais ficam em `%LOCALAPPDATA%\\THUNDERBOLT`.
|
|
140
|
+
|
|
141
|
+
### 3.1 Usar o instalador com uma cópia existente do MoneyPrinterTurbo
|
|
142
|
+
|
|
143
|
+
Se já possui o MoneyPrinterTurbo clonado, indique o caminho.
|
|
144
|
+
|
|
145
|
+
Linux ou macOS:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
MONEYPRINTER_PATH=/caminho/para/MoneyPrinterTurbo \
|
|
149
|
+
npx --yes @danhachuel/thunderbolt install
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Windows PowerShell:
|
|
153
|
+
|
|
154
|
+
```powershell
|
|
155
|
+
$env:MONEYPRINTER_PATH="C:\caminho\MoneyPrinterTurbo"
|
|
156
|
+
npx --yes @danhachuel/thunderbolt install
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
O instalador reutiliza a pasta existente e instala as suas dependências no ambiente virtual do Thunderbolt.
|
|
160
|
+
|
|
161
|
+
### 3.2 Instalar apenas a UI
|
|
162
|
+
|
|
163
|
+
Se pretende testar a interface sem clonar o MoneyPrinterTurbo:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
npx --yes @danhachuel/thunderbolt install --skip-moneyprinter
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Este modo instala o ambiente Python e as dependências da UI, mas não instala o conjunto de dependências do MoneyPrinterTurbo nem configura a integração local com ele.
|
|
170
|
+
|
|
171
|
+
### 3.3 Controlar os caminhos de instalação
|
|
172
|
+
|
|
173
|
+
É possível alterar o directório principal e o ambiente Python:
|
|
174
|
+
|
|
175
|
+
Linux ou macOS:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
THUNDERBOLT_HOME=/caminho/thunderbolt \
|
|
179
|
+
MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo \
|
|
180
|
+
THUNDERBOLT_VENV=/caminho/thunderbolt/.venv \
|
|
181
|
+
npx --yes @danhachuel/thunderbolt install
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Windows PowerShell:
|
|
185
|
+
|
|
186
|
+
```powershell
|
|
187
|
+
$env:THUNDERBOLT_HOME="C:\ContentHermes"
|
|
188
|
+
$env:MONEYPRINTER_PATH="C:\MoneyPrinterTurbo"
|
|
189
|
+
$env:THUNDERBOLT_VENV="C:\ContentHermes\.venv"
|
|
190
|
+
npx --yes @danhachuel/thunderbolt install
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 4. Diagnóstico antes de iniciar
|
|
194
|
+
|
|
195
|
+
Depois da instalação, execute:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npx --yes @danhachuel/thunderbolt doctor
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Também é possível usar:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
npx --yes --package=@danhachuel/thunderbolt thunderbolt --check
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Uma saída saudável apresenta versões de Python e Streamlit e um caminho de FFmpeg. Por exemplo:
|
|
208
|
+
|
|
209
|
+
```text
|
|
210
|
+
Ambiente OK. Python: 3.11.x; Streamlit: 1.x.x; FFmpeg: /.../ffmpeg
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Se o diagnóstico indicar que FFmpeg não foi detectado, execute novamente a instalação ou verifique se `imageio-ffmpeg` está presente no ambiente virtual.
|
|
214
|
+
|
|
215
|
+
## 5. Iniciar a aplicação
|
|
216
|
+
|
|
217
|
+
Depois de instalar e diagnosticar:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
npx --yes @danhachuel/thunderbolt
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Abra no navegador:
|
|
224
|
+
|
|
225
|
+
```text
|
|
226
|
+
http://localhost:3030
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
O launcher usa o ambiente virtual em `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`) quando ele existe. Se for necessário executar numa porta diferente:
|
|
230
|
+
|
|
231
|
+
Linux ou macOS:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
THUNDERBOLT_PORT=3040 npx --yes @danhachuel/thunderbolt
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Windows PowerShell:
|
|
238
|
+
|
|
239
|
+
```powershell
|
|
240
|
+
$env:THUNDERBOLT_PORT="3040"
|
|
241
|
+
npx --yes @danhachuel/thunderbolt
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Para parar a aplicação, volte ao terminal e pressione `Ctrl+C`.
|
|
245
|
+
|
|
246
|
+
## 6. Instalação global via npm
|
|
247
|
+
|
|
248
|
+
Como alternativa ao `npx`, instale o comando globalmente:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
npm install --global @danhachuel/thunderbolt
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Depois execute:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
thunderbolt
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Diagnóstico:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
thunderbolt doctor
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Instalação assistida:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
thunderbolt install
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
A instalação global controla apenas o launcher Node.js. O ambiente Python continua a ser criado em `~/.thunderbolt/.venv` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\\.venv`).
|
|
273
|
+
|
|
274
|
+
## 7. Instalação manual para desenvolvimento
|
|
275
|
+
|
|
276
|
+
Use esta opção quando quiser trabalhar directamente a partir do repositório GitHub.
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
git clone https://github.com/DanHachuel/thunderbolt.git
|
|
280
|
+
cd thunderbolt
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 7.1 Linux ou macOS
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
python3.11 -m venv .venv
|
|
287
|
+
source .venv/bin/activate
|
|
288
|
+
python -m pip install --upgrade pip
|
|
289
|
+
python -m pip install -r requirements.txt
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Para instalar também o MoneyPrinterTurbo:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
|
|
296
|
+
python -m pip install -r MoneyPrinterTurbo/requirements.txt
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Inicie a UI:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
python -m streamlit run app/main.py --server.port 3030
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Ou use o launcher local:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
node scripts/cli.mjs --check
|
|
309
|
+
node scripts/cli.mjs
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 7.2 Windows PowerShell
|
|
313
|
+
|
|
314
|
+
```powershell
|
|
315
|
+
py -3.11 -m venv .venv
|
|
316
|
+
.venv\Scripts\Activate.ps1
|
|
317
|
+
python -m pip install --upgrade pip
|
|
318
|
+
python -m pip install -r requirements.txt
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Para instalar também o MoneyPrinterTurbo:
|
|
322
|
+
|
|
323
|
+
```powershell
|
|
324
|
+
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
|
|
325
|
+
python -m pip install -r MoneyPrinterTurbo\requirements.txt
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Inicie a UI:
|
|
329
|
+
|
|
330
|
+
```powershell
|
|
331
|
+
python -m streamlit run app/main.py --server.port 3030
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Se o PowerShell bloquear a activação do ambiente virtual, execute uma vez, com uma política adequada ao seu utilizador:
|
|
335
|
+
|
|
336
|
+
```powershell
|
|
337
|
+
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## 8. Configuração inicial da UI
|
|
341
|
+
|
|
342
|
+
Na primeira execução, abra **Configurações** e reveja:
|
|
343
|
+
|
|
344
|
+
| Configuração | Finalidade |
|
|
345
|
+
|---|---|
|
|
346
|
+
| Porta Streamlit | Definir a porta local da UI |
|
|
347
|
+
| Pasta MoneyPrinterTurbo | Indicar o clone local que será sincronizado com `config.toml` |
|
|
348
|
+
| YouTube Data API key | Permitir importar nome, handle e métricas de canais |
|
|
349
|
+
| TikTok Client ID/Secret | Credenciais da aplicação; Redirect URI, scopes e autorização ficam no TikTok for Developers Playground |
|
|
350
|
+
|
|
351
|
+
As chaves devem ser inseridas apenas na configuração local. Não as coloque no GitHub, no `package.json`, em blueprints ou em ficheiros de estado versionados.
|
|
352
|
+
|
|
353
|
+
## 9. Testar as áreas principais
|
|
354
|
+
|
|
355
|
+
Após iniciar a aplicação, valide o seguinte percurso:
|
|
356
|
+
|
|
357
|
+
1. **Dashboard:** confirme que a UI abre e mostra o estado local.
|
|
358
|
+
2. **Blueprints:** coloque um JSON em `~/.thunderbolt/storage/blueprints/importados/` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT\storage\blueprints\importados\`) ou use o carregador da interface.
|
|
359
|
+
3. **Brandings:** abra a subaba **Brandings** e confirme a listagem dos ficheiros JSON.
|
|
360
|
+
4. **Canais:** cadastre um canal manualmente ou importe-o depois de configurar a YouTube Data API.
|
|
361
|
+
5. **Novo vídeo:** teste primeiro o modo **Canal específico** e depois os modos de lote.
|
|
362
|
+
6. **Vídeos:** verifique o estado `to_do` e os botões **Iniciar** e **Parar**.
|
|
363
|
+
7. **Upload:** confirme os destinos configurados e os estados de pré-requisito.
|
|
364
|
+
8. **Limpador de metadado:** suba um vídeo de terceiro, preencha título, preview, links, timestamps e tags, aplique a limpeza e descarregue a cópia limpa e o manifesto JSON. O original fica preservado e vídeos da aba Novo vídeo não são aceites nesta área.
|
|
365
|
+
9. **Configurações:** confirme que os caminhos e credenciais estão locais e não aparecem no Git.
|
|
366
|
+
|
|
367
|
+
## 10. Limpador de metadado
|
|
368
|
+
|
|
369
|
+
A aba **Limpador de metadado** recebe somente vídeos externos já prontos. O ficheiro enviado é copiado para `storage/metadata_cleaner/originals/`; a aplicação não altera o original. Ao aplicar a operação, o FFmpeg remove os metadados existentes do contentor e cria uma nova versão em `storage/metadata_cleaner/outputs/` com o título, descrição, tags, idioma e outros campos preenchidos.
|
|
370
|
+
|
|
371
|
+
A descrição combina **Preview**, **Links** e **Timestamps**, seguindo a estrutura do workflow `YTBMetadataGenerator.json`. O preview recomendado tem entre 100 e 200 caracteres; os capítulos devem começar por `00:00`. O manifesto JSON descarregado contém os campos para um fluxo posterior de upload. Esta adaptação local não faz scraping automático via RSS/Apify nem publica directamente no YouTube.
|
|
372
|
+
|
|
373
|
+
Se a limpeza falhar, confirme a disponibilidade do FFmpeg em **Configurações > Caminho FFmpeg** ou execute `doctor`. O processo usa `-map_metadata -1` para remover os metadados existentes e `-c copy` para evitar uma re-encodificação desnecessária sempre que o contentor permitir.
|
|
374
|
+
|
|
375
|
+
## 11. Problemas frequentes
|
|
376
|
+
|
|
377
|
+
### Python não encontrado
|
|
378
|
+
|
|
379
|
+
Mensagem típica:
|
|
380
|
+
|
|
381
|
+
```text
|
|
382
|
+
Python 3.11 ou superior não foi encontrado.
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Instale Python 3.11+ e confirme:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
python3 --version
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
Se houver várias versões instaladas, indique explicitamente:
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
THUNDERBOLT_PYTHON=/caminho/para/python3.11 npx --yes @danhachuel/thunderbolt install
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
No Windows PowerShell:
|
|
398
|
+
|
|
399
|
+
```powershell
|
|
400
|
+
$env:THUNDERBOLT_PYTHON="C:\Python311\python.exe"
|
|
401
|
+
npx --yes @danhachuel/thunderbolt install
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Git não encontrado
|
|
405
|
+
|
|
406
|
+
Instale Git a partir de [git-scm.com](https://git-scm.com/downloads), ou forneça uma cópia existente do MoneyPrinterTurbo através de `MONEYPRINTER_PATH`.
|
|
407
|
+
|
|
408
|
+
### Streamlit não está instalado
|
|
409
|
+
|
|
410
|
+
Execute:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
npx --yes @danhachuel/thunderbolt install
|
|
414
|
+
npx --yes @danhachuel/thunderbolt doctor
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Em instalação manual:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
python -m pip install -r requirements.txt
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### FFmpeg não detectado
|
|
424
|
+
|
|
425
|
+
Tente reinstalar o suporte Python:
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
python -m pip install --upgrade imageio-ffmpeg
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
Depois confirme:
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
npx --yes @danhachuel/thunderbolt doctor
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
O MoneyPrinterTurbo também permite indicar um caminho manual para FFmpeg na configuração local quando a detecção automática não funcionar.[1]
|
|
438
|
+
|
|
439
|
+
### A porta 3030 está ocupada
|
|
440
|
+
|
|
441
|
+
Use outra porta:
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
THUNDERBOLT_PORT=3040 npx --yes @danhachuel/thunderbolt
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### O MoneyPrinterTurbo não aparece na UI
|
|
448
|
+
|
|
449
|
+
Confirme o caminho na aba **Configurações** ou execute:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo npx --yes @danhachuel/thunderbolt install --skip-python-deps
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Depois reinicie a aplicação.
|
|
456
|
+
|
|
457
|
+
### Dependências Python falham durante a instalação
|
|
458
|
+
|
|
459
|
+
Actualize pip e tente novamente:
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
npx --yes @danhachuel/thunderbolt install
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Se uma dependência específica falhar, guarde o log completo e verifique a compatibilidade da versão Python. Python 3.11 é a opção mais conservadora para o MoneyPrinterTurbo.
|
|
466
|
+
|
|
467
|
+
### Modelos Whisper não estão disponíveis
|
|
468
|
+
|
|
469
|
+
A instalação das dependências não baixa necessariamente todos os modelos grandes. O MoneyPrinterTurbo pode descarregar o modelo Whisper na primeira utilização, dependendo da configuração escolhida. Para ambientes sem acesso de rede, siga as instruções do projecto base para descarregar e colocar o modelo localmente.[1]
|
|
470
|
+
|
|
471
|
+
## 12. Desinstalação
|
|
472
|
+
|
|
473
|
+
Para remover o pacote global:
|
|
474
|
+
|
|
475
|
+
```bash
|
|
476
|
+
npm uninstall --global @danhachuel/thunderbolt
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
Para remover o ambiente e os dados locais:
|
|
480
|
+
|
|
481
|
+
Linux ou macOS:
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
rm -rf ~/.thunderbolt
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Windows PowerShell:
|
|
488
|
+
|
|
489
|
+
```powershell
|
|
490
|
+
Remove-Item -Recurse -Force "$HOME\\THUNDERBOLT"
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
> A remoção de `~/.thunderbolt` (Windows: `%LOCALAPPDATA%\\THUNDERBOLT`) apaga estado JSON, blueprints, configurações e artefactos locais. Faça uma cópia de segurança antes de executar o comando.
|
|
494
|
+
|
|
495
|
+
## 13. Segurança
|
|
496
|
+
|
|
497
|
+
Nunca publique ou envie por chat:
|
|
498
|
+
|
|
499
|
+
- tokens npm;
|
|
500
|
+
- chaves YouTube, TikTok ou outros serviços;
|
|
501
|
+
- cookies e tokens OAuth;
|
|
502
|
+
- ficheiros de configuração com segredos;
|
|
503
|
+
- artefactos privados de canais.
|
|
504
|
+
|
|
505
|
+
Use secrets do GitHub Actions apenas para publicação do pacote. Para execução local, mantenha credenciais fora do repositório e use a área de configurações local ou variáveis de ambiente.
|
|
506
|
+
|
|
507
|
+
## 14. Referências
|
|
508
|
+
|
|
509
|
+
[1]: https://github.com/harry0703/MoneyPrinterTurbo/blob/main/README-en.md — MoneyPrinterTurbo: requisitos, instalação, dependências, Streamlit e FFmpeg.
|
|
510
|
+
|
|
511
|
+
[2]: https://www.npmjs.com/package/@danhachuel/thunderbolt — Pacote npm publicado.
|
|
512
|
+
|
|
513
|
+
[3]: https://github.com/DanHachuel/thunderbolt — Repositório GitHub do Thunderbolt UI.
|
package/README.md
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Thunderbolt UI
|
|
2
|
+
|
|
3
|
+
> Consulte o [Manual completo de instalação](MANUAL-INSTALACAO.md) antes do primeiro teste local.
|
|
4
|
+
|
|
5
|
+
Thunderbolt — UI web local da Fase 3, baseada no fluxo Streamlit do [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo). A aplicação organiza canais, blueprints, lotes de vídeos, filas, artefactos e upload em armazenamento local JSON.
|
|
6
|
+
|
|
7
|
+
## Estado actual
|
|
8
|
+
|
|
9
|
+
A primeira versão implementa a camada UI independente com:
|
|
10
|
+
|
|
11
|
+
| Área | Incluído |
|
|
12
|
+
|---|---|
|
|
13
|
+
| Dashboard | Resumo de canais, tarefas, backlog, execução e falhas |
|
|
14
|
+
| Pipeline | Filas por etapa |
|
|
15
|
+
| Blueprints | Leitura da pasta `storage/blueprints/`, upload/validação de JSON e criação a partir de link YouTube |
|
|
16
|
+
| Brandings | Subaba própria dentro de Blueprints, upload/listagem de Brandings e criação conjunta com Blueprint |
|
|
17
|
+
| Canais | Cadastro manual, importação via YouTube Data API quando configurada e edição de dados importados |
|
|
18
|
+
| Novo vídeo | Canal específico, lote no mesmo canal e lote geral |
|
|
19
|
+
| Vídeos | Filtro por estado e controlos iniciar/parar |
|
|
20
|
+
| Upload | Destinos YouTube/TikTok e diagnóstico do TikTok |
|
|
21
|
+
| Limpador de metadado | Upload isolado de vídeos terceiros, limpeza FFmpeg, edição de título/descrição/tags e manifesto JSON |
|
|
22
|
+
| Configurações | Provedores LLM, TTS/voz, materiais, Whisper, FFmpeg, YouTube, TikTok Client ID/Secret e Upload-Post |
|
|
23
|
+
| Launcher | Execução via `npx`, instalação assistida, diagnóstico e preparação para distribuição |
|
|
24
|
+
|
|
25
|
+
Os adaptadores do MoneyPrinterTurbo e de publicação nas plataformas são ligados pelas configurações locais e pelos pontos de integração em `integrations/`. A UI não inventa dados quando um serviço externo ou credencial não está disponível.
|
|
26
|
+
|
|
27
|
+
## Instalação
|
|
28
|
+
|
|
29
|
+
Recomenda-se Python 3.11 ou superior e Node.js 18 ou superior.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
python3 -m venv .venv
|
|
33
|
+
. .venv/bin/activate
|
|
34
|
+
python -m pip install -r requirements.txt
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
No Windows PowerShell:
|
|
38
|
+
|
|
39
|
+
```powershell
|
|
40
|
+
py -m venv .venv
|
|
41
|
+
.venv\\Scripts\\Activate.ps1
|
|
42
|
+
python -m pip install -r requirements.txt
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Execução
|
|
46
|
+
|
|
47
|
+
A porta da aplicação é `3030`:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
python -m streamlit run app/main.py --server.port 3030
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Ou através do launcher Node:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
node scripts/cli.mjs --check
|
|
57
|
+
node scripts/cli.mjs
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
O pacote está publicado no npm como `@danhachuel/thunderbolt` e pode ser executado directamente via `npx`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npx --yes @danhachuel/thunderbolt
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Para instalar automaticamente o ambiente completo — Python 3.11+, ambiente virtual, dependências Python do Thunderbolt, dependências Python do MoneyPrinterTurbo, Streamlit e `imageio-ffmpeg` — execute:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx --yes @danhachuel/thunderbolt install
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Por defeito, o instalador cria automaticamente a pasta `~/.thunderbolt` — no Windows, `%LOCALAPPDATA%\\THUNDERBOLT` —, clona o MoneyPrinterTurbo para `THUNDERBOLT/MoneyPrinterTurbo`, cria o ambiente em `THUNDERBOLT/.venv` e guarda o estado em `THUNDERBOLT/storage`. No Windows, se Python 3.11+ não estiver instalado, o instalador tenta instalá-lo automaticamente através do `winget`. A instalação normal é segura para actualizações: preserva `storage`, Blueprints, Brandings, configurações e artefactos, removendo apenas `.venv` e o clone técnico do MoneyPrinterTurbo para os recriar. A antiga pasta sem dados do utilizador em `C:\Users\<utilizador>\AppData\Local\hermes` pode ser removida. O caminho `AppData\Local\npm-cache\_npx` é apenas cache temporária do npm, não é a pasta de instalação final. Para apagar dados intencionalmente, use o parâmetro explícito `--purge-data`; nunca o use numa actualização normal. Para usar uma cópia existente do MoneyPrinterTurbo:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
MONEYPRINTER_PATH=/caminho/MoneyPrinterTurbo npx --yes @danhachuel/thunderbolt install
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Para instalar apenas a UI sem clonar o MoneyPrinterTurbo:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npx --yes @danhachuel/thunderbolt install --skip-moneyprinter
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Para verificar o ambiente sem iniciar a aplicação:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npx --yes @danhachuel/thunderbolt doctor
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Para executar apenas o diagnóstico do ambiente:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx --yes --package=@danhachuel/thunderbolt thunderbolt --check
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Para instalar globalmente e disponibilizar o comando `thunderbolt`:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm install --global @danhachuel/thunderbolt
|
|
100
|
+
thunderbolt
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
No Windows PowerShell, se `npx` for bloqueado por `npx.ps1`, use directamente `npx.cmd`:
|
|
104
|
+
|
|
105
|
+
```powershell
|
|
106
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.13 install
|
|
107
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.13 doctor
|
|
108
|
+
npx.cmd --yes @danhachuel/thunderbolt@0.2.13
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Como alternativa, pode permitir scripts para o seu utilizador:
|
|
112
|
+
|
|
113
|
+
```powershell
|
|
114
|
+
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Ou apenas para a sessão actual:
|
|
118
|
+
|
|
119
|
+
```powershell
|
|
120
|
+
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Após `install`, o launcher usa o ambiente virtual instalado em `~/.thunderbolt/.venv` — no Windows, `%LOCALAPPDATA%\\THUNDERBOLT\\.venv` — e inicia a UI em `localhost:3030`. No Windows, a raiz é `%LOCALAPPDATA%\\THUNDERBOLT`; no computador indicado, o caminho será `C:\\Users\\danha\\AppData\\Local\\THUNDERBOLT`. Isto evita a redirecção de `HOME` que pode ocorrer no MobaXterm.
|
|
124
|
+
O instalador não instala drivers de GPU, Docker, chaves de API, modelos Whisper ou credenciais de plataformas; esses componentes continuam dependentes do sistema e da configuração do utilizador. Para desenvolvimento a partir do clone, continue a usar `node scripts/cli.mjs`.
|
|
125
|
+
|
|
126
|
+
## Armazenamento local
|
|
127
|
+
|
|
128
|
+
O sistema cria automaticamente:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
storage/
|
|
132
|
+
├── blueprints/ # blueprints JSON lidos pela aba Blueprints
|
|
133
|
+
├── state/
|
|
134
|
+
│ ├── channels.json
|
|
135
|
+
│ ├── tasks.json
|
|
136
|
+
│ ├── queues.json
|
|
137
|
+
│ ├── batches.json
|
|
138
|
+
│ ├── uploads.json
|
|
139
|
+
│ ├── metadata_edits.json
|
|
140
|
+
│ └── settings.json
|
|
141
|
+
├── metadata_cleaner/
|
|
142
|
+
│ ├── originals/ # cópias dos vídeos terceiros enviados
|
|
143
|
+
│ └── outputs/ # versões com metadados limpos
|
|
144
|
+
└── artifacts/ # ficheiros produzidos e caminhos referenciados
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Para usar outro local, defina `THUNDERBOLT_STORAGE_DIR`. O estado é escrito de forma atómica e ficheiros JSON inválidos são preservados com cópia `.corrupt-*` antes de serem recriados.
|
|
148
|
+
|
|
149
|
+
## Blueprints e Brandings
|
|
150
|
+
|
|
151
|
+
Coloque ficheiros `.json` em `storage/blueprints/canais`, `storage/blueprints/nichos` ou `storage/blueprints/importados`. A aba **Blueprints** relê a pasta e mostra o conteúdo estruturado. A instalação já inclui 13 Blueprints seed, copiados apenas quando o ficheiro ainda não existe; actualizações não substituem Blueprints locais. Também é possível importar através do carregador da própria interface.
|
|
152
|
+
|
|
153
|
+
A mesma aba possui a subaba **Brandings**. No formulário **Criar blueprint a partir de link**, cole um link de canal, handle ou vídeo do YouTube, informe o nicho e o idioma e escolha entre **Apenas Blueprint** ou **Blueprint + Branding completo**. O primeiro modo grava o blueprint forense local; o segundo grava também um ficheiro de Branding com identidade do canal, handle, descrição, hashtags, keywords, prompts de imagem de perfil e banner, direcção visual de thumbnails, assets e checklist de revisão.
|
|
154
|
+
|
|
155
|
+
O fluxo foi modelado a partir do blueprint de clonagem com Branding anexado, incluindo a distinção entre entrada de canal/vídeo, normalização do link, metadados de nicho/idioma, perfil do canal, estratégia de conteúdo, pesquisa, identidade visual e brand pack. Placeholders de serviços externos são tratados como configuração local; chaves presentes em workflows importados não devem ser commitadas.
|
|
156
|
+
|
|
157
|
+
## Limpador de metadado
|
|
158
|
+
|
|
159
|
+
A aba **Limpador de metadado** foi adaptada do workflow `YTBMetadataGenerator.json`. Ela recebe apenas um vídeo externo já pronto, guarda uma cópia original separada, remove os metadados do contentor com FFmpeg e grava uma nova cópia com título, descrição, links, timestamps, tags e outros campos opcionais. O original nunca é alterado e os vídeos produzidos pela aba **Novo vídeo** não aparecem nesta área.
|
|
160
|
+
|
|
161
|
+
A descrição segue a composição do workflow de referência: preview, secção de links e capítulos/timestamps. O resultado inclui um manifesto JSON para utilizar os metadados num fluxo posterior de upload. A versão local não usa o trigger RSS, o Apify ou a actualização automática de um vídeo YouTube; em vez disso, o utilizador fornece directamente o vídeo terceiro e controla a edição antes de publicar.
|
|
162
|
+
|
|
163
|
+
## Canais YouTube
|
|
164
|
+
|
|
165
|
+
Sem chave, o cadastro manual continua disponível. Para importar nome, handle e estatísticas através da API oficial do YouTube Data API, configure `youtube_api_key` na aba **Configurações** ou em `YOUTUBE_API_KEY`.
|
|
166
|
+
|
|
167
|
+
## TikTok
|
|
168
|
+
|
|
169
|
+
A aba **Configurações** contém apenas o TikTok Client ID e o TikTok Client Secret. Redirect URI, scopes, autorização OAuth e tokens são geridos no TikTok for Developers Playground. O adaptador rejeita o upload quando faltam credenciais ou OAuth, em vez de indicar sucesso falso.
|
|
170
|
+
|
|
171
|
+
## Segurança
|
|
172
|
+
|
|
173
|
+
Não coloque chaves, cookies, tokens YouTube ou segredos TikTok no Git. Use a configuração local, variáveis de ambiente ou um ficheiro fora do repositório. O `.gitignore` exclui o storage de estado real, ambientes virtuais e ficheiros de segredo.
|