Vecchi post elaborati di LazyYT non sono stati rielaborati dopo che lazy-yt è stato sostituito con lazy-video

Sembra che al momento nei miei forum ci siano centinaia o migliaia di post vuoti o post a cui mancano i video di YouTube e il motivo sembra essere che il contenuto del post cotto appare così:

<div class="cooked">
<div class="lazyYT" data-youtube-id="WJxSNbAer9M" data-youtube-title="Starset - Die For You (Official Audio)" data-width="480" data-height="270" data-parameters="feature=oembed&amp;wmode=opaque">
</div>
</div>

Se ricostruisco i video di YouTube HTML vengono cotti correttamente utilizzando lazy-video-wrapper.

Ho fatto qualche ricerca e sembra che questo problema possa essere correlato a questo PR: DEV: Remove lazy-yt and replace with lazy-videos by jancernik · Pull Request #20722 · discourse/discourse · GitHub Per qualche motivo, dopo questa modifica, non tutti i post sono stati ricotti. Non sono un esperto di SQL o Discourse, quindi non sono sicuro se il problema sia nello script di migrazione stesso o nel fatto che sia fallito a un certo punto.

class RebakeLazyYtPosts < ActiveRecord::Migration[7.0]
  def up
    execute <<~SQL
      UPDATE posts SET baked_version = 0
      WHERE cooked LIKE '%lazyYT-container%'
    SQL
  end
end

Sembra che debba ricuocere un paio di migliaia di post con link a YouTube. Come dovrei procedere?

Penso sia possibile essere limitati da YouTube quando si rifanno molti post. Potresti prendere in considerazione di farlo in batch con un ritardo per evitare di raggiungerlo di nuovo.

Potresti indicarmi una risorsa su come farlo? Suppongo un modo che non richieda una sessione attiva del terminale.

Non mi sono addentrato nel motivo per cui i miei post non sono stati ricotti, quindi rimane un mistero. Se qualcuno incontra questo problema e vuole ricuocere manualmente i propri post, ecco come ho proceduto:

Entra nella console di Rails:

cd /var/discourse
./launcher enter app
rails c

E ho eseguito questo script:

posts = Post.where ("cooked like '%lazyYT%'")
posts.each do |p|
    p.rebake!     
    sleep 1 
end

Un post al secondo è più lento di quanto vorrei, ma volevo essere sicuro di non raggiungere eventuali limiti di YouTube, se ce ne sono. Per 12.000 post non è stata un’attesa così brutta.