Alte LazyYT-gebackene Posts wurden nicht neu gebacken, nachdem lazy-yt durch lazy-video ersetzt wurde

Es scheint, dass ich derzeit Hunderte oder Tausende von leeren Beiträgen in meinen Foren habe oder Beiträge, bei denen YouTube-Videos fehlen. Der Grund dafür scheint zu sein, dass der gebackene Beitrag-Inhalt so aussieht:

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

Wenn ich die HTML-YouTube-Videos neu backe, werden sie korrekt mit lazy-video-wrapper verarbeitet.

Ich habe etwas recherchiert und es scheint, dass dieses Problem möglicherweise mit diesem PR zusammenhängt: DEV: Remove lazy-yt and replace with lazy-videos by jancernik · Pull Request #20722 · discourse/discourse · GitHub Aus irgendeinem Grund wurden nach dieser Änderung nicht alle Beiträge neu gebacken. Ich bin kein SQL- oder Discourse-Experte und bin mir nicht sicher, ob das Problem im Migrationsskript selbst liegt oder darin, dass es zu irgendeinem Zeitpunkt fehlgeschlagen ist.

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

Es scheint, dass ich ein paar Tausend Beiträge mit YouTube-Links darin neu backen muss. Wie soll ich vorgehen?

1 „Gefällt mir“

Ich glaube, es ist möglich, von YouTube bei der erneuten Verarbeitung einer großen Anzahl von Beiträgen einer Ratenbegrenzung unterworfen zu werden. Möglicherweise sollten Sie in Erwägung ziehen, dies in Stapeln mit einer Verzögerung zu tun, um zu vermeiden, dass Sie erneut auf diese stoßen.

1 „Gefällt mir“

Könnten Sie mir eine Referenz geben, wie ich das tun kann? Ich nehme an, eine Methode, die keine aktive Terminal-Sitzung erfordert.

Ich habe mich nicht damit beschäftigt, warum meine Beiträge nicht neu gebacken wurden, sodass es ein Rätsel bleibt. Wenn jemand auf dieses Problem stößt und seine Beiträge manuell neu backen möchte, hier ist, wie ich vorgegangen bin:

Rails-Konsole eingeben:

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

Und ich habe dieses Skript ausgeführt:

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

Ein Beitrag pro Sekunde ist langsamer, als ich es gerne hätte, aber ich wollte ganz sichergehen, dass ich keine YouTube-Limits erreiche, falls es welche gibt. Für 12.000 Beiträge war das Warten nicht so schlimm.

2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.