🎬 جلسة الترفيه + اللابتوب + R2 (2026-07-21 مساءً → 07-22)
R2 + القرص
- نسخة R2 كاملة جديدة (21/7):
r2:kiloclaw/server-full-backup/20260721-201350/ = 120.3GB مشفّرة AES-256 (docker+volumes، بثّ مباشر). عبر full_server_secure_backup.sh.
- حُذفت
/data/preupgrade_2237/ (48GB، نسخة 15/7 المفكوكة) بعد فحص خماسي قاطع (لا mount/docker-mount/cron/symlink) + تأكيد النسخة الجديدة على R2. القرص تحرّر.
- درس: رسالة قديمة ادّعت 3 نسخ كاملة (74/86GB) على R2 — الفحص أثبت أنها لم تكتمل الرفع. لا تعتمد على «تُبثّ الآن» كأنها اكتملت؛ تحقّق من الحجم النهائي على R2.
Entertainment Hub — فلتر الاشتراكات + دقّة التصنيف (app.py + catalog_search.py + templates/index.html)
- فلتر الاشتراكات (11): عمود
items.sub (K8/Supreme/Adam vip new/Almodamer/Lion/Adam gold/Maven/xiptv/MH new/Bazoka/Cartoon) + «__nosub». browse(subs=) + endpoint /api/catalog/subs. شرائح ذهبية في _browseSubBar.
- أعداد الاشتراكات متّصلة بكل الفلاتر:
browse_facets يرجع sub_facets (refined by sel+kind+year) → الأعداد تتقلّص عند اختيار فئة (كوميدي: K8 2632 بدل 219840). الاشتراك بصفر يختفي.
- توحيد المكرّر: مبني أصلاً في
renderGroupedSearch (جمع بـ kind|name_norm + سطر «📡 مصادر»). 64,835 عنوان في >1 اشتراك.
- 3 أفكار: #1 ترتيب الأغنى (subs endpoint sorted desc) · #2 إحصائية sub_facets (فيلم/مسلسل/قناة) · #3 زر «💎 الحصري فقط» (
browse(exclusive=) → name_norm NOT IN other subs).
- 🔴 إصلاح تصنيف +18 (genres.py — 3 جذور): (1)
"18" كانت تطابق سنوات (2018) → regex دقيق (?<!\d)\+18|18\s*\+ على raw لا norm. (2) norm("18+")→"18" عارية → أُزيلت من القائمة. (3) "cinema x"/"سينما اكس" (سينما عادية) → أُزيلت. adult: من فوضى 742K → 27 عنوان حقيقي فقط. أُعيد تصنيف 5820 فئة. القنوات (live) adult نظيفة (For Adults/HANIME).
- 🔴 خط أحمر محفوظ: صفر مساس بمشغّل الفيديو/العرض/seek bar (playHit/hls/currentTime) — كل التعديلات في محرّك التصنيف + شريط الفلاتر فقط.
- الـ Hub على المنفذ 8899 (HUB_PORT)، keepalive guard. restart = kill fuser 8899/tcp + setsid.
توحيد مصادقة اللابتوب (WSL kali، /home/wayrk/restore2/docker)
- Open WebUI (local-ai):
WEBUI_AUTH=False يرفض مع مستخدمين موجودين → مسحنا webui.db (bind mount ./data، backup webui.db.bak-reset) → تثبيت نظيف → دخول مباشر. OLLAMA_BASE_URL كان يشير لاسم السيرفر openclaw-4x4t-openclaw-1:11434 → صُحّح لـ host.docker.internal:11434 (Ollama على ويندوز). درس: Ollama ويندوز يحتاج OLLAMA_HOST=0.0.0.0 (User env) ليصله Docker/WSL. 21 نموذج محمّل (تحذير M-085: لا 70b/35b على CPU).
- Grafana (monitoring): مضبوط أصلاً anonymous Admin + disable_login_form → لا يحتاج شيئاً محلياً.
- Files (filebrowser):
--noauth في command (password update يفشل: DB lock + min 12 chars). دخول مباشر.
- سكربت موحّد:
projects/laptop-arsenal/unify_local_auth.sh (أُرسل).
- درس PowerShell/WSL: مسارات حرفية كاملة، صفر
$(pwd)، اقتباسات مفردة، wget غير موجود في open-webui (استخدم curl).
🔴 تصحيح جوهري (00:38): Adam vip new — vod مفقود بالكامل (فهرسة لا تصنيف)
- د. وائل كان محقّاً: استنتجتُ خطأً أن Adam vip new «قنوات فقط». الحقيقة: الاشتراك يرجع 240,525 فيلم vod (تأكيد بالاتصال المباشر get_vod_streams)، لكن قاعدتنا vod=0 له → آخر فهرسة فشلت في جلب vod لهذا الاشتراك (الفئات معرّفة في cats لكن items فارغة، 444 فئة بلا محتوى).
- الحل:
indexer.py --all (إعادة فهرسة كاملة، 47s، 1,160,702 عنصر). ⚠️ خطر: --sub <name> يبني DB من اشتراك واحد ثم swap ذرّي → يمسح الباقي! لا تستخدمه — استخدم --all دائماً.
- النتيجة: Adam vip new = 240,525 vod (كان 0). adult vod: Adam 17,264 + Supreme 1,907 + K8 27 = 19,198 (كان 27). مؤكّد E2E من hub.drwaelalkishawi.com.
- الدرس المعمّم: عند «فئة فارغة» تحقّق أولاً من الفهرسة (items count per sub/kind) لا التصنيف فقط. الاشتراك قد يرجع محتوى لكن الفهرسة فشلت جزئياً (timeout على استجابة ضخمة). فحص التشخيص:
SELECT sub, SUM(kind='vod'), SUM(kind='series'), SUM(kind='live') FROM items GROUP BY sub.
تحسين احترافي أخير (00:50): أرقام على كل الشرائح + تدقيق شامل
- أرقام شرائح النوع (kind_facets): browse_facets يرجع kind_facets (vod/series/live/movies) refined by sel+since → شرائح «أفلام ومسلسلات/أفلام فقط/مسلسلات فقط/قنوات» تعرض عددها وتتحدّث مع الفئة المختارة.
- أرقام شرائح «بضغطة واحدة» (Presets): endpoint
/api/catalog/preset-counts?presets=<json> (COUNT خفيف لكل preset، cache) → _loadPresetCounts غير محجوب يملأ الأرقام. أحدث الأفلام 8203 · كوميديا عربي 106 · رعب أجنبي 21305.
- البحث في التصفّح مؤكّد: q العام + بالاسم داخل الفلاتر يعمل (batman 1576).
- حارس التدقيق الدائم:
audit_catalog.py (فهرسة كل sub×kind + تغطية + anomaly) مربوط بـ cron الفهرسة a52c22e6 (announce تنبيه عند خلل). التدقيق الحالي: 1,160,702 عنصر · 11 اشتراك · صفر نوع مفقود · تغطية 93.3%.