Bulk-Edit von Posts ohne die API möglich?

The FearlessOne

Neues Mitglied
Registriert
5. Dez. 2022
Beiträge
3
Punkte
1
Hallo Leute,

ich bin Moderator in einem großen Forum, das bald auf XF migriert werden soll. Ich bin kein Administrator oder sonstwie der Eigentümer und auf Grund der Größe funktioniert unsere Organisationsstruktur eher wie die einer Firma als die eines kleinen Communityforums. Die Leute über mir haben kein technisches Wissen und/oder sind sowieso soweit vom täglichen Betrieb entfernt, dass sie dazu nichts beitragen können. Viele davon kenne ich nicht mal.

Ich suche nach einer Möglichkeit um größere Mengen von Posts (Größenordnung vierstellig oder gar mehr) automatisiert zu bearbeiten. Ich selbst habe einen IT-Background, allerdings keine Erfahrung mit XF. Ich habe mich in im XF Manual nach Möglichkeiten umgesehen und wollte mit Hilfe der API was implementieren, aber die Eigentümer haben Bedenken mir einen API Key zu geben.

Ich muss die Posts einlesen, auf Kriterien prüfen ob eine Änderung notwendig ist, den Text dann ggf. ändern und die neuen Daten dann zurückschreiben. Unnötig zu erwähnen, dass ich natürlich auch keinen Datenbankzugriff habe um das direkt auf der Ebene zu machen.

Die Posts einlesen ist noch relativ trivial, wenn auch krude, da ich notfalls einfach die komplette page source einlesen und parsen kann. Allerdings muss ich dann natürlich die Änderungen in die richtigen Posts schreiben. Wenn ich die Post ID mitkriege, kann ich über einen http-request, bei der die ID und der neue Text übergeben wird, die Benutzung der Edit-Funktion emulieren? Das Ganze über das GUI zu automatisieren, z.B. mit AutoIt, wäre ja noch katastrophaler und keine Option.

Ich bin auch offen für andere Vorschläge, falls jemand Ideen hat. Mir ist klar, dass das ein katastrophales Gefummel wird und ich will das auch nicht, die Frage ist nur was möglich ist und die besten Wege bleiben mir vermutlich versperrt. Ich habe das Link Checker Addon gefunden, das kann scheinbar was wir brauchen, aber ob ich die Zuständigen überreden kann das zu nutzen steht in den Sternen. Wie führt dieses Addon die Änderungen durch? Wäre das Addon auch nur ein Aufsatz auf die API, sodass es für uns nicht in Frage käme, oder nutzt es einen anderen Weg?

Ich danke euch für alle Infos, die ich kriegen kann!
 
Es gibt ein kostenfreies Addon direkt von Xenforo über das man mittels RegEx ein "suche und ersetze" über die Beiträge laufen lassen kann - wenn man mit RegEx fit ist, ein recht mächtiges kleines Tool. Das würde mMn. komplett reichen für dein Vorhaben.

Alternativ sollte dir der Weg über SQL ja nicht unbekannt sein wenn du nen IT-Background hast.
Wobei ich das:
Unnötig zu erwähnen, dass ich natürlich auch keinen Datenbankzugriff habe um das direkt auf der Ebene zu machen.
in dem Kontext dann auch etwas merkwürdig finde. Schon zur Migration wäre ein DB-Zugriff ratsam mMn..

Das ist n bisschen wie nem Maurer zu sagen, verputz mal die Wand da hinten, aber mit verbundenen Augen bitteschön.

ps. n Link zum Forum wäre nett oder die Lizenz-Validierung, da wir hier ungern Raubkopien supporten möchten. :)
 
Die Posts einlesen ist noch relativ trivial, wenn auch krude, da ich notfalls einfach die komplette page source einlesen und parsen kann.
Also mal ehrlich - da kommen mir irgendwie Zweifel ob deine Story so wie du sie hier schreibst plausibel ist - wenn du in einer Firma offiziell deren Forum migrieren sollst, dann hast du auch Zugriff auf das Forum und dessen DB.

So liest sich das n bisl wie wenn einer Daten vom Wettbewerber scrapen will und dann gezielt Inhalte manipulieren wollte um sie danach als die eigenen auszugeben... ;-)
 
Dass das eine relativ wilde Geschichte ist steht wohl außer Frage :) Wenn sie das nicht wäre, dann würde ich nicht nach Hilfe fragen. Und dass ich das SO eigentlich gar nicht machen will hatte ich ja gesagt, ich würde am liebsten die API dafür verwenden. Ich bin derzeit auf der Suche nach Leuten, die Erfahrung mit Xenforo haben und mir vielleicht noch ein paar alternative Ideen zuwerfen können und das hier war die erste Anlaufstelle, die ich gefunden habe. Beziehungsweise, stimmt nicht ganz, zuerst wollte ich es im offiziellen Forum versuchen, da ist die Posting-Möglichkeit aber auch extrem beschränkt. Dass es Probleme mit Raubkopien gibt, und das der Grund dafür ist, war mir nicht bekannt. Wie gesagt, ich hatte bisher noch überhaupt keine Kontakte mit Xenforo.

Um ein paar deiner Bedenken zu adressieren:
Wir sind keine Firma, nur so groß dass die Strukturen vergleichbar sind. Ich bin auch nicht derjenige, der die Migration durchführt, daher habe ich auch keinen Zugriff auf die DB. Ich bin nicht mal Forenadmin, geschweige denn Serveradmin, sondern nur ein Communitymitglied und als Moderator tätig. Da sind einige Hierachie-Ebenen über mir, daher der Vergleich mit einer Firma und auf dem kurzen Dienstweg kann ich da leider gar nichts machen. Daher habe ich auch keinen Zugang zu den Lizenzinformationen, es besteht für mich allerdings kein Zweifel daran, dass wir einwandfrei lizensiert sind. Die Verantwortlichen bei uns sind schon länger mit Xenforo in Kontakt, da eine Migration weg von vBulletin schon seit langem unausweichlich war. Es wurde bisher nur nie angegangen, das hat sich jetzt aber offenbar geändert. Wenn wir auf Xenforo laufen würden und nicht sauber lizensiert wären, dann würde das Xenforo sicher recht bald auffallen.

Ob du diese Story für plausibel hälst oder nicht, wahr ist sie auf jeden Fall, aber ich nehme es keinesfalls jemandem übel, wenn derjenige irgendwelchen Absurditäten gegenüber skeptisch ist. Und Daten klauen will ich natürlich auch nicht, dafür bräuchte ich keine Hilfe. Ich will ja gezielt unsere eigenen Daten modifizieren, im Kontext meiner Userrechte. Wenn es sich um Konkurrenz handeln würde und ich dort Rechte zum ändern von Posts hätte, dann haben die wohl ganz andere Probleme als Konkurrenz durch uns. Und wenn ich Daten klauen und rüberkopieren wollen würde, dann müsste ich nicht auf die Post ID Rücksicht nehmen. Es geht darum bestehende Posts zu ändern, nicht mehr und nicht weniger. Ich will keine neuen Posts anlegen, weder bei uns noch anderswo.

Wenn das zu bizarr ist als dass man mir hier helfen kann und/oder will, dann ist das auch kein Problem und ich muss eben gucken ob ich anderswo jemanden finde oder mir selbst noch was einfällt. Eine Testumgebung wurde mir gestellt, falls möglich würde ich nur gerne vermeiden das Rad neu zu erfinden. Aber ob ich da drum herum komme weiß ich im Moment auch noch nicht so genau.

Ich nehme auf jeden Fall schon mal dankend zur Kenntnis, dass es ein suchen und ersetzen Addon mit RegEx gibt.

Vielleicht formuliere ich meine Frage(n) auch einfach mal anders, würdest du, und jeder der das sonst noch liest und sich vielleicht äußern möchte, denn zustimmen, dass die API dafür die richtige Lösung wäre, um sowas zu automatisieren? Und nutzen die Addons, wie der Link Checker oder das suchen und ersetzen Addon, auch die API, oder gehen die noch einen anderen Weg. Wenn ja, welchen? Da ich weder API- noch DB-Zugang habe sind meine Möglichkeiten begrenzt und wenn die Addons auch nur eine GUI sind um den API-Zugriff zu vereinfachen, dann bringt mich das leider auch nicht weiter.
 
API ??? Welche API ?

Link zum Forum ?

Normale Migration: Backup >> Bereinigung >> Migration >> Backup >> Prüfung und ggf. Nachbearbeitung >> Backup

Danach kann man Addons einspielen, und eben eines davon wäre das Search and Replace von Kier Darby um zunächst per grober Suche die zu ändernden Strings zu finden und danach mittels RegEx diese zu zerlegen und abschließend verändert wieder zu speichern.
Ob das dann Links, BBcodes oder Text ist - ist dem Addon egal.

Rechte zum ändern von Beiträgen hast du als Moderator nur bedingt bzw. begrenzt es sei denn die Administration ist ein klein wenig jeck und lässt normale Mods Beiträge endgültig löschen. Aber ok, kann ja alles sein...
Nur wie du als Moderator ohne ausreichende Rechte eine Foren-Software migrieren können willst, erschließt sich mir ebenso nicht, wie du als Moderator ein Addon in eben dieser Forensoftware installieren wolltest.

Für die Migration wirst du Schreibrechte auf dem Webspace/Server benötigen, sowie volle Super-Admin Rechte um die Migration überhaupt zu starten. Zumindest Admin Rechte werden dann zum installieren der Addons nötig und es wäre fast verwunderlich wenn du im Zuge der Migration nicht einmal mit der DB direkt zu tun bekommen solltest.
Anschließend wirst du den Webspace/Server bzw. PHP und den Apachen oder Nginx noch optimieren müssen, vermutlich auch die Datenbank damit der Laden wieder richtig geschmeidig läuft...
Aber für all das fehlen dir, soweit ich dich richtig verstanden habe, die Rechte - Hirarchie hin oder her, das ist wohl ein Fakt.

Ich will ja gezielt unsere eigenen Daten modifizieren, im Kontext meiner Userrechte.
Und an dem Punkt wäre dann auch das Addon raus - da dies stets ALLE Beiträge durchforstet und in allen den Suchkriterien entsprechenden auch verändert.

Also noch mal anders herum:
Die mir unbekannte Hirarchie über dir müsste also erstmal folgendes tun:
Normale Migration: Backup >> Bereinigung >> Migration >> Backup >> Prüfung und ggf. Nachbearbeitung >> Backup
Danach kann man Addons einspielen...
den Webspace/Server bzw. PHP und den Apachen oder Nginx noch optimieren müssen, vermutlich auch die Datenbank damit der Laden wieder richtig geschmeidig läuft...

Und danach, hast du ein Problem, wenn die dir übergeordnete Hirarchie das Suchen und Ersetzen nicht selbst für dich und alle anderen übernimmt - denn für ein Suchen und ersetzen nur in bestimmten Forenbereichen bräuchte man Zugriff auf die DB - hätte dann aber Vollzugriff auf ALLE Daten und somit wird das dann wohl nichts. Aber hätte man Vollzugriff, könnte man auch statt der DB auch das Addon benutzen (einfacher).

Von daher - ich glaube wir drehen uns im Kreis. Entweder kannst du die Migration selbst machen oder dabei sein und hast so oder so im Zuge dessen Vollzugriff auf die Daten, oder ... du schaust von der Seitenlinie zu wie die dir übergeordneten diesen Job erledigen, in dem Vertrauen welches alle Nutzer des Forums in eben diese setzen.


Folglich - wenn, müssten sich deine dir übergeordneten Personen sich um all das kümmern, oder dir deutlich mehr Rechte zugestehen. Andernfalls sehe ich da ein Henne-Ei-Problem.
Ich möcht je helfen, aber bei den Eckdaten wirds schwer bis unmöglich denke ich. Sorry.
 
@The FearlessOne
Vorab zu meinem Background (falls nicht ohnehin bekannt):
Ich bin seit bald 20 Jahren mit der Entwicklung von Forensoftware (primär vBulletin und XenForo) beschäftigt, war auch eine Zeit lang als Enwickler für Jelsoft (der Firma hinter vBulletin befor die um 2009 verkauft wurde) tätig.
Je nachdem welche vBulletin Version man nutzt findet man in den Credits im Mod-/Admin-CP auch meinen Realnamen (zumindest bis incl. 4.2., bei 5.X wohl eher nicht mehr).

Shell > Add-on > API > Gefrickel

Da Du keinen Shell-Zugriff hat scheidet das also leider aus.

Post Content Find / Replace scheidet auch aus da du keinen Admin-Zugriff hast um das Add-on zu installieren oder zu nutzen.
(XenForo Add-ons arbeiten direkt mit dem Code, also ähnlich wie bei vBulletin - nur dass der Code nicht Steinzeit-Spaghetticode sondern relativ State-of-the-Art ist)

Die API scheidet ebenso aus du keinen API-Key hast / kriegst.

Bleibt Gefrickel - das ist schmerzvoll und unendlich ineffizient, aber machbar- vorausgesetzt du kannst alle alle Foren sehen und hast in allen Foren die benötigten Mod-Rechte (Bearbeiten, Löschen Freischalten, etc.).

Grundsätzlicher Ablauf wäre dann
Code:
GET /login/login
Form-Value _xfToken sowie Cookies xf_session, xf_csrf speichern (und bei wieteren Requests immer mitgeben)

Code:
POST /login/login

mit Form-Data-Payload
Code:
login=
password=
_xfToken=

ggf. geändertes Cookie xf_session, xf_csrf speichern

Code:
GET /posts/<id>/edit?_xfToken=<token>&_xfResponseType=json

Aus dem JSON html.content den Inhalt der Textarea message_html auslesen.

Damit wäre der erste Teil (beschaffen eines Beitragstextes) geschafft.

Diesen dann bearbeiten und ggf. per
Code:
POST /posts/<id>/edit

FormData Payload
Code:
message=
_xfToken=
_xfResponseType=json

wieder speichern.

Das war es dann auch mit dem zweiten Teil und die Aufgabe damit eigentlich erledigt.

Ist also eigentlich nicht schwierig, nur nervig.

Bliebe die Frage wie man an die Post IDs kommt -> wenn es nicht unendlich viele sind ggf. einfach von 1 bis max ID durchlaufen, ansonsten ... kreativ werden :)

Das ganze (mit Error-Checking und Blah) in Code zu gießen habe ich ehrlich gesagt nicht allzuviel Lust (da ich das selbst auch nicht brauche), aber vielleicht reicht das ja schon.

Falls nicht Bescheid geben, vielleicht finde ich dann ja Muße ;)
 
Zuletzt bearbeitet:
@otto Um die Migration müssen wir uns keine Gedanken machen. Wie gesagt, ich habe die Rechte sowieso nicht, ich habe mit der Migration nichts zu tun. Da gibt es andere Leute für, die Zuständigkeiten sind klar getrennt. Auch Addons werde ich nicht selbst installieren können, das ist völlig korrekt. Die Liste von Dingen, die ich nicht machen kann, ist relativ lang und das ist mir bewusst.

Ich rede von dieser API:
REST API - XenForo 2 Documentation
REST API endpoints (2.2)

Ich habe den Leuten klargemacht, dass das der bessere Weg ist. Das wollen die aber nicht, aus "Sicherheitsgründen". An der Stelle könnte ich mich zurücklehnen, ist nicht mehr mein Problem, aber man versucht ja hilfsbereit zu sein, unter anderem auch für meine Mod-Kollegen und mich selbst betrifft es ja auch. Einen Link zum Forum würde ich hier eher nicht posten wollen, da müsste man auch erstmal klären ob das zulässig wäre, denn da gibts auch Inhalte die nur für Erwachsene gedacht sind. Da gibts aber im Moment auch nichts zu sehen außer eine hoffnungslos alte vBulletin-Version. Das würde uns also auch gar nicht weiterbringen. Im Moment arbeiten wir mit uralten Scripten. Derjenige, der die geschrieben hat, ist schon längst nicht mehr verfügbar und außer mir hat im Team kaum jemand irgendwelche IT-Kenntnisse, geschweige denn passende IT-Kenntnisse. Unsere Serveradmins im Hintergrund haben die (vielleicht), aber die nehmen nicht Teil am alltäglichen Betrieb im Forum.

Und auch wenn du es vielleicht gar nicht realisierst, du hilfst mir schon. Ich habe nie angenommen, dass es für mein Dilemma überhaupt eine "richtige" Lösung gibt. Wir sind total auf einer Linie, deutlich mehr Rechte für mich wären wohl nötig. Selbst machen werden die Leute das aber auch nicht, wir haben da selbstredend auch noch einen gewissen Interessenskonflikt. Die wollen, dass das gemacht wird, selbst können sie es aber fachlich gar nicht implementieren. Benutzen, vielleicht, wenn es jemand vorbereitet. Und für mich und meine Mod-Kollegen gibts die notwendigen Rechte nicht. Da dreht man sich in der Tat im Kreis.

@Kirby Du hast das richtig zusammengefasst, deswegen bin ich jetzt im Moment wieder bei Gefrickel. Lust hab ich darauf nicht wirklich. Das haben wir im Moment auch schon bei vBulletin und ich habe mich insbesondere für eine API-Lösung ausgesprochen, da die effizienter skaliert und dann auch für unsere Bedürfnisse leicht anpassbar ist. Aber nun...
Diese Vorgehensweise ist in etwa das was ich mir vorgestellt habe. Die notwendigen Mod-Rechte zu bekommen sind kein Problem bzw. die haben wir ja sowieso. Ich kann das auch nachvollziehen, aber spontan in funktionierenden Code gießen könnte ich das nicht, aber ich bin immerhin in der Position mir das zu erarbeiten, im Gegensatz zu unserem restlichen Team.
Dummerweise sind es unendlich viele Posts, Kreativität wäre definitiv gefragt. Man könnte das gut in kleinere Stückchen brechen und pro Thread machen, meine Idee war ursprünglich mal mir von dem Threads-Endpoint der API alle Post IDs geben zu lassen, die zu einem Thread gehören. Das wäre so schön gewesen, denn das gleiche über die Frickel-Lösung zu machen ist natürlich ungleich fummeliger. Was würdest du empfehlen für die Implementation, cURL und Python?
 
Zurück
Oben