EGDownloader-API / README.md
alisaadhq's picture
Update README.md
c41ece5 verified
|
Raw
History Blame Contribute Delete
3.43 kB
metadata
title: EGDownloader-API
sdk: docker
emoji: 
colorFrom: red
colorTo: yellow
pinned: false

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

Video Download Middleware API

وسيط بين الـ client وبين n8n / GitHub Action pipeline.


الـ Flow الكامل

Client
  │
  ├─ POST /download  {"url": "https://youtube.com/..."}
  │        ↓
  │   API يبعت trigger لـ n8n  (webhook "run gethup action")
  │        ↓
  │   n8n يشغل GitHub Action
  │        ↓
  │   GitHub Action يحمّل الفيديو وبعدين يبعت POST على
  │   /n8n/callback/{job_id}  ← الـ API بيستقبله ويحفظ الفيديو
  │
  ├─ GET /status/{job_id}   ← polling كل 5 ثواني مثلاً
  │        ↓ لما status = "done"
  └─ GET /file/{job_id}     ← يجيب الفيديو

Endpoints

Method Path الوصف
POST /download ابدأ تحميل جديد
GET /status/{job_id} اعرف الحالة
GET /file/{job_id} حمّل الفيديو
POST /n8n/callback/{job_id} n8n بيبعت النتيجة هنا
GET /jobs قائمة كل الجوبز (للـ debug)
DELETE /job/{job_id} احذف جوب وملفه
GET /health health check

مثال كامل

1. ابدأ التحميل

curl -X POST https://your-api/download \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=3Yw2SGumGQ8"}'

# Response:
# {"job_id": "abc-123", "status": "processing"}

2. اعمل polling

curl https://your-api/status/abc-123

# بيرجع:
# {"job_id":"abc-123","status":"processing",...}   ← لسه بيتحمل
# {"job_id":"abc-123","status":"done","download_url":"https://your-api/file/abc-123",...}  ← خلص

3. حمّل الفيديو

curl -L https://your-api/file/abc-123 -o video.mp4

كيف تربطه بـ n8n

في n8n، الـ node اللي كان بيبعت النتيجة (downlode video1) محتاج يبعت على:

https://YOUR_API_URL/n8n/callback/{job_id}

الـ job_id بيوصل لـ n8n في الـ inputs لما الـ API يشغل الـ workflow.

n8n يدعم حالتين:

Case A – JSON (مجرد إشعار إن الأرتيفاكت جاهز):

{
  "status": "success",
  "run_id": "25934033751",
  "filename": "video.mp4"
}

→ الـ API هيجيب الأرتيفاكت من GitHub بنفسه.

Case B – Raw binary (يبعت الفيديو نفسه): بس يبعت binary body + header:

x-filename: video.mp4
Content-Type: video/mp4

Environment Variables

PUBLIC_URL=https://your-api-public-url.com   # مهم جداً عشان n8n يعرف يرد
GITHUB_TOKEN=ghp_...
GITHUB_REPO=expher510/AutoClip-Pipeline
WORKFLOW_FILE=video-download.yml
N8N_TRIGGER_URL=https://egauto-n8n.hf.space/webhook/run%20gethup%20action

تشغيل محلي

pip install -r requirements.txt
PUBLIC_URL=https://xxxx.ngrok.io uvicorn main:app --reload --port 8000

تشغيل على Hugging Face Spaces (Docker)

  1. ارفع الملفات على Space جديد (Docker SDK)
  2. حط الـ env vars في Settings → Repository secrets
  3. الـ port هو 7860