Persian subtitles Stremio addon powered by the SubSource API. Provides Persian subtitles for movies and TV series with automatic episode matching, subtitle downloading, encoding conversion, and Cloudflare Workers deployment.
✨ قابلیتها
💬 زیرنویس فارسی از SubSource با منبع رسمی api.subsource.net/api/v1
🧠 استراتژی جستجوی ترکیبی (Hybrid) برای سریالها: اول «نام سریال + شماره فصل» از طریق Cinemeta، سپس fallback به «جستجو با IMDb»
🎯 تطبیق هوشمند فصل و قسمت با الگوهای S01E05، S1E5، 1x05 و پشتیبانی از Season Pack (COMPLETE + SEASON01 / S01)
🧪 نرمالسازی قبل از تطبیق با حذف فاصله، -، . و _ و بزرگنمایی نام ریلیز تا الگوهای متفاوت یک فایل جواب بدهند
📦 Decoder مستقل ZIP در دو runtime: در Node با adm-zip و در Worker با پارسر دستی ZIP + DecompressionStream('deflate-raw') (بدون وابستگی)
🔤 تشخیص خودکار encoding فارسی: تلاش با UTF-8 و در صورت دیدن کاراکتر جایگزینی (\uFFFD) یا throw در حالت strict، تبدیل از Windows-1256
🏷️ lang: fas و title برچسبدار برای هر زیرنویس تا در لیست Stremio نام ریلیز (مثلاً WEB-DL 1080p) دیده شود
🟡 متن حمایت (Promo) داخل زیرنویس با رنگ زرد، مدت و موقعیت قابل تنظیم (start / end)
🔁 کلاینت HTTP با retry: حداکثر ۳ تلاش مجدد با backoff تصاعدی + jitter برای خطاهای ECONNRESET، ETIMEDOUT، EAI_AGAIN، 429 و 5xx
⚡ جلوگیری از socket مرده: keepAlive: false روی agentهای http/https تا اتصال stale باعث read ECONNRESET نشود
🖥️ حالت Cluster برای استفاده از همه هستههای CPU با راهاندازی مجدد خودکار worker مرده و shutdown تدریجی
🩺 /health با وضعیت process (uptime، memory، cpuLoad) برای load balancer و مانیتورینگ
🚦 لاگ درخواستها با زمان پاسخ (GET /manifest.json - 200 (15ms))
🌐 CORS، trust proxy و حذف X-Powered-By در نسخه Node؛ هدرهای access-control-* روی همه پاسخهای Worker
🧯 بدون crash برای کاربر: هر خطا به { "subtitles": [] } تبدیل میشود تا Stremio فقط لیست خالی نشان دهد
📦 دو runtime: Node.js/Express (server.js / addon.js) و Cloudflare Workers (worker.js) با manifest.js مشترک
🚀 دیپلوی خودکار Worker با GitHub Actions و validate شدن bundle قبل از deploy (--dry-run)
