Spaces:
Running
Running
Commit History
18 days ago
-
Classify RTMPS filter timeouts as output failures Running
Verified signatureKeep YouTube output timeouts on the ingest-recovery path instead of switching a healthy TikTok FLV source to HLS.d53484b
23 days ago
-
v2.45: port dual ingest and probed canvas fixes
Arena.ai Agent7d0d1e4
24 days ago
-
v2.42 start supervisor: recover a stuck YouTube start by restarting the sender (fresh dual ingest) after 150s unconfirmed, max 3 attempts
Verified signaturefda7418 -
v2.42 start supervisor: recover a stuck YouTube start by restarting the sender (fresh dual ingest) after 150s unconfirmed, max 3 attempts
Verified signature740b983 -
v2.42 start supervisor: recover a stuck YouTube start by restarting the sender (fresh dual ingest) after 150s unconfirmed, max 3 attempts
Verified signature252d309
25 days ago
-
v2.41 dual simultaneous YouTube ingest (primary+backup tee fan-out)
Verified signature11c992e -
relay-v2.40-avfill-splice: apply On-validated A/V fill splice fix fleet-wide
Verified signatureOperator-approved fleet rollout of the On trial: sequence headers stamped 0 no longer consume the splice bias, bridge operations are serialized, fill writes are deadline-bounded, and the watchdog no longer shields a stalled/inflated fill.759cd5a
-
v2.37-fill-span: bound watchdog fill exemption + pump renewal by whole fill episode (fill_until)
Verified signature562e9e9 -
Renew stdin write deadline while gap-filling (v2.36-fill-renewal)
Verified signatureba4c97b -
Post-fill/reattach seam credit for write deadline (v2.35-seam-credit)
Verified signaturee52259d -
Keyframe-gated resume + fill-credit write deadline (v2.34-keyframe-gate)
Verified signatureae84ed2 -
Persistent room format lock + fill/swap-aware write deadline (v2.33-format-lock-fillguard)
Verified signature7cd8d15
-
Exact copy of Reoo88/On @ 826bfe0 (relay-v2.32-gap-filler)
Verified signature230919e -
V17.1: smart media policy + join integrity (timescale-normalized video concat, per-piece audio rebuild, mandatory join_check, A/V parity before upload) — root cause of MFINDQ-voJ0
Verified signatureabb407e -
V16: تزامن الصوت والصورة — قياس فجوات الصوت وإعادة ترميز الصوت وحده عند الحاجة؛ إصلاح أساس الإزاحة عند اللصق؛ اختبارات علامة مزدوجة
Verified signaturef72fedd -
تشخيص: inspect يعرض fileDetails (مدة الملف الأصلي كما قرأها يوتيوب)
Verified signature570a87a -
V15: لا حذف قبل اكتمال معالجة يوتيوب + إصلاح تلقائي للملف الذي تفشل معالجته
Verified signature- uploadStatus=uploaded لم يعد كافيًا للحذف؛ الشرط processed + contentDetails.duration ≥ 90% من مدة التسجيل (ffprobe) - انتظار المعالجة في الخلفية (كل دقيقة ثم كل 5 دقائق حتى 24 ساعة) دون حبس خيط الرفع - failed/conversion/codec/processingErrors/مدة ناقصة/انتهاء المهلة ⇒ الملف يبقى ⇒ إعادة بناء بإطار واحد H.264/AAC في خيط مستقل ⇒ رفع من جديد - uploadAborted ونحوه ⇒ إعادة رفع الملف نفسه؛ rejected/استنفاد المحاولات ⇒ توقف نهائي، ملف محمي، بلا إعادة تبنٍّ تلقائي - اللوحة: حالة المعالجة عند يوتيوب لكل عنصر، بطاقة للملفات المتوقفة مع تنزيل/إعادة رفع، GET /api/archive/inspect/{video_id} - اختبارات: 45 حالة جديدة (test_archive.py 110، test_dashboard.js 10)a534952
-
Confirm archive channel changes safely; apply fresh global TikTok cookies
Verified signaturePreserve previous channel history, resumable upload evidence and quota. Pause archive before explicit adoption. Guard the archive worker, unify Secret-first session resolution, accept JSON cookies and add regression coverage. Recording/upload only; no live relay.07dc91a -
V28: ملف واحد حتى عند تغيّر الكوديك — يُعاد ترميز الجزء الأصغر وحده
Verified signature5142aa3 -
V27: إصلاح سباق التجهيز الذي كان يمنع ضمّ أجزاء البث الواحد
Verified signaturecac959f -
V26: تشخيص حقيقي لفشل الضمّ بدل الابتلاع الصامت
Verified signature7cccb12 -
V25: إصلاح حرج — مجلد التسجيلات يختفي على التخزين الكائني فتموت خيوط المراقبة
Verified signature55206d5
-
V24: قراءة معرّف المذيع كاملًا + تبنّي الملفات العالقة خارج الطابور
Verified signaturefcf7bd0 -
V23: ذاكرة ألقاب دائمة تنجو من إعادة التشغيل
Verified signature1be5d66 -
V23: ذاكرة ألقاب دائمة تنجو من إعادة التشغيل
Verified signaturea1b2a06 -
V22: اختبارات كنس البقايا
Verified signature90f3697 -
V22: ضمان عدم تسرّب الملفات الوسيطة + كنس واستئناف البقايا عند الإقلاع
Verified signaturead652e1 -
V21: لا يُرفع بثّ لم ينتهِ — انتظار توقّف التسجيل ثم ضمّ الأجزاء في رفعة واحدة
Verified signaturec77f83c -
V20: بثّ واحد = ملف واحد = رفعة واحدة (صبر إعادة الوصل، إلغاء القطع عند تغيّر المقاس، ضمّ التسجيلات قبل الرفع)
Verified signature22f7dc9
-
V19: ملف واحد بإطار ثابت (معظمه نسخ خالص) فلا تمطيط ولا تقسيم + اسم المذيع لا يُمحى بردّ ناقص
Verified signature11ae735 -
V18: تقسيم بث الجولات عند تغيّر المقاس (نسخ خالص) فلا يمطّط يوتيوب الصورة + ترقيم الأجزاء + حماية الأجزاء من التنظيف
Verified signature5cb16cb -
V17: اللقب الطويل لم يعد يبتر @اليوزر والتاريخ من العنوان
Verified signatureb2a32c2 -
V16: قراءة الاستهلاك الحقيقي من Cloud Monitoring (اختياري، معطّل افتراضيًا)
Verified signature8883c54 -
V15: مزامنة عدّاد الرفعات مع رفض يوتيوب + تمييز التمهّل المؤقت عن نفاد الحصة
Verified signaturee0b4071 -
V14: اعتماد دلو كوتا الرفع المستقل — 90 رفعة يوميًا بدل 5
Verified signature5814110 -
تصحيح رسالة سجل قديمة تذكر توحيد الإطار
Verified signature31cc185 -
V13: ملف واحد بلا إعادة ترميز — حقن المعاملات داخل الإطارات المفتاحية (يشمل HEVC)
Verified signature0921224 -
V12: إصلاح الجولات الرباعية بلا أي إعادة ترميز (نسخ خالص avc3 + تقسيم احتياطي)
Verified signaturee4886eb -
V11: إلغاء البث المباشر + إصلاح تشويه الصورة في الجولات الرباعية
Verified signatureإلغاء البث المباشر: حذف youtube_manager.py و relay.py و flv_bridge.py و test_concurrency.py و verify.sh ولوحة مدير الأحداث ومسارات /api/youtube/start|stop|settings. بديلها youtube_core.py يحمل OAuth والكوتا والقناة للأرشفة فقط. إصلاح الجولات الرباعية: FLVWriter صار يتتبع إعداد الصورة الفعال (لا أول إعداد) فلا يُسقط وسم العودة بعد الجولة، وعند تعدد إعدادات الصورة يُبنى MP4 مباشرة من FLV بإطار ثابت على المقاس الغالب مع حفظ النسبة بدل تمريره على mkvmerge الذي يفقد الإعداد الثاني. التسجيلات ذات المقاس الواحد تبقى نسخًا بلا إعادة ترميز. اختبارات: test_archive.py 19/19 و test_geometry.py 7/7.f0a41fa
-
تمييز الحساب غير الموجود على تيك توك عن فشل الشبكة
Verified signatureتيك توك يرد HTTP 200 مع statusCode=19881007/user_not_found للأسماء غير الموجودة، فكان الحساب يظهر «فشل طلب بيانات البث» إلى الأبد ويُستعلم عنه كل دقيقة بلا طائل. الآن يُعرض «الحساب غير موجود» وتُهدَّأ إعادة المحاولة إلى 10 دقائق.bc98ae5 -
بثٌّ واحد = ملف واحد = رفعة واحدة + تحقق لا يحبس الطابور
Verified signatureFLVWriter.reconnect(): تيك توك يجدّد رابط FLV دوريًا فكان البث الواحد يصير عدة ملفات وعدة رفعات (1600 وحدة لكل رفعة). الآن يُلصق المصدر الجديد في نفس الملف: ابتلاع الترويسة، إزاحة أختام الزمن، وإسقاط أوسمة الإعداد وonMetaData المكررة التي كانت تُنتج MKV معطوبًا. يُرفض اللصق إن تغيّر إعداد الفيديو فيُنهى الملف كما كان سابقًا. الأرشفة: التحقق من المعالجة صار محدودًا بمهلة ثم يُؤجَّل، فلا يحبس خيط الرفع عن بقية المذيعين؛ وملفٌ رُفع فعلًا لم يعد يُحبس خلف بوابة الكوتا لأن التحقق يكلف وحدة واحدة. نقطة الرفع تُقرأ وقت الإنشاء لا وقت الاستيراد (أصلح 7 اختبارات كانت تضرب جوجل الحقيقي). وصف أرشيف أوضح تنظيمًا مع وسوم تلقائية، وحذف ذكر المدينة. test_concurrency.py: اختبار تكامل يثبت الرصد والتسجيل المتوازي أثناء الرفع.bf28800 -
fix: {broadcaster} يقتل إنشاء أحداث يوتيوب + بذر الحسابات لا يُحيي محذوفًا
Verified signature1) youtube_manager: قالب العنوان المحفوظ على هذا الـSpace هو «{broadcaster} | {date} {time}» وهو من بناء relay قديم، و values لا تحوي broadcaster ⇒ KeyError يبتلعه safe_error فيصير «خطأ داخلي… لحماية الأحداث» كل 40 ثانية ولا يُنشأ أي حدث ولا يصعد شيء للهواء (مُعاد إنتاجه). أُضيف broadcaster إلى الأسماء القديمة بجانب nickname/live_title، واستُعمل format_map مع _SafeTemplate — وهو نفس عقد class Safe في youtube_archive الذي جعل مسار الرفع محصنًا أصلًا. 2) app.py: بذر ACCOUNTS صار عند غياب tasks.json فقط، فحذف المشغّل لحساب من اللوحة يصمد، وتبقى الاستعادة الكاملة إن مُسح التخزين. مُختبَر في الحالتين.5c8c4b3 -
feat: حسابات دائمة عبر متغيّر ACCOUNTS — لا تضيع مع القرص المؤقت
Verified signatureقرص الطبقة المجانية مؤقت: كل إعادة بناء أو إيقاف تمسح tasks.json فيعود المرصد بلا مذيعين ويجب إعادة إضافتهم يدويًا. متغيّر ACCOUNTS في Settings → Variables يبقى عبر إعادات البناء، فيُبذَر منه ما ينقص عند الإقلاع — نفس نهج المشروع في توكنات تيك توك (TIKTOK_TOKENS / TIKTOK_SESSIONID_<USER>). بلا مكتبات جديدة ولا توكنات. مُختبَر: تخزين فارغ + ACCOUNTS ⇒ عادت الأربعة؛ حساب موقوف يدويًا ⇒ بقي موقوفًا.3a96da2 -
V10: استبدال كامل بمشروع التسجيل الأصلي + الأرشفة التلقائية إلى يوتيوب
Verified signatureاستبدال مطابق لمحتوى tiktok-recorder-youtube-archive-v10.zip بلا أي تعديل. المسار: تيك توك FLV → FLVWriter → mkvmerge → ffmpeg -c copy → MP4 → طابور أرشفة → رفع resumable → تحقق videos.list → حذف محلي. لا إعادة ترميز في أي خطوة. النسخة السابقة (relay بلا تسجيل) محفوظة عند الكوميت 760d23b0.16c2dbf -
fix(transcode): الترميز علاج مؤقت لا دائم — احترام YOUTUBE_COPY_RECOVERY + starved لا يُحفّز الترميز
Verified signature1) relay.copy_recovery_enabled(): مصدر حقيقة واحد. request_sticky() كان يرفع _no_copy_recovery=True بلا شرط، والمدير يعيد رفعه على كل مرسل جديد، فيُقفل الرجوع إلى copy للأبد ويُبطل YOUTUBE_COPY_RECOVERY=1 المعلن في Dockerfile. مقيس حيًا: المصدر hd 1440p H264 وصحة يوتيوب good و0 إعادة تشغيل، ومع ذلك send_mode=matchgop و54% من حصة المعالج. الحمايات باقية: 60ث + خرج مُثبت 20ث + مصدر H264 + تحقق 12ث + قفل بعد فشلين. 2) videoIngestionStarved لم يعد يحفّز الترميز. توثيق يوتيوب: «Video output low — YouTube is not receiving enough video»، أي شحّ تغذية لا خلل صيغة؛ الترميز لا يخلق بايتات مفقودة ويزيد الحمل على نواتين. يبقى gopSizeLong/openGop/noData محفّزات (وهي صيغة فعلًا). يُسجَّل starved للمراقبة.760d23b -
fix(direct-relay): تمرير refresh إلى sender.send — إعادة توصيل تيك توك على نفس جلسة يوتيوب بدل قتل FFmpeg
Verified signatureالمسار المباشر (env RTMPS) كان ينادي sender.send بلا refresh، فتُعطَّل _try_reattach بالكامل: كل تجديد لرابط FLV يقتل FFmpeg ويقطع RTMPS فيعلق المشاهد على دائرة التحميل. الآن يمرر _refresh_direct بنفس عقد youtube_manager._refresh_flv (FLV فقط + تثبيت الرندشن). لا تغيير في relay.py ولا Dockerfile ولا المتغيرات.77d72b3
-
حارسا الحمل: عودة تلقائية إلى copy بعد 60ث + ترميز متزامن واحد
Verified signature61a5a41 -
fix: قراءة واحدة مشتركة للمعالج/الرام من cgroup
Verified signature8ef6adc -
fix: قراءة واحدة مشتركة للمعالج/الرام من cgroup
Verified signature7486f03
-
remove test_pk_format.py (parity with On)
Verified signaturea10096f