Suche nach Bild-URLs in Themen

Ich habe gesucht und effektiv nach Inhalten gesucht und keine Antwort gefunden.

Ich habe ein Discourse, bei dem ich Moderator bin (ich habe keinen Zugriff auf das Backend). Jemand hat zahlreiche Themen gepostet, bei denen Bilder zu einem Drittanbieter-Hosting-Provider (in diesem Fall Google Docs) verlinkt wurden. Sie haben das Unternehmen verlassen, und all diese Bildlinks sind jetzt defekt.

Ich kann (und habe) einige ihrer Beiträge manuell durchgesehen, um defekte Bilder zu finden und zu reparieren (dank des Internetarchivs). Aber das ist mühsam. Ich möchte eine Liste aller Themen erhalten, die diese defekten Bild-URLs enthalten, damit wir sie gemeinsam reparieren können, indem wir die Bilder auf der Website neu hochladen.

Ich kann natürlich die Suche verwenden, um mit:bildern #tutorials zu finden, aber ich kann nicht in den Bild-URLs nach (zum Beispiel) googleusercontent suchen. Ist das ohne API- oder Backend-rake-Zugriff möglich?

2 „Gefällt mir“

Ein Administrator könnte eine Daten-Explorer-Abfrage erstellen, die diese Beiträge findet.

Aber wenn der Administrator nicht wollte, dass dies geschieht, müsste er das Herunterladen von Bildern auf lokal aktiviert haben. Es ist ein Problem, das sie selbst geschaffen haben, und es ist nicht wirklich die Aufgabe eines Moderators, es zu beheben.

3 „Gefällt mir“

Bedeutet das, dass Sie auch keinen Daten-Explorer installieren können? Das wäre das Werkzeug der Wahl dafür.

Wie sind die Bilder in den Beiträgen formatiert? Zeigen sie nur die reine URL, verwenden sie [img], \u003cimg\u003e, ![](url)…?

Nur um Ihr Problem zu veranschaulichen. Ein Beitrag könnte eine defekte Bild-URL enthalten, wie z. B. https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg

Der Beitrag enthält die URL,

Aber es wird etwas zurückgegeben wie

<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" target="_blank" rel="noopener" class="onebox">
    <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNaW4QQ43EQ-8qqQPntDP7so6Cg19PVSLN9bXv3ZhQqHZtomb8CGY3XArx3GIaZ04d0p9K3V-buaf73-M5dpq2wPuvnjsapStHdTkTVoPj2q9RAmcdczmE12HYz57PNOdVuft1/s1600-h/eastern_coastal_pcn_ap.jpg" width="" height="" loading="lazy">
</a>

Was keinen durchsuchbaren String enthält.

Ist das, was passiert?

3 „Gefällt mir“

Korrekt, ich kann keine Plugins installieren.

Sie sind mit Standard-Markdown ![](url) formatiert, wobei googleusercontent Teil der URL ist. Zum Beispiel:

![|312x416](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeWkc1cZH8jtNveMhet36oWsLDlUxA-2QadGepx8Uuw1naq6vx5JAd6oyQ2pSmLJkKN97ZnTlV2txMqdNb0QMDCqV0xu-0xOFzePw2hnrNPUNbHoHMWh60KJpP3QkLq2E3Gp0-cKrf3tSWjML8oIQ3I9JQ?key=7YTVKNzk_oQvl95Fd_BKLQ)

Wenn ich nach googleusercontent suche, werden keine Ergebnisse zurückgegeben. Dennoch kann ich Beiträge finden, die Bilder enthalten, referenziert durch eine URL, die den Text googleusercontent enthält. Ich weiß nicht, ob dies ein Fehler oder ein Feature ist, dass Discourse die URLs von Markdown-formatierten Bildlinks nicht durchsucht.

1 „Gefällt mir“

Ich glaube, die Discourse-Suche wird auf dem verarbeiteten Beitrag durchgeführt, der HTML enthält.
Die Suche ignoriert HTML-Tags, und IMG-Tags enthalten keinen Text, daher ist es unmöglich, das zurückzugeben, wonach Sie suchen.

Warum können Sie die API nicht verwenden?
Sie könnten ein lokales Skript erstellen, das eine Suchanfrage für die Beiträge des Benutzers auslöst, die Bilder enthalten, die Ergebnisse durchläuft (langsam genug, um keine Ratenlimits zu erreichen, und Sie können auch die rohen Beiträge abfragen nach Bedarf durchsuchen) und die Beiträge ausgibt, die den von Ihnen gesuchten Teilstring enthalten.

Vielleicht gibt es eine einfachere Lösung, aber das wäre meine Wahl, wenn keine andere Option besteht. Ziemlich einfach zu machen.

Weil der Administrator ihr keinen API-Schlüssel gibt?

Weil sie keine Programmiererin ist?

Es scheint ein Problem zu sein, das der Administrator geschaffen hat und an dessen Lösung er kein Interesse hat.

1 „Gefällt mir“

Ja, ich meine, ein Schlüssel ist für die API-Such- und Endpunkte, die für meinen Vorschlag benötigt werden, nicht erforderlich, wenn ich mich nicht irre?

Und sicher, es würde idealerweise grundlegende Programmierkenntnisse erfordern, auch wenn KIs wahrscheinlich ein gutes Basisskript ausgeben können.

Das erwähnte Problem ist sicherlich nicht ideal, ohne Administratorzugriff zu lösen.

2 „Gefällt mir“

Ich habe keinen API-Schlüssel beantragt (Bürokratie) und war mir nicht bewusst, dass ich einen für eine meiner Meinung nach „einfache“ Suchanfrage benötigen würde. Mir war nicht bewusst, dass sie nicht in die HTML-Tags im Inhalt schaut. Das erklärt die Sache, danke.

Das ist kein Problem, das die Administratoren verursacht haben. Es ist lediglich eine Situation, die den Administratoren und Content-Erstellern nicht bewusst war, bis jemand das Unternehmen verließ und der Zugriff auf Google Docs für dieses Konto gesperrt wurde, wodurch die Bilder verschwanden/kaputtgingen.

Ich stimme zu, dass ich einen API-Schlüssel beantragen oder etwas lokal schreiben könnte, um die Website zu durchsuchen und die problematischen Beiträge zu finden. Ich werde eines von beidem tun.

Danke für die Antworten. :pray:

2 „Gefällt mir“

Sie benötigen keinen API-Schlüssel für Suchen.

Ich bin mir nicht sicher, ob ein API-Schlüssel Ihnen helfen könnte, Ihr Problem einfacher zu lösen.

Hier ist ein :robot: Beispiel-Python-Skript, das meine Beiträge (1 Beitrag alle 3 Sekunden) auf Meta durchläuft und diejenigen zurückgibt, die den Unterstring upload:// im Rohinhalt enthalten:

import requests
import time

def fetch_posts(page):
    url = f"https://meta.discourse.org/search.json?q=%40cocoquark&page={page}"
    response = requests.get(url)
    return response.json()

def fetch_post_content(post_id):
    url = f"https://meta.discourse.org/posts/{post_id}/raw"
    response = requests.get(url)
    return response.text

def process_posts():
    page = 1
    while True:
        print(f"page {page}")
        data = fetch_posts(page)
        
        for post in data['posts']:
            content = fetch_post_content(post['id'])
            if "upload://" in content:
                print("https://meta.discourse.org/posts/" + str(post['id']))
            time.sleep(3)        
        
        if len(data['posts']) < 50:
            print("No more results.")
            break
        
        page += 1

if __name__ == "__main__":
    process_posts()
Ausgabe
page 1
https://meta.discourse.org/posts/1682015
https://meta.discourse.org/posts/1677389
https://meta.discourse.org/posts/1679834
https://meta.discourse.org/posts/1678673
https://meta.discourse.org/posts/1679833
https://meta.discourse.org/posts/1678629
https://meta.discourse.org/posts/1678229
https://meta.discourse.org/posts/1676531
https://meta.discourse.org/posts/1674982
https://meta.discourse.org/posts/1670250
https://meta.discourse.org/posts/1674421
https://meta.discourse.org/posts/1671959
https://meta.discourse.org/posts/1674355
https://meta.discourse.org/posts/1673357
https://meta.discourse.org/posts/1669322
https://meta.discourse.org/posts/1665519
page 2
https://meta.discourse.org/posts/1674153
https://meta.discourse.org/posts/1670613
https://meta.discourse.org/posts/1666606
https://meta.discourse.org/posts/1674992
https://meta.discourse.org/posts/1672811
https://meta.discourse.org/posts/1672050
https://meta.discourse.org/posts/1686260
https://meta.discourse.org/posts/1684497
https://meta.discourse.org/posts/1680692
https://meta.discourse.org/posts/1675012
page 3
No more results.
2 „Gefällt mir“

Wunderbar, danke @Canapin!
Ich liebe ein bisschen Python :pray:
Ich habe jetzt alle Threads mit kaputten Bildern mit deiner Hilfe identifiziert.
Sehr geschätzt.

3 „Gefällt mir“

Sie benötigen keinen API-Schlüssel für eine einfache Suche, aber ich sehe keinen Sinn darin, „die API zu verwenden“, um eine einfache Suche durchzuführen.

Vielleicht habe ich das Problem missverstanden. Es klang nach einem Problem, das nicht aufgetreten wäre, wenn download remote images to local aktiviert gewesen wäre, und es ist standardmäßig aktiviert. Aber es ist auch wahrscheinlich, dass es aus einem bürokratischen Grund deaktiviert wurde, den der Administrator vorgenommen hat. Ich denke, es wird unnötig schwierig sein, Ihr Problem ohne das Data Explorer Plugin oder Zugriff auf Rails zu lösen.

Alter! Du bist der Hammer!

3 „Gefällt mir“

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