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?
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.
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, …?
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
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.
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.
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.
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.
Ich bin mir nicht sicher, ob ein API-Schlüssel Ihnen helfen könnte, Ihr Problem einfacher zu lösen.
Hier ist ein 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()
Wunderbar, danke @Canapin!
Ich liebe ein bisschen Python
Ich habe jetzt alle Threads mit kaputten Bildern mit deiner Hilfe identifiziert.
Sehr geschätzt.
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.