oEmbed Onebox-Unterstützung für Photobucket

Wir haben ein Fotografieforum, das aus dem Jahr 2004 stammt, und Photobucket wird von vielen Mitgliedern genutzt… jedoch werden die älteren Beiträge mit Photobucket-Bildern im Beitrag nicht angezeigt… (Metrô de NYC - #3 de fotografosonline - Galeria de Fotos - Fotógrafos Online)

Gibt es einen Photobucket-Support oder eine Möglichkeit, dies zur Liste der erlaubten Onebox-Domains hinzuzufügen?

Photobucket möchte nicht, dass Sie diese Bilder einbetten:

ABER WARTEN SIE!! Wenn Sie dies tun:

![](https://hosting.photobucket.com/images/af237/atpaula/tempImageuaxhM1.heic?width=1920&height=1080&fit=bounds
)

Sie können dies erhalten:

Dadurch kann Discourse diese Bilder nicht herunterladen, sodass Sie sie haben, wenn sie nicht mehr von Photobucket verfügbar sind, aber sie werden angezeigt.

Dann müssten Sie in Rails gehen, alle Beiträge abrufen, die ^https://hosting.photobucket.com haben, und ein gsub durchführen, um diese reinen URLs durch ![](die url) zu ersetzen.

Moment. Als ich dies zum ersten Mal schrieb, wurde die obere URL nicht gerendert, aber später scheint es, als ob Discourse sie heruntergezogen hat! (Und es hat auch auf meinem Testserver funktioniert!)

Vielleicht müssen Sie die Beiträge nur neu backen?

Aber auf Ihrer Website funktioniert es nicht: https://forum.fotografos.online/t/esta-imagem-do-photobucket-sera-renderizada/226420

Haben Sie den Download auf lokal deaktiviert?

Herunterladen auf lokal - Das wüsste ich nicht :confused:

Wenn Sie ein Administrator sind, können Sie Folgendes sehen:

https://forum.fotografos.online/admin/site_settings/category/all_results?filter=download%20remote%20images

Wenn es deaktiviert ist, aktivieren Sie es, gehen Sie zu dem von mir erstellten Thema, klicken Sie auf das :wrench: und dann auf die Sache, die sich in „HTML neu erstellen“ übersetzt.

Ich habe es gerade im Admin aktiviert … und bin zum ursprünglichen Beitrag zurückgekehrt, um ihn neu zu erstellen … aber es hat nicht funktioniert …

Es hat jedoch bei Ihrem Beitrag funktioniert.

Im ursprünglichen Beitrag habe ich nur die URL roh hinzugefügt:

https://hosting.photobucket.com/images/af237/atpaula/tempImageRLm0iR.heic?width=1920&height=1080&fit=bounds

(Discourse hat es wohl deaktiviert)

Das liegt daran, dass sie im ursprünglichen Beitrag als URLs kodiert sind: https://forum.fotografos.online/posts/1579128.json

wie


1
[URL=https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds]
https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds
[/URL]

Sie wollten diese also wirklich bei der Migration korrigieren, aber es ist immer noch möglich, eine Aufgabe in Rails auszuführen, die sie repariert.

1 „Gefällt mir“

Ich habe mich auf https://ask.discourse.com/ erkundigt und nach einem Fehlstart Folgendes erhalten:

Ersetzen von [URL]-Tags in Discourse-Beiträgen KI

pfaffman:

Ich habe eine Reihe von Beiträgen, die so aussehen:

1
[URL=https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds]
https://hosting.photobucket.com/images/af237/atpaula/tempImage7XmEb0.heic?width=1920&height=1080&fit=bounds
[/URL]

Ich muss einen Rails-Befehl ausführen, um alle diese Beiträge zu finden und dann gsub zu verwenden, um die [URL…][/URL] durch nur die tatsächliche URL zu ersetzen, damit sie in einer One-Box gerendert wird.

DiscourseHelper:

Suche

Suche nach: Wie verwende ich einen Rails-Befehl oder Konsolen-Code, um alle Beiträge zu finden, die ein bestimmtes String-Format wie [URL]-Tags enthalten, und ersetze dann diese Tags durch nur die enthaltene URL in Discourse?

Um alle Instanzen von [URL]...[/URL] zu finden und sie durch nur die enthaltene URL in Ihren Discourse-Beiträgen zu ersetzen, können Sie dies mit Rails in der Discourse-Konsole erreichen. Hier ist, wie Sie es tun können:

Schritte:

  1. Zugriff auf die Rails-Konsole:
    Sie benötigen SSH-Zugriff auf Ihren Server. Führen Sie den folgenden Befehl aus, um auf die Discourse Rails-Konsole zuzugreifen:

    cd /var/discourse
    ./launcher enter app
    rails c
    
  2. Ausführen eines Such- und Ersetzungsbefehls:
    Verwenden Sie den folgenden Code-Schnipsel, um Beiträge zu finden, die [URL]...[/URL] enthalten, und ersetzen Sie sie.

    Post.where("cooked LIKE ?", "%[URL=%[/URL]%").find_each do |post|
      updated_cooked = post.cooked.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
      if updated_cooked != post.cooked
        post.update!(cooked: updated_cooked)
        PostRevisor.new(post, Discourse.system_user).revise!(
          post.user,
          { cooked: updated_cooked },
          revised_at: Time.now
        )
        puts "Aktualisierter Beitrag ID: #{post.id}"
      end
    end
    
  3. Testen des Skripts:
    Führen Sie die gsub-Logik auf einem einzelnen Beitrag aus, bevor Sie den Inhalt in großen Mengen ersetzen, um sicherzustellen, dass er wie erwartet funktioniert.

    test_post = Post.first # Ersetzen Sie dies durch eine ID für besseres Testen
    puts test_post.cooked.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
    
  4. Ausführen des Skripts und Überwachen:
    Führen Sie das vollständige Skript aus, überwachen Sie die Ausgabe und korrigieren Sie gegebenenfalls Fehler.

Hinweise:

  • Dieses Skript verwendet Regex (\[URL=.*?\\](.*?)\\[\\/URL\\]), um das angegebene Muster abzugleichen und zu ersetzen. Stellen Sie sicher, dass das Muster genau Ihren Anforderungen entspricht.
  • Es verwendet PostRevisor, um sicherzustellen, dass die Änderungen in der Bearbeitungshistorie des Beitrags aufgezeichnet werden.
  • Stellen Sie sicher, dass Sie gründlich testen und ein Backup Ihrer Datenbank erstellen, bevor Sie Massenänderungen durchführen.

Für zusätzliche Anleitungen lesen Sie die verwandte Dokumentation auf meta.discourse.org. Wenn Sie auf Probleme stoßen, teilen Sie hier gerne Details mit!

pfaffman:

Es muss diese in raw und nicht in cooked ersetzen.

DiscourseHelper:

Vielen Dank für die Klarstellung! Da die Änderungen im Feld raw (ursprünglicher Beitraginhalt) vorgenommen werden müssen, können wir das Skript so modifizieren, dass es stattdessen mit dem Feld raw arbeitet. Hier ist, wie Sie dies erreichen können:

Aktualisierter Rails-Befehl für das Feld raw

  1. Skript modifizieren und ausführen:
    Nachfolgend finden Sie das aktualisierte Skript zur Verarbeitung und zum Ersetzen der [URL]...[/URL]-Tags im Feld raw von Beiträgen:

    # Finde alle Beiträge, bei denen raw den [URL]-Tag enthält
    Post.where("raw LIKE ?", "%[URL=%[/URL]%").find_each do |post|
      updated_raw = post.raw.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
      
      if updated_raw != post.raw
        # Aktualisiere den raw-Inhalt
        post.update!(raw: updated_raw, cooked: nil)
    
        # Trigger Rebake, um den cooked-Inhalt neu zu generieren
        post.rebake!
    
        puts "Aktualisierter Beitrag ID: #{post.id}"
      end
    end
    
  2. Erläuterung der Änderungen:

    • raw statt cooked: Das Feld raw enthält den ursprünglichen Beitraginhalt, daher wird die gsub-Operation auf den raw-Text angewendet.
    • cooked zurücksetzen: Das Setzen von cooked auf nil stellt sicher, dass der Beitrag korrekt neu gebacken (verarbeitet) wird.
    • rebake!: Dies löst den Rebake-Prozess aus, der die cooked-Version (HTML-gerendert) des Beitrags aus dem aktualisierten raw-Inhalt neu generiert.
  3. Testen des Gsub für Raw-Inhalt:
    Testen Sie die reguläre Ausdruck-Ersetzung an einem einzelnen Beitrag, um sicherzustellen, dass sie korrekt funktioniert:

    test_post = Post.first # Ersetzen Sie dies durch eine geeignete Beitrags-ID zum Testen
    puts test_post.raw.gsub(/\[URL=.*?\](.*?)\[\/URL\]/, '\1')
    
  4. Ausführen der Massenaktualisierung:
    Sobald Sie bestätigt haben, dass es wie beabsichtigt funktioniert, können Sie das Skript ausführen, um alle Beiträge zu verarbeiten, die die [URL]-Tags enthalten.

  5. Überwachen und Verifizieren:
    Überwachen Sie die Ausgabe des Skripts. Für jeden aktualisierten Beitrag wird seine id in der Konsole ausgegeben. Überprüfen Sie nach Abschluss einige Beiträge auf der Website, um sicherzustellen, dass die Änderungen korrekt angezeigt werden.


Backup-Erinnerung:
Stellen Sie sicher, dass Sie ein vollständiges Datenbank-Backup haben, bevor Sie das Skript ausführen, insbesondere wenn Sie Massenänderungen vornehmen.

Wenn Sie zusätzliche Fragen haben oder auf Probleme stoßen, fragen Sie gerne!

Und mir gefällt, dass PostRevisor verwendet wird, so dass Sie bei Problemen eine Aufzeichnung der Bearbeitung haben.

1 „Gefällt mir“

Ahhhh… Ich werde mir das ansehen!!! Vielen Dank!!!

1 „Gefällt mir“

Sie möchten es auf jeden Fall an einigen Beiträgen testen, bevor Sie es freigeben – und auch sehen, wie viele Beiträge es beheben wird und wer Benachrichtigungen für all diese erhalten wird (es gibt so etwas wie bypass_bump oder Ähnliches, das die Benachrichtigungen überspringt, glaube ich).

1 „Gefällt mir“