Problema con la generazione delle miniature e il rendering del markdown

Ciao,

Dall’ultima versione di Discourse 2.5.0, ho problemi con la generazione delle miniature.
Sembra che ora le miniature vengano generate dal core, il che ha causato la cancellazione di tutte le miniature esistenti.
Ho provato varie operazioni per ripristinarle e spiegherò le situazioni in cui non funzionano.

Nota: probabilmente c’è un buon motivo per questo cambiamento, ma sarebbe davvero gradito non introdurre cambiamenti improvvisi di comportamento che rompono funzionalità senza offrire la possibilità di prepararsi, tramite una guida all’aggiornamento e/o un modo per aderire a questo cambiamento, per favore. :confounded:

Contesto

  • Discourse 2.5.0 beta4 (faeb5793ba)
  • Plugin Topic List Preview versione 4.4.0
  • Post di WP-Discourse pubblicati così come sono (HTML completo) nei topic di Discourse (primo messaggio).

Per quanto riguarda il contenuto di un post, ecco un esempio (formattato per te):

Contenuto

Codice HTML dell’immagine per comodità:

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

Prima dell’aggiornamento di Discourse

TLP funzionava sempre bene con le nostre immagini esterne, sia durante la creazione che la modifica dei topic.
Tuttavia, avevamo disabilitata l’opzione download remote images to local a causa di problemi con il markdown.

Problema di rendering del markdown

Questo non è il problema principale e si verifica ancora dopo l’aggiornamento di Discourse; ecco alcune spiegazioni.
Quando Discourse scarica e sostituisce un tag HTML di un’immagine con la sua sintassi markdown – nel nostro contesto, questo risulta come:

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

Discourse non riesce a visualizzare l’immagine

Immagine

image

Per risolvere il problema, è necessaria almeno una riga vuota sopra:

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

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

Sarebbe possibile permettere il rendering di immagini markdown circondate da HTML, per favore?

Dopo l’aggiornamento di Discourse

  • Tutte le miniature sono state cancellate.
  • Tutte le immagini vengono visualizzate correttamente nel contenuto del topic.
  • A causa di questa funzionalità (FEATURE: Include optimized thumbnails for topics (#9215) · discourse/discourse@03818e6 · GitHub, credo), siamo stati costretti ad abilitare l’opzione download remote images to local, poiché sembra non sia più possibile ottenere una miniature da un link esterno… :pensive:
  • download remote images max days old è impostato al massimo, 10000.
Impostazioni

Da qui, mi è stato detto di rifare il baking di tutti i post per scaricare le immagini. Ed è qui che diventa strano.

  1. rake posts:rebake non ha avuto molto effetto (almeno non sul primo messaggio di un topic, ma ha attivato molti PullHotlinkedImages)
    1.1. Guardando alcuni topic, ho pensato che il codice HTML delle immagini con attributi class o srcset fosse la causa, quindi ho provato a normalizzare tutte le immagini con il seguente codice (non conosco Ruby) – Ha aiutato per alcuni topic.
    1.2. Tuttavia, a causa del problema del markdown, ho dovuto aggiungere delle nuove righe per risolvere. – Almeno per questi topic, le miniature funzionavano.
Codice
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. Modificare manualmente (senza cambiare il contenuto, solo salvando) un topic ignorato funziona nella maggior parte dei casi. L’immagine viene scaricata.
    2.1. Alcuni topic rimangono ignorati anche dopo una modifica. Posso vedere che PullHotlinkedImages viene attivato, ma nessuna immagine viene scaricata. (come con questo html <img src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg" />, link)
  2. Dopo aver normalizzato e visto che una modifica può aiutare a scaricare l’immagine, ho provato a eseguire rake posts:rebake più volte – senza effetti.
  3. Poi ho provato a usare la console rails in modo simile al codice sopra ma con un ID topic specifico e solo con post.rebake!senza effetti
  4. Non tutte le immagini di un topic vengono sempre scaricate..
  5. @Canapin mi ha indicato Download remote images from older posts? - #3 by vinothkannans ; sto provando a rifare il baking di tutti i post ora. – Purtroppo non ha aiutato

È folle che alcune immagini funzionino e altre no. Non credo sia un problema di criteri. Le impostazioni delle immagini sono alte. Non capisco davvero quale sia la logica dietro tutto questo, sembra casuale.

Attualmente, abbiamo ancora molte miniature mancanti. Probabilmente la maggior parte può essere riparata manualmente con la modifica/salvataggio, ma non è fattibile. Lo sto facendo per un cliente e ho già perso molto tempo cercando di risolvere il problema.

Non mi dispiacerebbe avere immagini caricate come miniature, ma:

  • Puoi dirmi se ci sono motivi specifici per cui le immagini non vengono scaricate? Ci sono impostazioni che possono aiutare? Abbiamo bisogno di qualcosa? Come fare debug?
  • C’è un modo per forzare il download delle immagini simile alla modifica/salvataggio tramite la console?
  • Potete permettere il rendering di immagini markdown se circondate da HTML?

Spero di essere stato abbastanza preciso nella descrizione del problema.

Grazie in anticipo per qualsiasi aiuto e soluzione.

Ciao @Arkshine, mi dispiace sapere che stai riscontrando problemi qui. Purtroppo non possiamo garantire la compatibilità con tutti i plugin di terze parti, specialmente quando questi sovrascrivono il comportamento di base al di fuori dell’ambito delle nostre API per i plugin. In futuro, TLP dovrebbe essere in grado di ridurre il numero di sovrascritture del core che utilizza e, si spera, la stabilità migliorerà.

Tieni presente che ora disponiamo anche della nostra soluzione ufficiale per la visualizzazione delle miniature, implementata interamente utilizzando le nostre API per i plugin supportate.

Hai ragione nel dire che le miniature del core funzionano solo per le immagini locali. In definitiva, anche TLP scaricava le immagini e le memorizzava localmente; la differenza ora è che stiamo facendo tutto in modo coerente utilizzando il job pull_hotlinked_images.

Sembra che abbiamo un paio di problemi da risolvere qui. Penso che sia meglio separarli per non tralasciare nulla. Leggendo il tuo post, ne vedo due:

Il download di immagini remote non dovrebbe generare HTML/Markdown non valido, quindi proveremo a risolvere questo problema. Per favore, apri un argomento bug, menzionami e ci occuperemo della questione.

Anche in questo caso, i caratteri speciali non dovrebbero interrompere le immagini. Per favore, apri un altro argomento bug e ci occuperemo della questione.

Grazie per la risposta, @david.

Per quanto riguarda il markdown, i link con caratteri speciali vanno bene. Grazie.


Ma, in definitiva, il mio problema principale è ancora quello di costringere Discourse a scaricare l’immagine. Il problema del markdown può essere risolto dalla console, e non tutti i link contengono caratteri speciali. Abbiamo ancora molti argomenti senza miniature. È su questo che chiedo aiuto.

Ad esempio, questo non ha caratteri speciali. E a meno che non prema Salva modifica, l’immagine non viene scaricata tramite la ricottura dalla console, né utilizzando il link Ricostruisci HTML.

Esiste qualche comando rails o altro che possa costringere Discourse a scaricare l’immagine nello stesso modo in cui si fa con Salva modifica?


Ho effettivamente provato a utilizzare il componente, ma non ha funzionato bene. Tuttavia, ci riproverò una volta risolti i problemi relativi alle miniature.

È un sito di affiliazione?

È strano. Ho un’idea: questi post sono stati creati dall’utente di sistema? O da Discobot?

La maggior parte di loro è un utente amministratore normale. Questi argomenti sono creati tramite l’API da WP Discourse.

Ad esempio questo:

@Arkshine, era previsto un link lì?

Scusa, stavo elaborando un esempio mentre testavo alcune cose, ma ho premuto il pulsante per sbaglio.\n
Detto questo, ho iniziato a eseguire questo codice per vedere se avrebbe aiutato (scusa se fa male agli occhi!)

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

Ha richiesto del tempo. Ho notato parecchi Jobs::PullHotlinkedImages.
Ma sembra che non abbia aiutato molto.

Se controlli un argomento specifico, ad esempio questo argomento.

Dalla console, vedo che viene attivato Jobs::ProcessPost ma non 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>]

Se faccio Salva modifica dal compositore:

Vedo correttamente image

Poi posso vedere che l’immagine viene scaricata:

Ah, capisco. Il problema qui è

Perché abbiamo questa logica prima di pianificare l’acquisizione delle immagini collegate:

Questo è stato progettato per evitare un ciclo infinito di pianificazione dei job pull_hotlinked_image. Ma forse dobbiamo migliorare questa logica. Puoi controllare la cronologia delle revisioni di uno di questi post e vedere perché è stato modificato per l’ultima volta dal sistema?

Per questo argomento:

  1. image
  2. image (cambio di categoria)
  3. image (io solo Salva modifica)
  4. image (il sistema sostituisce l’immagine con il markdown)

Quindi, immagino che sia dovuto al cambio di categoria?

Sì, questo spiegherebbe! Come soluzione temporanea, puoi eseguire manualmente il lavoro di recupero delle immagini collegate in modo hotlink eseguendo qualcosa del genere:

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

Tuttavia, abbiamo bisogno di una soluzione migliore. Lo aggiungerò alla mia lista di cose da fare.

Straordinario. Proviamo!

EDIT:

Solo per confermare, il comando ha aiutato molto. Ora, la maggior parte delle immagini è tornata. Grazie ancora!

Rimangono ancora casi limite non elaborati, come immagini con caratteri speciali o argomenti in cui le immagini sono segnate come danneggiate ma non lo sono (un “Rebuild HTML” le ripara, poi salva la modifica per scaricarle). Se la pull request #9890 verrà unita e verrà applicata una correzione per il markdown, probabilmente risolverà tutto.

Ho appena unito questa correzione per le modifiche all’utente di sistema:

Credo che abbiamo già affrontato tutti gli altri problemi in discussioni separate, ma se ne abbiamo saltato qualcuno, sentiti libero di aprirne un’altra @Arkshine

A proposito, ho appena rimosso questa impostazione. Non controlliamo più l’età del post quando recuperiamo le immagini hotlinkate.

cc @merefield