Problème de génération de miniature et de rendu Markdown

Bonjour,

Depuis la dernière version de Discourse 2.5.0, je rencontre des problèmes avec la génération des miniatures.
Il semble que les miniatures soient désormais générées au niveau du cœur du système, ce qui a entraîné la suppression de toutes les miniatures existantes.
J’ai tenté diverses opérations pour les restaurer et je vais expliquer les situations où cela ne fonctionne pas.

Note : Il y a probablement une bonne raison à ce changement, mais il serait vraiment bienvenu de ne pas introduire de modification soudaine du comportement qui brise une fonctionnalité sans offrir de moyen de s’y préparer, avec un guide de mise à niveau et/ou une option pour activer ce changement, s’il vous plaît. :confounded:

Contexte

  • Discourse 2.5.0 beta4 (faeb5793ba)
  • Plugin Topic List Preview 4.4.0
  • WP-Discourse : les articles sont publiés tels quels (HTML complet) dans les sujets Discourse (premier message).

Concernant le contenu d’un article, voici un exemple (formaté pour vous) :

Contenu

Code HTML de l’image pour plus de commodité :

<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>

Avant la mise à jour de Discourse

TLP fonctionnait toujours bien avec nos images externes, que ce soit lors de la création ou de l’édition d’un sujet.
Cependant, nous avions désactivé l’option download remote images to local (télécharger les images distantes localement) en raison d’un problème de rendu Markdown.

Problème de rendu Markdown

Ce n’est pas le problème principal, et il persiste même après la mise à jour de Discourse. Voici quelques explications.
Lorsque Discourse télécharge et remplace le code HTML d’une image par sa syntaxe Markdown – dans notre contexte, cela se traduit par :

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

Discourse est alors incapable de rendre l’image.

Image

image

Pour corriger le problème, il faut au moins une ligne vide au-dessus :

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

![|150x150](upload://l0iarnA6SPVAyJN5l7pnQxZnPvE.jpeg)</a>[...]
Image

Serait-il possible de permettre le rendu d’images Markdown entourées de code HTML, s’il vous plaît ?

Après la mise à jour de Discourse

  • Toutes les miniatures ont été supprimées.
  • Toutes les images s’affichent correctement dans le contenu du sujet.
  • En raison de cette fonctionnalité (FEATURE: Include optimized thumbnails for topics (#9215) · discourse/discourse@03818e6 · GitHub, je pense), nous avons été contraints d’activer l’option download remote images to local, car il semble désormais impossible d’obtenir une miniature à partir d’un lien externe… :pensive:
  • download remote images max days old est réglé au maximum, soit 10000.
Paramètres

À partir de là, on m’a dit de relire tous les articles (rebake) pour télécharger les images. C’est là que cela devient étrange.

  1. rake posts:rebake n’a pas eu beaucoup d’effet (du moins pas sur le premier message d’un sujet), mais il a déclenché de nombreuses opérations PullHotlinkedImages.
    1.1. En examinant certains sujets, j’ai pensé que le code HTML des images avec les attributs class ou srcset en était la cause, alors j’ai essayé de normaliser toutes les images avec le code suivant (je ne connais pas Ruby) – Cela a aidé pour certains sujets.
    1.2. Cependant, en raison du problème de Markdown, j’ai dû ajouter des sauts de ligne pour corriger. – Du moins pour ces sujets, les miniatures ont fonctionné.
Code
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. L’édition manuelle (sans modifier le contenu, juste en enregistrant) d’un sujet ignoré fonctionne la plupart du temps. L’image est téléchargée.
    2.1. Certains sujets restent ignorés même après une édition. Je vois que PullHotlinkedImages est déclenché, mais aucune image n’est téléchargée. (comme avec ce HTML <img src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg" />, lien)
  2. Après normalisation et constatant qu’une édition peut aider à télécharger l’image, j’ai essayé de lancer rake posts:rebake plusieurs fois – sans effet.
  3. Ensuite, j’ai essayé d’utiliser la console Rails de manière similaire au code ci-dessus, mais avec un ID de sujet spécifique et uniquement post.rebake!sans effet.
  4. Toutes les images d’un sujet ne sont pas toujours téléchargées.
  5. @Canapin m’a indiqué Download remote images from older posts? - #3 by vinothkannans ; j’essaie maintenant de relire tous les articles. – Malheureusement, cela n’a pas aidé

C’est fou de voir pourquoi certaines images fonctionnent et d’autres non. Je ne pense pas que ce soit un problème de critères. Les paramètres des images sont élevés. Je ne comprends vraiment pas la logique derrière tout cela, cela semble aléatoire.

Actuellement, nous avons encore beaucoup de miniatures manquantes. La plupart d’entre elles peuvent probablement être corrigées manuellement par édition/enregistrement, mais cela n’est pas réalisable à grande échelle. Je fais cela pour un client et j’ai déjà perdu beaucoup de temps à essayer de résoudre le problème.

Je ne vois pas d’inconvénient à avoir des images uploadées comme miniatures, mais :

  • Pouvez-vous me dire s’il existe des raisons spécifiques pour lesquelles les images ne se téléchargent pas ? Y a-t-il des paramètres qui pourraient aider ? Avons-nous besoin de quelque chose ? Comment déboguer ?
  • Existe-t-il un moyen de forcer leur téléchargement, similaire à l’édition/enregistrement via la console ?
  • Pouvez-vous permettre le rendu d’images Markdown si elles sont entourées de code HTML ?

J’espère avoir été assez précis dans la description du problème.

Merci d’avance pour toute aide et solution.

2 « J'aime »

Bonjour @Arkshine, désolé d’apprendre que vous rencontrez des problèmes ici. Malheureusement, nous ne pouvons pas garantir la compatibilité avec tous les plugins tiers, en particulier lorsqu’ils remplacent des comportements de base au-delà de la portée de nos API de plugin. À l’avenir, TLP devrait être en mesure de réduire le nombre de remplacements de base qu’il utilise, et espérons que la stabilité s’améliorera.

Notez que nous disposons désormais également de notre solution officielle pour l’affichage des vignettes, qui est entièrement mise en œuvre en utilisant nos API de plugin prises en charge.

Vous avez raison de dire que les vignettes de base ne fonctionnent que pour les images locales. En fin de compte, TLP récupérait également les images et les stockait localement, la différence est donc que nous faisons tout de manière cohérente en utilisant le job pull_hotlinked_images.

Il semble que nous ayons quelques problèmes à résoudre ici. Je pense qu’il serait préférable de les séparer afin de ne rien manquer. En parcourant votre message, je vois deux points :

La récupération d’images distantes ne devrait pas entraîner de HTML/Markdown invalide, nous allons donc essayer de corriger cela. Veuillez ouvrir un sujet bug, me mentionner, et nous examinerons le problème.

Encore une fois, les caractères spéciaux ne devraient pas casser les images ici. Veuillez ouvrir un autre sujet bug et nous nous en occuperons.

4 « J'aime »

Merci pour votre réponse, @david.

Concernant Markdown, le lien avec des caractères spéciaux fonctionnera. Merci.


Mais, en fin de compte, mon principal problème reste de forcer Discourse à télécharger l’image en tant que fichier. Le problème Markdown peut être résolu via la console, et tous les liens ne contiennent pas de caractères spéciaux. Nous avons encore de nombreux sujets sans vignettes. C’est sur ce point que je demande de l’aide.

Par exemple, celui-ci ne contient pas de caractères spéciaux. Et sauf si je clique sur Enregistrer la modification, l’image n’est pas téléchargée via le reconditionnement depuis la console, ni en utilisant le lien Reconstruire le HTML.

Existe-t-il une commande Rails ou autre qui puisse forcer Discourse à télécharger l’image de la même manière que lors d’un Enregistrer la modification ?


J’ai en fait essayé d’utiliser le composant, mais cela n’a pas très bien fonctionné. Je vais toutefois réessayer une fois les problèmes de vignettes résolus.

Est-ce un site d’affiliation ?

C’est étrange. J’ai une idée : ces messages ont-ils été créés par l’utilisateur système ? Ou par Discobot ?

La plupart d’entre eux sont des utilisateurs administrateurs normaux. Ces sujets sont créés via l’API depuis WP Discourse.

Par exemple celui-ci :

@Arkshine, était-ce censé y avoir un lien ?

Désolé, je traitais un exemple pendant mes tests, mais j’ai appuyé sur le bouton par erreur.

Cela dit, j’ai commencé à exécuter ceci pour voir si cela aiderait (désolé si cela blesse vos yeux !) :

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

Cela a pris un certain temps. J’ai vu pas mal de Jobs::PullHotlinkedImages.
Mais cela ne semble pas avoir beaucoup aidé.

Si vous vérifiez un sujet spécifique, par exemple, ce sujet.

Depuis la console, je peux voir qu’il déclenche Jobs::ProcessPost mais pas 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>]

Si j’enregistre l’édition depuis le compositeur :

Je vois bien image

Ensuite, je peux voir que l’image est téléchargée :

Ah, je vois. Le problème ici est

Car nous avons cette logique avant de planifier l’extraction des images hotlinkées :

Ceci est conçu pour éviter une boucle infinie de jobs pull_hotlinked_image planifiés. Mais peut-être devons-nous améliorer cette logique. Pouvez-vous vérifier l’historique des révisions de l’un de ces messages et voir pourquoi il a été modifié pour la dernière fois par le système ?

2 « J'aime »

Pour ce sujet :

  1. image
  2. image (changement de catégorie)
  3. image (Moi, uniquement « Enregistrer la modification »)
  4. image (le système remplace l’image par du markdown)

Donc, je suppose que cela est dû au changement de catégorie ?

1 « J'aime »

Oui, cela expliquerait tout ! En tant que solution temporaire, vous pouvez exécuter manuellement le travail de récupération des images hotlinkées en faisant quelque chose comme :

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

Nous avons cependant besoin d’une meilleure solution. Je vais l’ajouter à ma liste de tâches.

5 « J'aime »

Incroyable. Je vais essayer ça !

EDIT :

Juste pour confirmer, la commande a beaucoup aidé. Maintenant, la plupart des images sont revenues. Merci encore !

Il reste encore des cas limites non traités, comme les images avec des caractères spéciaux, ou les sujets où les images sont marquées comme cassées alors qu’elles ne le sont pas (une reconstruction du HTML les corrige, puis enregistrez la modification pour les télécharger). Si la pull request #9890 est fusionnée et qu’une correction pour le markdown est apportée, cela résoudrait probablement tout.

2 « J'aime »

Je viens de fusionner cette correction pour les modifications de system-user :

Je pense que nous avons séparé tous les autres problèmes dans des sujets distincts, mais si nous avons oublié quelque chose, n’hésitez pas à en ouvrir un autre @Arkshine

3 « J'aime »

Au fait, je viens de supprimer ce paramètre. Nous ne vérifions plus l’âge des publications lors de la récupération des images hotlinkées.

cc @merefield

6 « J'aime »

Ce sujet a été automatiquement fermé après 28 heures. Les nouveaux commentaires ne sont plus autorisés.