مشكلة في إنشاء الصور المصغرة وتصيير الماركداون

مرحبًا،

منذ إصدار Discourse 2.5.0 الأخير، أواجه مشاكل في توليد الصور المصغرة.
يبدو أن الصور المصغرة تُنشأ الآن من النواة (core)، مما أدى إلى حذف جميع الصور المصغرة الموجودة.
حاولت عمليات متنوعة لإعادة استعادتها، وسأشرح الحالات التي لا تعمل فيها.

ملاحظة: ربما يكون هناك سبب وجيه لهذا التغيير، لكن سيكون موضع ترحيب كبير عدم إدخال تغيير مفاجئ في السلوك يكسر الوظائف دون توفير طريقة للاستعداد له، من خلال دليل ترقية و/أو خيار للانضمام إلى هذا التغيير، من فضلك. :confounded:

السياق

  • Discourse 2.5.0 beta4 (faeb5793ba)
  • إضافة Topic List Preview الإصدار 4.4.0
  • WP-Discourse: منشورات نُشرت كما هي (HTML كامل) في مواضيع Discourse (الرسالة الأولى).

حول محتوى منشور، هذا مثال (منسق من أجلك):

المحتوى

كود HTML للصورة لسهولة الاستخدام:

<img
        width="150"
        height="84"
        src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg"
        class="attachment-thumbnail size-thumbnail"
        alt=""
        srcset="
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg     150w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-300x169.jpg    300w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1200x675.jpg  1200w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1536x864.jpg  1536w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-2048x1152.jpg 2048w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-788x443.jpg    788w,
            https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית.jpg           1280w
        "
        sizes="(max-width: 150px) 100vw, 150px"
    />
<div data-wp>
    <a
        href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
        target="_blank"
        ><img src="https://zuzu.deals/wp-content/uploads/2020/01/5e3128b4e5da7-150x150.jpg"/>
    </a>
    <div>
        <div data-buy>
            <a
                href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
                target="_blank">קנייה
            </a>
            <span data-clipboard-text="BG38b2ac" data-coupon>BG38b2ac</span><i></i>
        </div>
        <div data-price>$43.99</div>
    </div>
</div>
<hr />
<p>
    <small>
        &nbsp;פורסם ב:&nbsp;<a href="https://zuzu.deals/%d7%a7%d7%95%d7%a4%d7%95%d7%9f-%d7%91%d7%9c%d7%a2%d7%93%d7%99-%d7%a8%d7%90%d7%95%d7%98%d7%a8-%d7%97%d7%96%d7%a7-%d7%95%d7%97%d7%93%d7%a9-%d7%a9%d7%9c-%d7%a9%d7%99%d7%90%d7%95%d7%9e%d7%99-xiaomi-re-2/"></a>
    </small>
</p>
<br />
<p>נעים להכיר!</p>

قبل تحديث Discourse

كانت TLP تعمل دائمًا بشكل جيد مع الصور الخارجية لدينا، سواء عند إنشاء الموضوع أو تعديله.
ومع ذلك، كانت خيار “تحميل الصور البعيدة إلى المحلي” معطلاً بسبب مشكلة في التنسيق (markdown).

مشكلة عرض التنسيق (Markdown)

هذه ليست المشكلة الرئيسية، ولا تزال تحدث بعد تحديث Discourse، إليك بعض الشرح.
عندما يقوم Discourse بتحميل واستبدال كود HTML للصورة ببناء جملة التنسيق الخاص به – في سياقنا، ينتج عن ذلك:

[...]<a href="<link_here>" target="_blank">![|150x150](upload://l0iarnA6SPVAyJN5l7pnQxZnPvE.jpeg)</a>[...]

لا يستطيع Discourse عرض الصورة

الصورة

image

لحل المشكلة، تحتاج على الأقل إلى سطر فارغ أعلاه:

[...]<a href="<link_here>" target="_blank">

![|150x150](upload://l0iarnA6SPVAyJN5l7pnQxZnPvE.jpeg)</a>[...]
الصورة

هل من الممكن السماح بعرض صورة بتنسيق markdown محاطة بـ HTML، من فضلك؟

بعد تحديث Discourse

  • تم حذف جميع الصور المصغرة.
  • تُعرض جميع الصور بشكل صحيح في محتوى الموضوع.
  • بسبب هذه الميزة (https://github.com/discourse/discourse/commit/03818e642a1ae871bffdc0c39c10f05f0b8b0398، أعتقد)، أُجبرنا على تمكين خيار “تحميل الصور البعيدة إلى المحلي” حيث يبدو أنه لم يعد من الممكن الحصول على صورة مصغرة من رابط خارجي… :pensive:
  • تم ضبط خيار “أقصى عدد أيام للصور البعيدة” على الحد الأقصى، وهو 10000.
الإعدادات

من هنا، قيل لي إعادة بناء جميع المنشورات لتحميل الصورة. وهنا يبدأ الأمر في الغرابة.

  1. أمر rake posts:rebake لم يكن له تأثير كبير (على الأقل ليس في الرسالة الأولى للموضوع، لكنه أدى إلى تشغيل العديد من عمليات PullHotlinkedImages).
    1.1. عند النظر في بعض المواضيع، ظننت أن كود HTML للصورة الذي يحتوي على سمات class أو srcset هو السبب، لذا حاولت تطبيع جميع الصور بالكود التالي (لا أعرف Ruby) – ساعد ذلك في بعض المواضيع.
    1.2. ومع ذلك، بسبب مشكلة التنسيق، اضطررت لإضافة أسطر جديدة لإصلاحها. – على الأقل في تلك المواضيع، عملت الصور المصغرة.
الكود
Post.where(post_number: 1)
    .where("raw LIKE '%<img%/>%'")
    .each 
        do |post|
            post.raw.gsub!(/<img[^>]+(src="[^"]+")[^>]+\/>/, "<img \\1 />")
            post.save!(validate: true)
            post.rebake!  
        end

Post
  .where(post_number: 1)
  .where("raw LIKE '%upload://%'").each 
     do |post|  
       post.raw.gsub!(/(!\[.*upload:\/\/.*\))/, "\n\n\\1") 
       post.save!(validate: false); 
       post.rebake! 
     end
  1. التعديل اليدوي (دون تغيير المحتوى، فقط الحفظ) لموضوع مُهمَل يعمل في معظم الأحيان. يتم تحميل الصورة.
    2.1. بعض المواضيع تُهمَل حتى بعد التعديل. يمكنني رؤية أن PullHotlinkedImages تم تشغيله ولكن لم يتم تحميل أي صور. (مثل هذا html <img src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg" />، رابط)
  2. بعد التطبيع، ورؤية أن التعديل يمكن أن يساعد في تحميل الصورة، حاولت تشغيل rake posts:rebake عدة مرات – بدون تأثير.
  3. ثم حاولت استخدام وحدة تحكم Rails مشابهة للكود أعلاه ولكن مع معرف موضوع محدد ومع post.rebake! فقط – بدون تأثير.
  4. لا يتم تحميل جميع صور الموضوع دائمًا.
  5. أشار @Canapin إلى Download remote images from older posts? - #3 by vinothkannans جاري الآن إعادة بناء جميع المنشورات. – لم يساعد للأسف

من الجنون أن بعض الصور تعمل والبعض الآخر لا. لا أعتقد أنها مسألة معايير. إعدادات الصور عالية. أنا حقًا لا أفهم المنطق وراء ذلك، يبدو عشوائيًا.

حاليًا، لا تزال لدينا العديد من الصور المصغرة المفقودة. على الأرجح يمكن إصلاح معظمها يدويًا عن طريق التعديل/الحفظ، لكن هذا غير عملي. أقوم بذلك لعميل، وقد ضاعت الكثير من الوقت بالفعل في محاولة إصلاح المشكلة.

لا يزعجني وجود صور مُحمَّلة كصور مصغرة، لكن:

  • هل يمكنك إخباري إذا كانت هناك أسباب محددة لعدم تحميل الصور؟ هل توجد إعدادات يمكن أن تساعد؟ هل نحتاج إلى شيء ما؟ كيف نصحح الأخطاء (debug)؟
  • هل هناك طريقة لإجبار تحميلها مشابهة للتعديل/الحفظ عبر وحدة التحكم؟
  • هل يمكن السماح بعرض صور بتنسيق markdown إذا كانت محاطة بـ HTML؟

آمل أنني كنت دقيقًا بما يكفي في وصف المشكلة.

شكرًا مقدّمًا على أي مساعدة وحل.

مرحبًا @Arkshine، نأسف لسماع أنك تواجه مشاكل هنا. للأسف، لا يمكننا ضمان التوافق مع جميع الإضافات الطرفية الثالثة، خاصةً عندما تقوم هذه الإضافات بتجاوز السلوك الأساسي خارج نطاق واجهات برمجة التطبيقات (APIs) الخاصة بإضافتنا. مستقبلاً، من المتوقع أن يقلل TLP من عدد تجاوزات الأساس التي يستخدمها، ونأمل أن تتحسن الاستقرار.

نود التنويه إلى أن لدينا الآن الحل الرسمي لعرض الصور المصغرة، والذي تم تنفيذه بالكامل باستخدام واجهات برمجة التطبيقات المدعومة الخاصة بنا.

أنت محق في أن الصور المصغرة الأساسية تعمل فقط مع الصور المحلية. في النهاية، كان TLP يسحب الصور ويخزنها محليًا أيضًا، لذا فإن الفرق الآن هو أننا نقوم بكل شيء بطريقة متسقة باستخدام مهمة pull_hotlinked_images.

يبدو أن لدينا بضع قضايا لحلها هنا. أعتقد أنه من الأفضل فصلها حتى لا نفوت أي شيء. بعد قراءة منشورك، أرى أمرين:

يجب ألا يؤدي سحب الصور البعيدة إلى HTML/نص مميز غير صالح، لذا سنحاول إصلاح هذه المشكلة. يرجى فتح موضوع bug واذكرني، وسنقوم بالتحقيق في الأمر.

مرة أخرى، لا ينبغي أن تؤدي الأحرف الخاصة إلى تعطل الصور هنا. يرجى فتح موضوع bug آخر وسنقوم بمراجعته.

شكرًا لك على الرد، @david.

بخصوص الوصلات في Markdown التي تحتوي على أحرف خاصة، سأقوم بذلك. شكرًا لك.


لكن، في النهاية، مشكلتي الرئيسية لا تزال هي إجبار Discourse على تنزيل الصورة. يمكن حل مشكلة Markdown عبر وحدة التحكم (console)، ولا تحتوي جميع الروابط على أحرف خاصة. لا يزال لدينا العديد من المواضيع التي تفتقر إلى الصور المصغرة. هذا هو ما أطلب فيه المساعدة.

على سبيل المثال، هذا الرابط لا يحتوي على أحرف خاصة. وحتى لو لم أقم بالضغط على Save Edit، فلن يتم تنزيل الصورة من خلال إعادة المعالجة (rebaking) من وحدة التحكم، ولا عبر رابط Rebuild HTML.

هل هناك أمر Rails أو شيء آخر يمكنه إجبار Discourse على تنزيل الصورة بنفس الطريقة التي يتم بها عند الضغط على Save Edit؟


في الواقع، جربت استخدام المكون، لكنه لم يعمل بشكل جيد. لكنني سأحاول مرة أخرى بمجرد حل مشاكل الصور المصغرة.

هل هو موقع تابع؟

هذا أمر غريب. لدي فكرة واحدة - هل هذه المنشورات التي أنشأها مستخدم النظام؟ أم ديسكوبوت؟

معظمها مستخدم عادي. تم إنشاء هذه المواضيع عبر واجهة برمجة التطبيقات من WP Discourse.

على سبيل المثال هذا:

@Arkshine هل كان من المفترض أن يكون هناك رابط هناك؟

عذراً، كنت أعمل على مثال أثناء الاختبار، لكنني ضغطت الزر بالخطأ.

على أي حال، بدأت بتنفيذ هذا الكود لأرى ما إذا كان سيساعد (عذراً إذا كان مزعجاً للعين!)

Post
  .joins(:topic)
  .where(post_number: 1)
  .where('topics.visible = true')
  .where('topics.deleted_at IS NULL')
  .each do |post| 
     post.baked_version = nil
     post.save!(validate: false)
     post.rebake!
   end

استغرق الأمر بعض الوقت. لاحظت عدداً كبيراً من Jobs::PullHotlinkedImages.
لكن يبدو أن هذا لم يُحدث فرقاً كبيراً.

إذا قمت بفحص موضوع محدد، على سبيل المثال، هذا الموضوع.

من وحدة التحكم، يمكنني رؤية أنه يُفعّل Jobs::ProcessPost لكن ليس Jobs::PullHotlinkedImages

[106] pry(main)> Post.update_all(baked_version: nil)
=> 38808

[107] pry(main)> Post.where(post_number: 1, topic_id: 64215).each do |post| post.rebake!; end
=> [#<Post:0x0000557fe01f2fd8
  id: 79717,
  user_id: 3,
  topic_id: 64215,
  post_number: 1,
  raw:
   "<div data-wp><a href=\"https://www.mooki.co.il/gaming/hbilvt-giiming-mwtlmvt/mvwb-giiming-khvl-sparkfox-wvlhn-giiming-mqcvei-lumi-whvr-2\" target=\"_blank\"><img src=\"https://zuzu.deals/wp-content/uploads/2020/05/5ebcf97155cd2-150x150.png\" /></a><div><div data-buy><a href=\"https://www.mooki.co.il/gaming/hbilvt-giiming-mwtlmvt/mvwb-giiming-khvl-sparkfox-wvlhn-giiming-mqcvei-lumi-whvr-2\" target=\"_blank\">קנייה</a><span data-clipboard-text=\"GLA679\" data-coupon>GLA679</span><i></i></div><div data-price>₪679 <span data-old-price>₪1378</span></div></div></div><hr /><p><small>&nbsp;פורסם ב:&nbsp;<a href=\"https://zuzu.deals/%d7%91%d7%9c%d7%a2%d7%93%d7%99-%d7%95%d7%91%d7%9e%d7%97%d7%99%d7%a8-%d7%97%d7%98%d7%99%d7%a4%d7%94-%d7%9e%d7%95%d7%a9%d7%91-%d7%92%d7%99%d7%99%d7%9e%d7%99%d7%a0%d7%92-%d7%90%d7%93%d7%95%d7%9d-spark/\"></a></small></p><br><p><img src=\"https://www.mooki.co.il/pub/media/catalog/product/cache/0f831c1845fc143d00d6d1ebc49f446a/_/s/_sparkfox_k1_5_.png\" /></p>\n<p style=\"text-align: center;\">בין אם אתם גיימרים ובין אם אתם פשוט עובדים ויושבים כל היום והגב כבר זועק לכיסא טוב יותר, הנה לכם עוד מבצע בלעדי במחיר חטיפה!<br />\nכיסא גיימינג מפנק, אוזניות גיימינג ומשלוח מהיר בחינם, עם אחריות יבואן רשמי &#8211; רק ב679₪!!!</p>\n<p style=\"text-align: center;\">השתמשו בקופה בקופון הבלעדי &#8211; <strong>GLA679</strong></p>\n<div> <img src=\"https://zuzu.deals/wp-content/uploads/2020/05/90902-801-09_2_1.jpg\" /></div>\n<div>\n<h3 style=\"text-align: center;\">מושב גיימינג מקצועי SPARKFOX GC60P</h3>\n</div>\n<div>מושב גיימינג בעל עיצוב מיוחד למשחקי מחשב לנוחות מקסימאלית למשתמש</div>\n<div>\n<ul>\n<li>מושב בעל משענת גב גבוהה</li>\n<li>נוחות המקסימאלית למשך זמן משחק ארוך</li>\n<li>זוג כריות לתמיכה בצוואר ובגב התחתון</li>\n<li>סוג חומר: ספוג יצוק</li>\n<li>סוג מסגרת: מתכת</li>\n<li>חומר: עור עם סיבי פחם</li>\n<li>משענות ידיים: מתכווננות מעלה / מטה</li>\n<li>סוג מנגנון: פרפר</li>\n<li>סוג הרמה: הידראולית Class4</li>\n<li>טווח משענת גב: 90°-180°</li>\n<li>סוג בסיס: ניילון</li>\n<li>חומר גלגל: ניילון</li>\n<li>יכולת נשיאה: עד 150 ק"ג</li>\n<li>אחריות: שנה</li>\n</ul>\n<div><strong>מידות</strong></div>\n<div>\n<ul>\n<li>רוחב: 67 ס&quot;מ</li>\n<li>עומק: 67 ס&quot;מ</li>\n<li>גובה משתנה: 124-132 ס&quot;מ</li>\n</ul>\n<h3></h3>\n<p><img src=\"https://zuzu.deals/wp-content/uploads/2020/05/90902-802-08_3_1.jpg\" /></p>\n<h3 style=\"text-align: center;\">אוזניות גיימינג SPARKFOX K1</h3>\n<div>אוזניות גיימינג בעיצוב מיוחד לנוחות מקסימלית לשמע ודיבור וביטול רעשי רקע</div>\n<div>\n<ul>\n<li>ניתנות לשימוש ברוב הקונסולות הקיימות בשוק</li>\n<li>שמע וניהול שיחות בטלפונים ובמחשבים ניידים</li>\n<li>ווסת עוצמת השמע הינו בכבל של האוזנייה- לגישה נוחה</li>\n<li>שמע מעולה ממנהלי התקנים גדולים של 50 מ&quot;מ</li>\n<li>בקרי עוצמת הקול וההשתקה</li>\n<li>כוסות אוזניים מרופדות גדולות לנוחות מרבית</li>\n<li>קשת האוזנייה מתכווננת להתאמה מושלמת לראשכם</li>\n<li>מתחבר ישירות ליציאת בקרי 3.5 מ&quot;מ</li>\n</ul>\n</div>\n<div>מצורף מתאם מיוחד לחיבור האוזניות למחשב נייח ע&quot;י מפצל 3.5 מ&quot;מ ל 2 יציאות 3.5 מ&quot;מ</div>\n</div>\n</div>\n<p>&nbsp;</p>\n<div data-custom-html=\"\"></div>",
  cooked:
   "<div data-wp=\"\">\n<a href=\"https://www.mooki.co.il/gaming/hbilvt-giiming-mwtlmvt/mvwb-giiming-khvl-sparkfox-wvlhn-giiming-mqcvei-lumi-whvr-2\" target=\"_blank\"><img src=\"https://zuzu.deals/wp-content/uploads/2020/05/5ebcf97155cd2-150x150.png\"></a><div>\n<div data-buy=\"\">\n<a href=\"https://www.mooki.co.il/gaming/hbilvt-giiming-mwtlmvt/mvwb-giiming-khvl-sparkfox-wvlhn-giiming-mqcvei-lumi-whvr-2\" target=\"_blank\">קנייה</a><span data-clipboard-text=\"GLA679\" data-coupon=\"\">GLA679</span><i></i>\n</div>\n<div data-price=\"\">₪679 <span data-old-price=\"\">₪1378</span>\n</div>\n</div>\n</div><hr><p><small> פורסם ב: <a href=\"https://zuzu.deals/%d7%91%d7%9c%d7%a2%d7%93%d7%99-%d7%95%d7%91%d7%9e%d7%97%d7%99%d7%a8-%d7%97%d7%98%d7%99%d7%a4%d7%94-%d7%9e%d7%95%d7%a9%d7%91-%d7%92%d7%99%d7%99%d7%9e%d7%99%d7%a0%d7%92-%d7%90%d7%93%d7%95%d7%9d-spark/\"></a></small></p><br><p><img src=\"https://www.mooki.co.il/pub/media/catalog/product/cache/0f831c1845fc143d00d6d1ebc49f446a/_/s/_sparkfox_k1_5_.png\"></p>\n<p>בין אם אתם גיימרים ובין אם אתם פשוט עובדים ויושבים כל היום והגב כבר זועק לכיסא טוב יותר, הנה לכם עוד מבצע בלעדי במחיר חטיפה!<br>\nכיסא גיימינג מפנק, אוזניות גיימינג ומשלוח מהיר בחינם, עם אחריות יבואן רשמי – רק ב679₪!!!</p>\n<p>השתמשו בקופה בקופון הבלעדי – <strong>GLA679</strong></p>\n<div> <img src=\"https://zuzu.deals/wp-content/uploads/2020/05/90902-801-09_2_1.jpg\">\n</div>\n<div>\n<h3>מושב גיימינג מקצועי SPARKFOX GC60P</h3>\n</div>\n<div>מושב גיימינג בעל עיצוב מיוחד למשחקי מחשב לנוחות מקסימאלית למשתמש</div>\n<div>\n<ul>\n<li>מושב בעל משענת גב גבוהה</li>\n<li>נוחות המקסימאלית למשך זמן משחק ארוך</li>\n<li>זוג כריות לתמיכה בצוואר ובגב התחתון</li>\n<li>סוג חומר: ספוג יצוק</li>\n<li>סוג מסגרת: מתכת</li>\n<li>חומר: עור עם סיבי פחם</li>\n<li>משענות ידיים: מתכווננות מעלה / מטה</li>\n<li>סוג מנגנון: פרפר</li>\n<li>סוג הרמה: הידראולית Class4</li>\n<li>טווח משענת גב: 90°-180°</li>\n<li>סוג בסיס: ניילון</li>\n<li>חומר גלגל: ניילון</li>\n<li>יכולת נשיאה: עד 150 ק"ג</li>\n<li>אחריות: שנה</li>\n</ul>\n<div><strong>מידות</strong></div>\n<div>\n<ul>\n<li>רוחב: 67 ס\\"מ</li>\n<li>עומק: 67 ס\\"מ</li>\n<li>גובה משתנה: 124-132 ס\\"מ</li>\n</ul>\n<h3></h3>\n<p><img src=\"https://zuzu.deals/wp-content/uploads/2020/05/90902-802-08_3_1.jpg\"></p>\n<h3>אוזניות גיימינג SPARKFOX K1</h3>\n<div>אוזניות גיימינג בעיצוב מיוחד לנוחות מקסימלית לשמע ודיבור וביטול רעשי רקע</div>\n<div>\n<ul>\n<li>ניתנות לשימוש ברוב הקונסולות הקיימות בשוק</li>\n<li>שמע וניהול שיחות בטלפונים ובמחשבים ניידים</li>\n<li>ווסת עוצמת השמע הינו בכבל של האוזנייה- לגישה נוחה</li>\n<li>שמע מעולה ממנהלי התקנים גדולים של 50 מ\\"מ</li>\n<li>בקרי עוצמת הקול וההשתקה</li>\n<li>כוסות אוזניים מרופדות גדולות לנוחות מרבית</li>\n<li>קשת האוזנייה מתכווננת להתאמה מושלמת לראשכם</li>\n<li>מתחבר ישירות ליציאת בקרי 3.5 מ\\"מ</li>\n</ul>\n</div>\n<div>מצורף מתאם מיוחד לחיבור האוזניות למחשב נייח ע\\"י מפצל 3.5 מ\\"מ ל 2 יציאות 3.5 מ\\"מ</div>\n</div>\n</div>\n<p> </p>\n<div data-custom-html=\"\"></div>",
  created_at: Thu, 14 May 2020 07:55:31 UTC +00:00,
  updated_at: Tue, 26 May 2020 14:56:16 UTC +00:00,
  reply_to_post_number: nil,
  reply_count: 0,
  quote_count: 0,
  deleted_at: nil,
  off_topic_count: 0,
  like_count: 0,
  incoming_link_count: 2,
  bookmark_count: 0,
  score: 10.8,
  reads: 4,
  post_type: 1,
  sort_order: 1,
  last_editor_id: -1,
  hidden: false,
  hidden_reason_id: nil,
  notify_moderators_count: 0,
  spam_count: 0,
  illegal_count: 0,
  inappropriate_count: 0,
  last_version_at: Thu, 14 May 2020 09:19:26 UTC +00:00,
  user_deleted: false,
  reply_to_user_id: nil,
  percent_rank: 0.0,
  notify_user_count: 0,
  like_score: 0,
  deleted_by_id: nil,
  edit_reason: nil,
  word_count: 939,
  version: 3,
  cook_method: 1,
  wiki: false,
  baked_at: Tue, 26 May 2020 16:59:49 UTC +00:00,
  baked_version: 2,
  hidden_at: nil,
  self_edits: 2,
  reply_quoted: false,
  via_email: false,
  raw_email: nil,
  public_version: 3,
  action_code: nil,
  image_url: "https://zuzu.deals/wp-content/uploads/2020/05/5ebcf97155cd2-150x150.png",
  locked_by_id: nil,
  image_upload_id: nil>]

إذا قمت بـ حفظ التعديل من المحرر:

أرى بشكل صحيح image

ثم يمكنني رؤية أن الصورة تم تحميلها:

آه، فهمت الآن. المشكلة هنا هي

لأن لدينا هذا المنطق قبل جدولة سحب الصور المرتبطة حرارياً:

هذا مصمم لتجنب حلقة لا نهائية من جدولة وظائف pull_hotlinked_image. لكن ربما نحتاج إلى تحسين هذا المنطق. هل يمكنك التحقق من سجل التعديلات لأحد هذه المنشورات ورؤية سبب تعديله آخر مرة بواسطة النظام؟

بالنسبة لهذا الموضوع:

  1. image
  2. image (تغيير الفئة)
  3. image (أنا فقط “حفظ التعديل”)
  4. image (النظام يستبدل الصورة بتنسيق ماركداون)

لذا، أعتقد أن السبب هو تغيير الفئة؟

نعم، هذا يفسر الأمر! كحل مؤقت، يمكنك تشغيل مهمة سحب الصور المرتبطة يدوياً عن طريق القيام بما يلي:

Jobs.enqueue_in(10, :pull_hotlinked_images, post_id: post.id)

ومع ذلك، نحتاج إلى حل أفضل هنا. سأضيفه إلى قائمة المهام الخاصة بي.

رائع. دعني أجرب ذلك!

تعديل:

فقط للتأكيد، ساعد الأمر كثيرًا. الآن، عادت معظم الصور. شكرًا مرة أخرى!

لا تزال هناك حالات هامشية لم تتم معالجتها، مثل الصور التي تحتوي على أحرف خاصة، أو المواضيع التي تُعتبر فيها الصور تالفة بينما هي ليست كذلك (إصلاح إعادة بناء HTML يصلحها، ثم حفظ التعديل لتحميلها). إذا تم دمج #9890 وتم إصلاح مشكلة markdown، فمن المرجح أن يحل ذلك جميع المشكلات.

لقد دمجتُ هذا الإصلاح لتعديلات المستخدم النظامي:

أعتقد أننا قد فصلنا جميع القضايا الأخرى إلى مواضيع منفصلة، ولكن إذا فاتنا أي شيء، فلا تتردد في فتح موضوع آخر @Arkshine

بالمناسبة، لقد قمت للتو بإزالة هذا الإعداد. لم نعد نتحقق من عمر المنشور عند سحب الصور المرتبطة حرارياً

cc @merefield