Seite 1 von 2
phpBB3 Forum mit Hilfe eines TCL-Scripts auslesen. Eggdrop!
Verfasst: 07.12.2008 17:38
von h32Lg
Hi, hat von euch einer die Möglichkeit gefunden ein phpbb3 Forum auszulesen um die aktuellsten, bzw den neuesten Beitrag in einem IRC-Channel zu posten?
greets h32Lg

Verfasst: 07.12.2008 17:48
von fragz
Ja sicher,
Öffne functions_posting.php und finde
Code: Alles auswählen
unset($sql_data[TOPICS_TABLE]['sql']);
}
// Submit new post
if ($post_mode == 'post' || $post_mode == 'reply')
{
darunter einfügen
Code: Alles auswählen
// Begin Post to IRC
if ($data['forum_id'] != 14)
{
$irc_msg = "Neuster Post :: http://www.howtoarchiv.net/viewtopic.php?=".$data['forum_id']."&t=".$data['topic_id']." : posted by " .$user->data['username']. " um ".date('H:i:s'). "\n";
$forumfile = fopen("./newthread.dat", "a");
fputs($forumfile, $irc_msg);
fclose($forumfile);
}
// END Post to IRC
Die 14 ist die Foren ID des Forums woraus er nix posten soll. Bei mehreren Foren durch komma trennen. Die Url natürlich auch anpassen.
Hier das tcl script
Code: Alles auswählen
utimer 2 newthreads
proc newthreads { } {
set forumfile [open /var/www/virtual/howtoarchiv.net/htdocs/newthread.dat r]
while {![eof $forumfile]} {
gets $forumfile lalala
if {$lalala != ""} { puthelp "PRIVMSG #HowToArchiv :$lalala!" }
}
close $forumfile
set forumfile [open /var/www/virtual/howtoarchiv.net/htdocs/newthread.dat w]
puts $forumfile ""
close $forumfile
utimer 2 newthreads
}
Im Root Ordner deines Forums eine newthread.dat erstellen und die rechte 777 geben. Bei
Code: Alles auswählen
if {$lalala != ""} { puthelp "PRIVMSG #HowToArchiv :$lalala!" }
deinen Channel angeben und bei
Code: Alles auswählen
set forumfile [open /var/www/virtual/howtoarchiv.net/htdocs/newthread.dat r]
natürlich den absoluten pfad zur newthread.dat angeben
Verfasst: 07.12.2008 17:52
von h32Lg
Ui, des ging aber schnell
Was, wenn jetzt das Forum nicht von mir moderiert wird, ich keine Rechte hab etwas zu ändern und einfach so auslesen möchte?
greets h32Lg

Verfasst: 07.12.2008 17:55
von fragz
Das geht nicht.
Du musst zumindest entweder direkt in eine Datei schreiben lassen oder über umwege direkt aus der Datenbank auslesen wofür du vollen Zugriff auf das Forum und den Eggi haben musst
Verfasst: 07.12.2008 17:56
von h32Lg
Also eggy ja, aber wäre es nicht möglich unter aktive Themen oder neue Beiträge dann einen vergleich zu machen ob was neues vorliegt, wenn ja dann posten?
greets h32Lg

Verfasst: 07.12.2008 18:05
von fragz
Ne, so Intelligent ist der Eggi noch nicht das er selber weiss was neue Themen oder Post sind
Verfasst: 07.12.2008 18:05
von h32Lg
Wäre es denn möglich dass der Eggy dann ein PHP-Script aufruft, welches das ganze abhandelt und in einer Datei speichert welche der Eggy dann auslesen kann, wenn sich was geändert hat ?
greets h32Lg

Verfasst: 07.12.2008 18:08
von fragz
Jep, siehe meinen ersten Post, das php script postet in eine Datei und der eggi ruft es ab.
Um es direkt über ein php Script zu machen brauchst du auch wieder Zugriff auf die Datenbank.
Wie schon gesagt, vollen Zugriff auf das Forum muss vorhanden sein
Verfasst: 07.12.2008 18:10
von h32Lg
Neeee, ich meinte ein komplett eigenes PHP Script auf meinem Server (php -a script.php) so in der Richtung aufrufbar durch den Eggdrop ...
und der prüft nur via Timer wie du schon geschrieben hast ob sich was in der .dat geändert hat.
greets h32Lg

Verfasst: 07.12.2008 18:23
von gn#36
Theoretisch möglich, schließlich kommt dein Browser ja auch an die Daten ran...
Würde ich allerdings an deiner Stelle zumindest mit dem Admin des Forums absprechen, immerhin willst du fremde Inhalte nutzen und da brauchst du zumindest ein Nutzungsrecht.
Ich habe jetzt keine Zeit da ein Skript für zu schreiben, aber das grobe Vorgehen wäre so:
- Themenseite auslesen (per [php:file] o.ä.)
- per [php:preg_match] oder [php:preg_match_all] die Thementitel und Links herausfiltern (um die HTML Formatierung immer identisch hinzukriegen muss man natürlich immer die gleichen HTML Formatierungsbefehle jeweils davor haben die kann man zur Extrahierung benutzen, schließlich ist prosilver XHTML Strict).
- Mit einer alten Liste vom letzten Besuch vergleichen
- Wenn nicht drauf, dann posten