@woai commited on
Commit
6bf65c9
Β·
1 Parent(s): e775565

πŸͺŸ Add Windows deployment scripts and documentation - PowerShell and Batch scripts for Windows Server deployment, Complete Windows Services setup with NSSM, Firewall configuration, .env template creation, Detailed troubleshooting guide in DEPLOYMENT_WINDOWS.md

Browse files
Files changed (4) hide show
  1. DEPLOYMENT_WINDOWS.md +270 -0
  2. deploy.bat +131 -0
  3. deploy.ps1 +202 -0
  4. update.ps1 +104 -0
DEPLOYMENT_WINDOWS.md ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # πŸš€ Windows Deployment Guide
2
+
3
+ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция ΠΏΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ YouTube Metadata Extractor Π½Π° Windows Server/Desktop.
4
+
5
+ ## πŸ“‹ ВрСбования
6
+
7
+ - **OS**: Windows 10/11 ΠΈΠ»ΠΈ Windows Server 2016+
8
+ - **RAM**: ΠœΠΈΠ½ΠΈΠΌΡƒΠΌ 2GB, рСкомСндуСтся 4GB+
9
+ - **ΠœΠ΅ΡΡ‚ΠΎ Π½Π° дискС**: 1GB свободного мСста
10
+ - **ΠŸΡ€Π°Π²Π°**: АдминистраторскиС ΠΏΡ€Π°Π²Π° для установки слуТб
11
+
12
+ ## 🎯 БыстроС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅
13
+
14
+ ### Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: PowerShell скрипт (рСкомСндуСтся)
15
+
16
+ 1. **ЗапуститС PowerShell ΠΊΠ°ΠΊ администратор**
17
+ ```
18
+ НаТмитС Win+X β†’ Windows PowerShell (Admin)
19
+ ```
20
+
21
+ 2. **Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов** (Ссли Π½ΡƒΠΆΠ½ΠΎ)
22
+ ```powershell
23
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
24
+ ```
25
+
26
+ 3. **Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΈ запуститС скрипт развСртывания**
27
+ ```powershell
28
+ # Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
29
+ cd $env:USERPROFILE
30
+ git clone https://huggingface.co/spaces/dzianisBY/YouTube_Creator_MetaData YouTube-Deploy
31
+ cd YouTube-Deploy
32
+
33
+ # ЗапуститС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅
34
+ .\deploy.ps1
35
+ ```
36
+
37
+ ### Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Batch Ρ„Π°ΠΉΠ»
38
+
39
+ 1. **Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ**
40
+ 2. **НайдитС Ρ„Π°ΠΉΠ» `deploy.bat`**
41
+ 3. **НаТмитС ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ β†’ "Запуск ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора"**
42
+
43
+ ## πŸ”§ Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ скрипт развСртывания
44
+
45
+ ### πŸ“¦ Установка зависимостСй
46
+ - **Chocolatey** - ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Windows
47
+ - **Python 3.x** - срСда выполнСния
48
+ - **Git** - систСма контроля вСрсий
49
+ - **NSSM** - ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ слуТб Windows
50
+
51
+ ### πŸ—οΈ Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
52
+ - ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² `%USERPROFILE%\YouTube`
53
+ - Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Python
54
+ - УстанавливаСт всС зависимости ΠΈΠ· `requirements.txt`
55
+ - Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» `.env` с шаблоном ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
56
+
57
+ ### πŸ› οΈ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слуТб Windows
58
+ - **YouTube-API** - API сСрвСр (ΠΏΠΎΡ€Ρ‚ 8080)
59
+ - **YouTube-Bot** - Telegram Π±ΠΎΡ‚
60
+ - НастраиваСт автозапуск слуТб
61
+ - НастраиваСт зависимости (Π±ΠΎΡ‚ зависит ΠΎΡ‚ API)
62
+
63
+ ### πŸ”₯ Настройка брандмауэра
64
+ - ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ 8080 для входящих соСдинСний
65
+
66
+ ## βš™οΈ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ
67
+
68
+ ### 1. Настройка API ΠΊΠ»ΡŽΡ‡Π΅ΠΉ
69
+
70
+ ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» `%USERPROFILE%\YouTube\.env`:
71
+
72
+ ```env
73
+ # YouTube API ΠΊΠ»ΡŽΡ‡ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)
74
+ YOUTUBE_API_KEY=AIzaSyC9XiK_your_youtube_api_key_here
75
+
76
+ # Telegram Bot Ρ‚ΠΎΠΊΠ΅Π½ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)
77
+ TELEGRAM_TOKEN=1234567890:AAEBOK_your_telegram_bot_token_here
78
+
79
+ # Gemini AI ΠΊΠ»ΡŽΡ‡ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Ρ‚Π°ΠΉΠΌ-ΠΊΠΎΠ΄ΠΎΠ²)
80
+ GEMINI_API_KEY=AIzaSyC_your_gemini_api_key_here
81
+
82
+ # MCP Server URL (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)
83
+ MCP_BASE_URL=https://youtube-bot.tuttech.net/api/mcp
84
+
85
+ # Настройки сСрвСра
86
+ HOST=0.0.0.0
87
+ PORT=8080
88
+ ```
89
+
90
+ ### 2. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ слуТб послС настройки
91
+
92
+ ```powershell
93
+ # PowerShell
94
+ Restart-Service YouTube-API, YouTube-Bot
95
+ ```
96
+
97
+ ```cmd
98
+ # Command Prompt
99
+ net stop "YouTube-API" "YouTube-Bot"
100
+ net start "YouTube-API" "YouTube-Bot"
101
+ ```
102
+
103
+ ## πŸ“± Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слуТбами
104
+
105
+ ### PowerShell ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
106
+ ```powershell
107
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса
108
+ Get-Service YouTube-API, YouTube-Bot
109
+
110
+ # Запуск слуТб
111
+ Start-Service YouTube-API, YouTube-Bot
112
+
113
+ # ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° слуТб
114
+ Stop-Service YouTube-API, YouTube-Bot
115
+
116
+ # ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ слуТб
117
+ Restart-Service YouTube-API, YouTube-Bot
118
+
119
+ # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π»ΠΎΠ³ΠΎΠ²
120
+ Get-EventLog -LogName Application -Source YouTube* -Newest 50
121
+ ```
122
+
123
+ ### Command Prompt ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
124
+ ```cmd
125
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° статуса
126
+ sc query "YouTube-API"
127
+ sc query "YouTube-Bot"
128
+
129
+ # Запуск слуТб
130
+ net start "YouTube-API"
131
+ net start "YouTube-Bot"
132
+
133
+ # ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° слуТб
134
+ net stop "YouTube-API"
135
+ net stop "YouTube-Bot"
136
+ ```
137
+
138
+ ## πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности
139
+
140
+ ### 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° API сСрвСра
141
+ ```powershell
142
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· PowerShell
143
+ $response = Invoke-RestMethod -Uri "http://localhost:8080/health" -Method GET
144
+ $response
145
+
146
+ # Или Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€
147
+ Start "http://localhost:8080"
148
+ ```
149
+
150
+ ### 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° слуТб
151
+ ```powershell
152
+ Get-Service YouTube-* | Format-Table Name, Status, StartType
153
+ ```
154
+
155
+ ### 3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π»ΠΎΠ³ΠΎΠ²
156
+ ```powershell
157
+ # Π›ΠΎΠ³ΠΈ API сСрвСра
158
+ Get-EventLog -LogName Application -Source "YouTube-API" -Newest 10
159
+
160
+ # Π›ΠΎΠ³ΠΈ Telegram Π±ΠΎΡ‚Π°
161
+ Get-EventLog -LogName Application -Source "YouTube-Bot" -Newest 10
162
+ ```
163
+
164
+ ## πŸ”„ ОбновлСниС систСмы
165
+
166
+ ### АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
167
+ ```powershell
168
+ cd $env:USERPROFILE\YouTube
169
+ .\update.ps1
170
+ ```
171
+
172
+ ### Π ΡƒΡ‡Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
173
+ ```powershell
174
+ # ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбы
175
+ Stop-Service YouTube-API, YouTube-Bot
176
+
177
+ # ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄
178
+ cd $env:USERPROFILE\YouTube
179
+ git pull origin main
180
+
181
+ # ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости
182
+ .\.venv\Scripts\Activate.ps1
183
+ pip install -r requirements.txt --upgrade
184
+
185
+ # Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слуТбы
186
+ Start-Service YouTube-API, YouTube-Bot
187
+ ```
188
+
189
+ ## πŸ§ͺ ВСстированиС
190
+
191
+ ### Π ΡƒΡ‡Π½ΠΎΠΉ запуск для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
192
+ ```powershell
193
+ # ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅
194
+ cd $env:USERPROFILE\YouTube
195
+ .\.venv\Scripts\Activate.ps1
196
+
197
+ # Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ API сСрвСр
198
+ python main.py
199
+
200
+ # Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠΊΠ½Π΅ - Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Π°
201
+ python run_telegram_bot.py
202
+ ```
203
+
204
+ ## 🚨 УстранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
205
+
206
+ ### Π‘Π»ΡƒΠΆΠ±Π° Π½Π΅ запускаСтся
207
+ 1. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» .env** - ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΊΠ»ΡŽΡ‡ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹
208
+ 2. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ** - `Get-EventLog -LogName Application -Source YouTube*`
209
+ 3. **ЗапуститС Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ** для диагностики
210
+
211
+ ### Ошибки Π² Π»ΠΎΠ³Π°Ρ…
212
+ ```powershell
213
+ # ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ
214
+ Get-EventLog -LogName Application -Source YouTube* | Format-List
215
+ ```
216
+
217
+ ### ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ 8080
218
+ ```powershell
219
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ свободСн
220
+ netstat -an | findstr :8080
221
+
222
+ # Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚ Π² .env Ρ„Π°ΠΉΠ»Π΅, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слуТбы
223
+ ```
224
+
225
+ ### ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с брандмауэром
226
+ ```powershell
227
+ # Π ΡƒΡ‡Π½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°
228
+ New-NetFirewallRule -DisplayName "YouTube API" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
229
+ ```
230
+
231
+ ## πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
232
+
233
+ ```
234
+ %USERPROFILE%\YouTube\
235
+ β”œβ”€β”€ .env # ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ (API ΠΊΠ»ΡŽΡ‡ΠΈ)
236
+ β”œβ”€β”€ .venv\ # Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Python
237
+ β”œβ”€β”€ main.py # API сСрвСр
238
+ β”œβ”€β”€ run_telegram_bot.py # Telegram Π±ΠΎΡ‚
239
+ β”œβ”€β”€ start-api.ps1 # Π‘ΠΊΡ€ΠΈΠΏΡ‚ запуска API (для слуТбы)
240
+ β”œβ”€β”€ start-bot.ps1 # Π‘ΠΊΡ€ΠΈΠΏΡ‚ запуска Π±ΠΎΡ‚Π° (для слуТбы)
241
+ β”œβ”€β”€ start-api.bat # Π‘ΠΊΡ€ΠΈΠΏΡ‚ запуска API (batch)
242
+ β”œβ”€β”€ start-bot.bat # Π‘ΠΊΡ€ΠΈΠΏΡ‚ запуска Π±ΠΎΡ‚Π° (batch)
243
+ β”œβ”€β”€ requirements.txt # Python зависимости
244
+ β”œβ”€β”€ telegram_requirements.txt
245
+ └── deploy.ps1 # Π‘ΠΊΡ€ΠΈΠΏΡ‚ развСртывания
246
+ ```
247
+
248
+ ## πŸ”— ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки
249
+
250
+ - **API Health Check**: http://localhost:8080/health
251
+ - **API Documentation**: http://localhost:8080/docs
252
+ - **Service Manager**: `services.msc`
253
+ - **Event Viewer**: `eventvwr.msc`
254
+
255
+ ## πŸ’‘ Π‘ΠΎΠ²Π΅Ρ‚Ρ‹
256
+
257
+ 1. **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ PowerShell ISE** для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ рСдактирования скриптов
258
+ 2. **Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ярлыки** для частых ΠΊΠΎΠΌΠ°Π½Π΄ управлСния
259
+ 3. **НастройтС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³** слуТб Ρ‡Π΅Ρ€Π΅Π· Task Scheduler
260
+ 4. **Π”Π΅Π»Π°ΠΉΡ‚Π΅ бэкапы** Ρ„Π°ΠΉΠ»Π° .env ΠΏΠ΅Ρ€Π΅Π΄ обновлСниями
261
+
262
+ ---
263
+
264
+ ## πŸ“ž ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°
265
+
266
+ ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:
267
+ 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ слуТб
268
+ 2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ API ΠΊΠ»ΡŽΡ‡Π΅ΠΉ
269
+ 3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°
270
+ 4. ЗапуститС Ρ€ΡƒΡ‡Π½ΡƒΡŽ диагностику
deploy.bat ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @echo off
2
+ REM πŸš€ YouTube Metadata Extractor - Windows Deployment (Batch)
3
+ REM Simple deployment script for Windows
4
+
5
+ echo πŸš€ Starting deployment of YouTube Metadata Extractor on Windows...
6
+
7
+ REM Check if running as Administrator
8
+ net session >nul 2>&1
9
+ if %errorLevel% == 0 (
10
+ echo βœ… Running as Administrator
11
+ ) else (
12
+ echo ❌ This script must be run as Administrator
13
+ echo Please right-click this file and select "Run as administrator"
14
+ pause
15
+ exit /b 1
16
+ )
17
+
18
+ REM Set configuration
19
+ set PROJECT_DIR=%USERPROFILE%\YouTube
20
+ set REPO_URL=https://huggingface.co/spaces/dzianisBY/YouTube_Creator_MetaData
21
+
22
+ echo βœ… Installing Chocolatey (if not present)...
23
+ where choco >nul 2>&1
24
+ if %errorLevel% == 0 (
25
+ echo Chocolatey already installed
26
+ ) else (
27
+ powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))"
28
+ call refreshenv
29
+ )
30
+
31
+ echo βœ… Installing Python and Git...
32
+ choco install python git -y
33
+ call refreshenv
34
+
35
+ echo βœ… Creating project directory...
36
+ if not exist "%PROJECT_DIR%" mkdir "%PROJECT_DIR%"
37
+ cd /d "%PROJECT_DIR%"
38
+
39
+ echo βœ… Cloning repository...
40
+ if exist ".git" (
41
+ git pull origin main
42
+ ) else (
43
+ git clone %REPO_URL% .
44
+ )
45
+
46
+ echo βœ… Setting up Python virtual environment...
47
+ python -m venv .venv
48
+ call .venv\Scripts\activate.bat
49
+
50
+ echo βœ… Installing Python dependencies...
51
+ python -m pip install --upgrade pip
52
+ pip install -r requirements.txt
53
+ pip install -r telegram_requirements.txt
54
+
55
+ echo βœ… Creating .env template...
56
+ if not exist ".env" (
57
+ echo # YouTube API Configuration > .env
58
+ echo YOUTUBE_API_KEY=your_youtube_api_key_here >> .env
59
+ echo. >> .env
60
+ echo # Telegram Bot Configuration >> .env
61
+ echo TELEGRAM_TOKEN=your_telegram_bot_token_here >> .env
62
+ echo. >> .env
63
+ echo # MCP Server Configuration >> .env
64
+ echo MCP_BASE_URL=https://youtube-bot.tuttech.net/api/mcp >> .env
65
+ echo. >> .env
66
+ echo # Gemini AI Configuration >> .env
67
+ echo GEMINI_API_KEY=your_gemini_api_key_here >> .env
68
+ echo. >> .env
69
+ echo # Server Configuration >> .env
70
+ echo HOST=0.0.0.0 >> .env
71
+ echo PORT=8080 >> .env
72
+
73
+ echo ⚠️ Created .env template file
74
+ echo ⚠️ Please edit %PROJECT_DIR%\.env with your actual API keys!
75
+ )
76
+
77
+ echo βœ… Creating startup scripts...
78
+ echo @echo off > start-api.bat
79
+ echo cd /d "%PROJECT_DIR%" >> start-api.bat
80
+ echo call .venv\Scripts\activate.bat >> start-api.bat
81
+ echo python main.py >> start-api.bat
82
+
83
+ echo @echo off > start-bot.bat
84
+ echo cd /d "%PROJECT_DIR%" >> start-bot.bat
85
+ echo call .venv\Scripts\activate.bat >> start-bot.bat
86
+ echo python run_telegram_bot.py >> start-bot.bat
87
+
88
+ echo βœ… Installing NSSM for Windows Services...
89
+ choco install nssm -y
90
+
91
+ echo βœ… Creating Windows Services...
92
+ nssm remove "YouTube-API" confirm >nul 2>&1
93
+ nssm remove "YouTube-Bot" confirm >nul 2>&1
94
+
95
+ nssm install "YouTube-API" "%PROJECT_DIR%\start-api.bat"
96
+ nssm set "YouTube-API" DisplayName "YouTube MCP API Server"
97
+ nssm set "YouTube-API" Description "YouTube Metadata Extractor API Server"
98
+ nssm set "YouTube-API" Start SERVICE_AUTO_START
99
+
100
+ nssm install "YouTube-Bot" "%PROJECT_DIR%\start-bot.bat"
101
+ nssm set "YouTube-Bot" DisplayName "YouTube Telegram Bot"
102
+ nssm set "YouTube-Bot" Description "YouTube Metadata Extractor Telegram Bot"
103
+ nssm set "YouTube-Bot" Start SERVICE_AUTO_START
104
+ nssm set "YouTube-Bot" DependOnService "YouTube-API"
105
+
106
+ echo βœ… Starting services...
107
+ net start "YouTube-API"
108
+ timeout /t 5 /nobreak >nul
109
+ net start "YouTube-Bot"
110
+
111
+ echo βœ… Configuring Windows Firewall...
112
+ netsh advfirewall firewall add rule name="YouTube API Server" dir=in action=allow protocol=TCP localport=8080 >nul 2>&1
113
+
114
+ echo.
115
+ echo βœ… Deployment completed!
116
+ echo.
117
+ echo πŸ“‹ Next steps:
118
+ echo 1. Edit %PROJECT_DIR%\.env with your API keys
119
+ echo 2. Restart services: net stop "YouTube-API" "YouTube-Bot" ^& net start "YouTube-API" "YouTube-Bot"
120
+ echo 3. Check services: sc query "YouTube-API" ^& sc query "YouTube-Bot"
121
+ echo.
122
+ echo πŸ”— Service URLs:
123
+ echo - API Server: http://localhost:8080
124
+ echo - Health Check: http://localhost:8080/health
125
+ echo.
126
+ echo πŸ“± Service Management:
127
+ echo - Start: net start "YouTube-API" "YouTube-Bot"
128
+ echo - Stop: net stop "YouTube-API" "YouTube-Bot"
129
+ echo - Status: sc query "YouTube-API" ^& sc query "YouTube-Bot"
130
+ echo.
131
+ pause
deploy.ps1 ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # πŸš€ YouTube Metadata Extractor - Windows Deployment Script
2
+ # This script deploys the project on a Windows Server
3
+
4
+ Write-Host "πŸš€ Starting deployment of YouTube Metadata Extractor on Windows..." -ForegroundColor Green
5
+
6
+ # Configuration
7
+ $ProjectDir = "$env:USERPROFILE\YouTube"
8
+ $RepoUrl = "https://huggingface.co/spaces/dzianisBY/YouTube_Creator_MetaData"
9
+ $PythonEnv = "$ProjectDir\.venv"
10
+
11
+ # Function to print colored output
12
+ function Write-Status {
13
+ param($Message)
14
+ Write-Host "βœ… $Message" -ForegroundColor Green
15
+ }
16
+
17
+ function Write-Warning {
18
+ param($Message)
19
+ Write-Host "⚠️ $Message" -ForegroundColor Yellow
20
+ }
21
+
22
+ function Write-Error {
23
+ param($Message)
24
+ Write-Host "❌ $Message" -ForegroundColor Red
25
+ }
26
+
27
+ # Check if running as Administrator
28
+ if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
29
+ Write-Error "This script must be run as Administrator"
30
+ Write-Host "Please right-click PowerShell and select 'Run as Administrator'" -ForegroundColor Yellow
31
+ exit 1
32
+ }
33
+
34
+ # Install Chocolatey if not present
35
+ if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
36
+ Write-Status "Installing Chocolatey package manager..."
37
+ Set-ExecutionPolicy Bypass -Scope Process -Force
38
+ [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
39
+ iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
40
+ refreshenv
41
+ }
42
+
43
+ # Install required software
44
+ Write-Status "Installing system dependencies..."
45
+ choco install python git -y
46
+ refreshenv
47
+
48
+ # Create project directory
49
+ Write-Status "Setting up project directory..."
50
+ if (!(Test-Path $ProjectDir)) {
51
+ New-Item -ItemType Directory -Path $ProjectDir -Force
52
+ }
53
+ Set-Location $ProjectDir
54
+
55
+ # Clone or update repository
56
+ if (Test-Path ".git") {
57
+ Write-Status "Updating existing repository..."
58
+ git pull origin main
59
+ } else {
60
+ Write-Status "Cloning repository..."
61
+ git clone $RepoUrl .
62
+ }
63
+
64
+ # Create virtual environment
65
+ Write-Status "Setting up Python virtual environment..."
66
+ python -m venv $PythonEnv
67
+ & "$PythonEnv\Scripts\Activate.ps1"
68
+
69
+ # Install Python dependencies
70
+ Write-Status "Installing Python dependencies..."
71
+ python -m pip install --upgrade pip
72
+ pip install -r requirements.txt
73
+ pip install -r telegram_requirements.txt
74
+
75
+ # Create .env file template if it doesn't exist
76
+ if (!(Test-Path ".env")) {
77
+ Write-Warning "Creating .env template file..."
78
+ @"
79
+ # YouTube API Configuration
80
+ YOUTUBE_API_KEY=your_youtube_api_key_here
81
+
82
+ # Telegram Bot Configuration
83
+ TELEGRAM_TOKEN=your_telegram_bot_token_here
84
+
85
+ # MCP Server Configuration
86
+ MCP_BASE_URL=https://youtube-bot.tuttech.net/api/mcp
87
+
88
+ # Gemini AI Configuration
89
+ GEMINI_API_KEY=your_gemini_api_key_here
90
+
91
+ # Server Configuration
92
+ HOST=0.0.0.0
93
+ PORT=8080
94
+ "@ | Out-File -FilePath ".env" -Encoding UTF8
95
+ Write-Warning "Please edit .env file with your actual API keys!"
96
+ Write-Warning "File location: $ProjectDir\.env"
97
+ }
98
+
99
+ # Create Windows Service scripts
100
+ Write-Status "Creating Windows Service scripts..."
101
+
102
+ # API Server service script
103
+ @"
104
+ # Start API Server
105
+ Set-Location '$ProjectDir'
106
+ & '$PythonEnv\Scripts\Activate.ps1'
107
+ python main.py
108
+ "@ | Out-File -FilePath "start-api.ps1" -Encoding UTF8
109
+
110
+ # Telegram Bot service script
111
+ @"
112
+ # Start Telegram Bot
113
+ Set-Location '$ProjectDir'
114
+ & '$PythonEnv\Scripts\Activate.ps1'
115
+ python run_telegram_bot.py
116
+ "@ | Out-File -FilePath "start-bot.ps1" -Encoding UTF8
117
+
118
+ # Install NSSM (Non-Sucking Service Manager) for Windows Services
119
+ Write-Status "Installing NSSM for Windows Services..."
120
+ choco install nssm -y
121
+
122
+ # Create Windows Services
123
+ Write-Status "Creating Windows Services..."
124
+
125
+ # Remove existing services if they exist
126
+ try {
127
+ nssm remove "YouTube-API" confirm
128
+ nssm remove "YouTube-Bot" confirm
129
+ } catch {
130
+ # Services don't exist, that's ok
131
+ }
132
+
133
+ # Create API Server service
134
+ nssm install "YouTube-API" powershell.exe
135
+ nssm set "YouTube-API" AppParameters "-ExecutionPolicy Bypass -File `"$ProjectDir\start-api.ps1`""
136
+ nssm set "YouTube-API" DisplayName "YouTube MCP API Server"
137
+ nssm set "YouTube-API" Description "YouTube Metadata Extractor API Server"
138
+ nssm set "YouTube-API" Start SERVICE_AUTO_START
139
+
140
+ # Create Telegram Bot service
141
+ nssm install "YouTube-Bot" powershell.exe
142
+ nssm set "YouTube-Bot" AppParameters "-ExecutionPolicy Bypass -File `"$ProjectDir\start-bot.ps1`""
143
+ nssm set "YouTube-Bot" DisplayName "YouTube Telegram Bot"
144
+ nssm set "YouTube-Bot" Description "YouTube Metadata Extractor Telegram Bot"
145
+ nssm set "YouTube-Bot" Start SERVICE_AUTO_START
146
+
147
+ # Configure service dependencies (Bot depends on API)
148
+ nssm set "YouTube-Bot" DependOnService "YouTube-API"
149
+
150
+ # Start services
151
+ Write-Status "Starting Windows Services..."
152
+ Start-Service "YouTube-API"
153
+ Start-Sleep 5
154
+ Start-Service "YouTube-Bot"
155
+
156
+ # Check service status
157
+ Write-Status "Checking service status..."
158
+ Start-Sleep 5
159
+
160
+ $apiStatus = Get-Service "YouTube-API" -ErrorAction SilentlyContinue
161
+ $botStatus = Get-Service "YouTube-Bot" -ErrorAction SilentlyContinue
162
+
163
+ if ($apiStatus.Status -eq "Running") {
164
+ Write-Status "YouTube API Server is running"
165
+ } else {
166
+ Write-Error "YouTube API Server failed to start"
167
+ Get-Service "YouTube-API" | Format-Table
168
+ }
169
+
170
+ if ($botStatus.Status -eq "Running") {
171
+ Write-Status "YouTube Telegram Bot is running"
172
+ } else {
173
+ Write-Error "YouTube Telegram Bot failed to start"
174
+ Get-Service "YouTube-Bot" | Format-Table
175
+ }
176
+
177
+ # Configure Windows Firewall
178
+ Write-Status "Configuring Windows Firewall..."
179
+ try {
180
+ New-NetFirewallRule -DisplayName "YouTube API Server" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
181
+ Write-Status "Firewall rule added for port 8080"
182
+ } catch {
183
+ Write-Warning "Could not add firewall rule. You may need to do this manually."
184
+ }
185
+
186
+ Write-Status "Deployment completed!"
187
+ Write-Host ""
188
+ Write-Host "πŸ“‹ Next steps:" -ForegroundColor Cyan
189
+ Write-Host "1. Edit $ProjectDir\.env with your API keys"
190
+ Write-Host "2. Restart services: Restart-Service YouTube-API, YouTube-Bot"
191
+ Write-Host "3. Check logs in Event Viewer or service logs"
192
+ Write-Host ""
193
+ Write-Host "πŸ”— Service URLs:" -ForegroundColor Cyan
194
+ Write-Host "- API Server: http://localhost:8080"
195
+ Write-Host "- Health Check: http://localhost:8080/health"
196
+ Write-Host ""
197
+ Write-Host "πŸ“± Service Management:" -ForegroundColor Cyan
198
+ Write-Host "- Start: Start-Service YouTube-API, YouTube-Bot"
199
+ Write-Host "- Stop: Stop-Service YouTube-API, YouTube-Bot"
200
+ Write-Host "- Restart: Restart-Service YouTube-API, YouTube-Bot"
201
+ Write-Host "- Status: Get-Service YouTube-API, YouTube-Bot"
202
+ Write-Host "- Remove: nssm remove YouTube-API confirm; nssm remove YouTube-Bot confirm"
update.ps1 ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # πŸ”„ YouTube Metadata Extractor - Windows Update Script
2
+ # This script updates the project on a Windows Server
3
+
4
+ Write-Host "πŸ”„ Updating YouTube Metadata Extractor on Windows..." -ForegroundColor Green
5
+
6
+ # Configuration
7
+ $ProjectDir = "$env:USERPROFILE\YouTube"
8
+
9
+ # Function to print colored output
10
+ function Write-Status {
11
+ param($Message)
12
+ Write-Host "βœ… $Message" -ForegroundColor Green
13
+ }
14
+
15
+ function Write-Warning {
16
+ param($Message)
17
+ Write-Host "⚠️ $Message" -ForegroundColor Yellow
18
+ }
19
+
20
+ function Write-Error {
21
+ param($Message)
22
+ Write-Host "❌ $Message" -ForegroundColor Red
23
+ }
24
+
25
+ # Check if project directory exists
26
+ if (!(Test-Path $ProjectDir)) {
27
+ Write-Error "Project directory not found: $ProjectDir"
28
+ Write-Error "Please run deploy.ps1 first to set up the project"
29
+ exit 1
30
+ }
31
+
32
+ Set-Location $ProjectDir
33
+
34
+ # Stop services
35
+ Write-Status "Stopping Windows Services..."
36
+ try {
37
+ Stop-Service "YouTube-API" -Force -ErrorAction SilentlyContinue
38
+ Stop-Service "YouTube-Bot" -Force -ErrorAction SilentlyContinue
39
+ Start-Sleep 3
40
+ } catch {
41
+ Write-Warning "Could not stop services (they may not be running)"
42
+ }
43
+
44
+ # Pull latest changes
45
+ Write-Status "Pulling latest changes from repository..."
46
+ git pull origin main
47
+
48
+ # Activate virtual environment and update dependencies
49
+ Write-Status "Updating Python dependencies..."
50
+ & "$ProjectDir\.venv\Scripts\Activate.ps1"
51
+ python -m pip install --upgrade pip
52
+ pip install -r requirements.txt
53
+ pip install -r telegram_requirements.txt
54
+
55
+ # Start services
56
+ Write-Status "Starting Windows Services..."
57
+ try {
58
+ Start-Service "YouTube-API"
59
+ Start-Sleep 5
60
+ Start-Service "YouTube-Bot"
61
+ } catch {
62
+ Write-Error "Could not start services. They may need to be created first."
63
+ Write-Error "Please run deploy.ps1 to set up services."
64
+ }
65
+
66
+ # Check service status
67
+ Write-Status "Checking service status..."
68
+ Start-Sleep 5
69
+
70
+ try {
71
+ $apiStatus = Get-Service "YouTube-API" -ErrorAction SilentlyContinue
72
+ $botStatus = Get-Service "YouTube-Bot" -ErrorAction SilentlyContinue
73
+
74
+ if ($apiStatus -and $apiStatus.Status -eq "Running") {
75
+ Write-Status "YouTube API Server is running"
76
+ } else {
77
+ Write-Error "YouTube API Server is not running"
78
+ if ($apiStatus) {
79
+ Get-Service "YouTube-API" | Format-Table
80
+ }
81
+ }
82
+
83
+ if ($botStatus -and $botStatus.Status -eq "Running") {
84
+ Write-Status "YouTube Telegram Bot is running"
85
+ } else {
86
+ Write-Error "YouTube Telegram Bot is not running"
87
+ if ($botStatus) {
88
+ Get-Service "YouTube-Bot" | Format-Table
89
+ }
90
+ }
91
+ } catch {
92
+ Write-Error "Could not check service status. Services may not be installed."
93
+ }
94
+
95
+ Write-Status "Update completed!"
96
+ Write-Host ""
97
+ Write-Host "πŸ“‹ Useful commands:" -ForegroundColor Cyan
98
+ Write-Host "- Check service status: Get-Service YouTube-API, YouTube-Bot"
99
+ Write-Host "- Start services: Start-Service YouTube-API, YouTube-Bot"
100
+ Write-Host "- Stop services: Stop-Service YouTube-API, YouTube-Bot"
101
+ Write-Host "- Restart services: Restart-Service YouTube-API, YouTube-Bot"
102
+ Write-Host "- Check logs: Get-EventLog -LogName Application -Source YouTube*"
103
+ Write-Host "- Manual start API: cd '$ProjectDir'; .\.venv\Scripts\Activate.ps1; python main.py"
104
+ Write-Host "- Manual start Bot: cd '$ProjectDir'; .\.venv\Scripts\Activate.ps1; python run_telegram_bot.py"