mosinjonovjasurbek00/animam-stream
Public
wasmer run mosinjonovjasurbek00/animam-stream
wasmer run mosinjonovjasurbek00/animam-stream
š AnimamStream ā Animam.uz Uchun Maxsus Video Hosting & HLS Streaming Tizimi
AnimamStream ā bu animam.uz anime platformasi uchun maxsus ishlab chiqilgan, yuqori tezlikda ishlovchi, server resurslarini tejovchi va Wasmer Edge (PostgreSQL) hamda Archive.org (S3 & Cheksiz CDN) asosida ishlaydigan zamonaviy video hosting xizmati.
š Asosiy Afzalliklari
- ā” Serverga 0% Og'irlik (Minimal Resource Footprint):
- Video yuklash jarayoni to'g'ridan-to'g'ri foydalanuvchi/admin brauzeridan Archive.org S3 CDN ga amalga oshiriladi.
- Wasmer serveringiz og'ir videolarni qayta ishlashga (re-encoding) va gigabaytlab video trafigiga o'z resursini sarflamaydi.
- š Cheksiz Xotira & Bepul Global CDN:
- Barcha videofayllar Internet Archive (Archive.org) da saqlanadi.
- Foydalanuvchilar videolarni to'g'ridan-to'g'ri Archive.org ning yuqori tezlikdagi CDN tarmog'idan stream qilib ko'radi.
- š¬ Anime Uchun Maxsus Video Player:
- HLS.js bilan o'ta tez yuklanish: Kam kechikish (low latency), aqlli buffer prefetching.
- Intro (Opening) o'tkazish (+85s): Bir bosish bilan animening boshlanish qo'shig'ini o'tkazib yuborish.
- Ending o'tkazish: Qism oxiridagi titrlarni o'tkazib, keyingi qismga o'tish.
- Qismlar ro'yxati (Drawer): Playerni yopmasdan turib boshqa qismlarni tanlash.
- Sifat & Tezlik tanlash: Auto, 1080p, 720p, 480p hamda 0.5x - 2.0x tezliklar.
- Klaviatura boshqaruvi:
Space(Play/Pause),ā / ā(5s oldinga/orqaga),F(Fullscreen),M(Mute),N(Next Episode),S(Skip Intro).
- š Wasmer Edge Managed PostgreSQL Integratsiyasi:
- Wasmer Edge avtomatik tarzda PostgreSQL bazasini ulaydi (
app.yaml). - Dastur Wasmer taqdim etgan
DB_HOST,DB_PORT,DB_NAME,DB_USERNAME,DB_PASSWORDorqali to'g'ridan-to'g'ri ulanadi. - Mahalliy testlar uchun esa avtomatik SQLite ga o'tadi.
- Wasmer Edge avtomatik tarzda PostgreSQL bazasini ulaydi (
- š± Qulay Boshqaruv Paneli (Admin Dashboard):
- Animelar katalogini boshqarish.
- Drag & Drop video yuklagich (tezlik, qolgan vaqt va foiz ko'rsatkichi bilan).
- Tayyor iframe kodini bir bosishda nusxalash.
š Loyiha Tuzilmasi
animam-stream/
āāā app.yaml # Wasmer Edge App va PostgreSQL konfiguratsiyasi
āāā wasmer.toml # Wasmer paket manifesti
āāā server.py # Asosiy Python server (REST API & Embed Player)
āāā database.py # PostgreSQL (Wasmer) va SQLite ma'lumotlar bazasi qatlami
āāā archive_client.py # Archive.org S3 API integratsiyasi
āāā seed.py # Dastlabki namunaviy ma'lumotlar bilan to'ldirish
āāā requirements.txt # Kerakli kutubxonalar (psycopg, requests)
āāā Dockerfile # Konteyner fayli (ixtiyoriy)
āāā static/
ā āāā css/
ā ā āāā style.css # Dashboard dizayni (Dark Neon Anime uslubi)
ā ā āāā player.css # Video player dizayni
ā āāā js/
ā āāā app.js # Dashboard boshqaruv logikasi
ā āāā player.js # HLS Player mexanizmi va Anime tugmalari
āāā templates/
āāā dashboard.html # Admin boshqaruv paneli
āāā embed.html # Animam.uz sayti uchun Iframe Player
āāā docs.html # API va integratsiya qo'llanmasi
š Wasmer.io ga Joylash (Deployment)
Wasmer Edge ilovangiz uchun avtomatik ravishda PostgreSQL ma'lumotlar bazasini yaratib beradi.
-
Wasmer CLI ga kiring:
wasmer login -
Loyihani deploy qiling:
cd /home/jasurbek/.gemini/antigravity/scratch/animam-stream wasmer deploy -
Wasmer avtomatik tarzda:
app.yamldagicapabilities.databaseorqali PostgreSQL bazasini ishga tushiradi.- Kerakli jadvallarni (
anime,episodes,settings,video_qualities) avtomatik yaratadi. - Sizga jonli domen beradi:
https://animam-stream.wasmer.app!
š Archive.org S3 Kalitlarini Olish
Videolarni Archive.org ga dastur orqali yuklash uchun:
- archive.org saytida hisob yarating va kiring.
- archive.org/account/s3.php manziliga o'ting.
- Generate New Keys tugmasini bosing.
- Chiqqan Access Key va Secret Key nusxasini oling.
- AnimamStream boshqaruv panelidagi "Sozlamalar & API" bo'limiga kirib kalitlarni saqlang (yoki
.envfaylidaARCHIVE_ACCESS_KEYvaARCHIVE_SECRET_KEYqilib qo'ying).
šŗ Animam.uz Saytiga Iframe Orqali Joylash
Saytingizdagi tomosha qilish sahifasiga bitta qator kod qo'shing:
<iframe
src="https://<sizning-wasmer-manzilingiz>.wasmer.app/embed/EPISODE_ID"
width="100%"
height="540"
frameborder="0"
allowfullscreen
allow="autoplay; fullscreen; picture-in-picture">
</iframe>
Yoki qulayroq usulda ā anime slugi va qism raqami orqali:
<iframe
src="https://<sizning-wasmer-manzilingiz>.wasmer.app/embed/naruto-shippuden/1"
width="100%"
height="540"
frameborder="0"
allowfullscreen>
</iframe>
š” REST API Yo'riqnomasi
Animam.uz frontend yoki backendidan to'g'ridan-to'g'ri bog'lanish uchun:
| Metod | Endpoint | Tavsif |
|---|---|---|
GET | /health | Server va PostgreSQL bazasi holatini tekshirish |
GET | /api/v1/anime | Barcha animelar va ularning qismlar sonini olish |
GET | /api/v1/anime/{slug} | Tanlangan anime va uning barcha qismlarini olish |
POST | /api/v1/anime | Yangi anime yaratish (title, slug, poster_url, ...) |
GET | /api/v1/episodes/{id} | Qismning to'liq oqim ma'lumotlari va Intro skip vaqtlari |
POST | /api/v1/upload/init | Archive.org ga yuklash parametrlarini generatsiya qilish |
GET | /api/v1/settings | Ommaviy tizim sozlamalarini olish |
š» Mahalliy Kompyuterda Ishga Tushirish
cd /home/jasurbek/.gemini/antigravity/scratch/animam-stream
# 1. Namunaviy ma'lumotlarni yuklash (Test uchun)
python3 seed.py
# 2. Serverni ishga tushirish
python3 server.py
Brauzerda oching:
- Boshqaruv paneli: http://localhost:8080/dashboard
- Namunaviy qism tomoshasi: http://localhost:8080/embed/1
- API va Yo'riqnoma: http://localhost:8080/docs