# M3U8 → MP4 1080p Telegram Bot (PHP + FFmpeg)

## To'liq o'rnatish qo'llanmasi

---

## Talablar

| Talab | Versiya |
|-------|---------|
| PHP | 8.0+ |
| FFmpeg | 6.0+ (libx264 bilan) |
| XAMPP / Apache | Ixtiyoriy |
| HTTPS | Webhook uchun majburiy |

---

## 1-qadam: FFmpeg o'rnatish (Windows)

1. **FFmpeg yuklash:** https://ffmpeg.org/download.html → "Windows builds by BtbN"
2. `ffmpeg-master-latest-win64-gpl.zip` ni yuklab oching
3. `ffmpeg\bin\` papkasini `C:\ffmpeg\bin\` ga nusxalang
4. Tekshirish (CMD):
   ```cmd
   C:\ffmpeg\bin\ffmpeg.exe -version
   ```

---

## 2-qadam: Telegram Bot yaratish

1. [@BotFather](https://t.me/BotFather) ga `/newbot` yuboring
2. Bot nomi va username kiriting
3. **Token** ni oling (masalan: `123456789:AAH...`)

---

## 3-qadam: `config.php` ni sozlash

```php
define('BOT_TOKEN', '123456789:AAHxxx...xxx');  // ← shu yerga token
define('WEBHOOK_SECRET', 'mening_maxfiy_kalitim'); // ← o'zingiz o'ylab toping
define('FFMPEG_PATH', 'C:\\ffmpeg\\bin\\ffmpeg.exe'); // ← ffmpeg yo'li
```

---

## 4-qadam: Webhook o'rnatish

Brauzerda quyidagi URL ni oching (bir marta):

```
https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://yoursite.com/videoupload/bot.php?secret=<WEBHOOK_SECRET>
```

**Misol:**
```
https://api.telegram.org/bot123456789:AAH.../setWebhook?url=https://mysite.com/videoupload/bot.php?secret=my_super_secret_key_2024
```

Muvaffaqiyatli javob:
```json
{"ok": true, "result": true, "description": "Webhook was set"}
```

---

## 5-qadam: Papka huquqlarini tekshirish

`downloads/` va `logs/` papkalariga yozish huquqi bo'lishi kerak.
(XAMPP da odatda avtomatik ishlaydi)

---

## Ishlatish

1. Botga `/start` yuboring → Salom xabari kelishi kerak
2. `/status` yuboring → Server holati
3. M3u8 havolasini yuboring:
   ```
   https://example.com/live/playlist.m3u8
   ```
4. Bot "Yuklanmoqda..." deydi va bir necha daqiqadan so'ng video yuboradi

---

## Fayl tuzilmasi

```
videoupload/
├── bot.php         ← Webhook (Telegram so'rovlarini qabul qiladi)
├── worker.php      ← FFmpeg ishga tushiruvchi background jarayon
├── config.php      ← Sozlamalar
├── helpers.php     ← Yordamchi funksiyalar
├── downloads/      ← Vaqtincha MP4 fayllar (avtomatik tozalanadi)
├── logs/           ← Kunlik log fayllar
└── README.md       ← Bu fayl
```

---

## Cheklovlar

| Mezon | Qiymat |
|-------|--------|
| Telegram sendVideo limiti | 50 MB |
| Telegram sendDocument limiti | 2 GB |
| Maksimal FFmpeg parallelligi | 4 yadro |
| Video sifat | 1080p (1920x1080) |
| Kodek | H.264 (libx264) + AAC |

---

## Xatolarni bartaraf etish

### FFmpeg topilmadi
`config.php` da `FFMPEG_PATH` ni to'g'rilang.

### Webhook ishlamayapti
- Sayt HTTPS bo'lishi shart
- `secret` parametri mos kelishi kerak
- XAMPP localhost da ishlatish uchun **ngrok** ishlating:
  ```cmd
  ngrok http 80
  ```

### Video yuklanmayapti
- M3U8 URL ochiq (autentifikatsiyasiz) bo'lishi kerak
- Logs papkasini tekshiring: `logs/YYYY-MM-DD.log`

---

## Localhost uchun (ngrok bilan)

```cmd
# 1. ngrok ishga tushiring
ngrok http 80

# 2. Kelgan HTTPS URL ni oling (masalan: https://abc123.ngrok.io)

# 3. Webhook o'rnating
https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://abc123.ngrok.io/videoupload/bot.php?secret=<SECRET>
```
