Nieuwsbot

Zelf bezig aan een modificatie? Wij kijken graag mee..
Forumregels

LEES: Algemene Voorwaarden. Denk eventueel aan tags (DEV, BETA, RC)!
phpBB3.0.x
Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Nieuwsbot

Bericht door Derk » 23 mar 2009, 21:13

Besten,

Voor Webmasterplein.net heb ik toen de eerste phpbb3 bèta uit kwam een nieuwe versie van de nieuwsbot gemaakt die ook beschikbaar was in phpbb2. Deze heb ik verder nooit weggegeven, maar dat moest ik nu maar eens openbaar maken.

Volgens mij is het concept bij degenen die het zoeken wel bekend: Hij haalt de items uit een rss feed en maakt voor ieder item een nieuw topic aan.

In tegenstelling tot normale mods hoeven er geen files van phpbb veranderd te worden, er dient alleen een .php bestandje geupload te worden naar de root van het forum om het te laten werken. Aangeraden is om het script aan te roepen met een cronjob of iets dergelijks.

De mod is hier te krijgen:
http://phpbb.vedelaar.nl/ (versie 1.5)

Installatie:
Download het zip bestandje en pak de file uit. Open de file met kladblok en bewerk de variabelen aan de bovenkant. Het meeste staat standaard goed. Pas wel even de feed url, het forum id en de user id aan. De rest van de instellingen kan je even doornemen, maar zijn vooral belangrijk als het niet naar wens werkt.
Upload de bot naar de root van je phpbb forum en draai het bestand met een cronjob. Mocht je niet willen dat anderen het script zomaar draaien kan je de naam van het bestand aanpassen.

Verder gebruik:
Heeft de bot een berichtje geplaatst die je wil verwijderen? Verwijder hem dan niet, de bot zal hem opnieuw posten. Verplaats hem naar een ontzichtbaar forum, en verwijder het bericht pas als hij niet meer in de feed staat (of laat hem staan :P ). Dit geld ook voor het bewerken van de titel van een bericht van de bot. Pas je de titel aan van een topic, dan zal de bot een nieuw topic aanmaken met de oude naam.

Doe mij een plezier en stuur me een pb'tje (of een post in dit topic) met de url van je forum als je hem gebruikt :)

Derk

Gebruikersavatar
Johan
Berichten: 2376
Lid geworden op: 05 mei 2007, 15:24
Locatie: memberlist.php

Re: Nieuwsbot

Bericht door Johan » 23 mar 2009, 21:25

Heb je een voorbeeldje? :) Ik zal hem binnenkort wel even op een testforumpje installeren :D
Voormalig Support Teamlid

Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Re: Nieuwsbot

Bericht door Derk » 23 mar 2009, 21:28

Ik hád een voorbeeld tot er meer dan 10.000 topics waren over porno...
Zal een nieuw voorbeeldje uploaden :)

Edit:
http://postbot.vedelaar.nl/

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20298
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Re: Nieuwsbot

Bericht door Paul » 23 mar 2009, 22:24

Hou er wel rekening mee wanneer je deze MOD gebruikt je grote kans op problemen krijgt mocht je later berichten willen verwijderen of aanpassen. Doordat de MOD geen gebruikt van de phpBB API is de database corrupt.

Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Re: Nieuwsbot

Bericht door Derk » 23 mar 2009, 22:44

Och, het verwijderen en bewerken binnen de database werkt anders perfect. Het forum waarop deze bot een jaartje heeft gedraaid werkt nog altijd goed.

Het maakt niet uit of de api iets in de database schrijft of iets anders, zoalang de data in de database maar correct is. In dit geval is dat het.

Je hebt inderdaad gelijk dat als er (grote) aanpassingen op de database komen het script de database mogelijk om zeep zou kunnen helpen. Echter zijn aanpassingen binnen 1 versie altijd minimaal en zal het geen problemen moeten veroorzaken. Daarbij werkt de bot niet meer correct als er iets in de databse veranderd en daar kom je snel genoeg achter.

Met andere woorden, in theorie heb je gelijk, in de praktijk zou je er wijnig van moeten merken. Ik zou me er geen zorgen om maken. Wel is het altijd verstandig backups te maken. Maar dat heeft niks met de bot te maken.

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20298
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Re: Nieuwsbot

Bericht door Paul » 23 mar 2009, 23:36

In de praktijk heeft het ook wel degelijk problemen, doordat je niet alle data update die submit_post update. Hierdoor krijg je bij het submitten van een post een corrupte DB en dus indirect een probleem wanneer je uit het forum posts gaat verwijderen. Dit kan sql fouten veroorzaken welke weer zijn te achterhalen op corrupte counters.

In jouw geval is de data zeker niet gelijk als de data die verzonden wordt door submit_post, en klopt dus uiteindelijk je gegevens set niet meer.
De kans dat het in de praktijk gebeurt is veel hoger als enkel bij een update.


Trouwens, diverse phpBB.com leden (Waaronder developers) bevestigen wat ik zei hierboven ;)

Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Re: Nieuwsbot

Bericht door Derk » 24 mar 2009, 00:23

Nouja, oke, gebruik op eigen risico dus. Echter wil ik er graag bij melden dat hij bij mij altijd probleemloos heeft gewerkt :)

Gebruikersavatar
Johan
Berichten: 2376
Lid geworden op: 05 mei 2007, 15:24
Locatie: memberlist.php

Re: Nieuwsbot

Bericht door Johan » 24 mar 2009, 07:56

Ziet er (functie, niet scripting) goed uit :) Scripting weet ik niet :mrgreen:
Voormalig Support Teamlid

pagi
Berichten: 49
Lid geworden op: 10 dec 2007, 20:34

Re: Nieuwsbot

Bericht door pagi » 28 apr 2009, 19:48

Ik gebruik hem , maar html doet het niet.

Kenwood is erin geslaagd om witte-oled-lampen te ontwikkelen die behalve licht ook geluid kunnen produceren. Van het stereo-speakerssysteem is momenteel alleen nog een prototype ontwikkeld. Ook andere toepassingen zijn denkbaar.img src="http://feeds2.feedburner.com/~r/tweaker ... zMpZHY9B9w" height="1" width="1"/

Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Re: Nieuwsbot

Bericht door Derk » 28 apr 2009, 20:57

Het lijkt er op dat je rss feed HTML bevat. Uit mijn hoofd gezegd zit er geen filter tegen html in. M.a.w. de bot werkt niet met je rss feed.

Gebruikersavatar
Masterbas
Berichten: 246
Lid geworden op: 26 apr 2008, 22:51
Locatie: Den Dungen, bij 's-Hertogenbosch
Contacteer:

Re: Nieuwsbot

Bericht door Masterbas » 29 apr 2009, 06:33

Toch staat er in de config iets van allow_HTML... waarom zit deze functie er dan in? Nog in ontwikkeling of...?
Groeten,
Masterbas

Gebruikersavatar
Derk
Berichten: 10
Lid geworden op: 04 jun 2005, 18:50

Re: Nieuwsbot

Bericht door Derk » 29 apr 2009, 11:52

Hij zou inderdaad alle html er uit moeten filteren die niet in deze array (of string) staan. Hier heb ik gewoon gebruik gemaakt van de strip_tags die binnen php beschikbaar is. Voor mij heeft dit altijd gewerkt. Hier blijkbaar niet.

Kan je de URL van je feed eens posten?

pagi
Berichten: 49
Lid geworden op: 10 dec 2007, 20:34

Re: Nieuwsbot

Bericht door pagi » 29 apr 2009, 13:04

Code: Selecteer alles

<?php
//Made by Derk Vedelaar
//Version 1.5

$config['GebruikersID']='2';         //The user id of the user which will post the news.
$config['IP_adres']='127.0.0.1';      //the ip address of the user whick will post the news (choose anything you like)
$config['ForumID']='15';               //the id of the forum the news will be posted in
$config['IcoonID']='0';               //The id of the icon in front of the topics of the news

$config['Enable_BB']='1';            //check the checkbox 'ebable bb code' in every post? (if you change this the bot won't work correct anymore)
$config['Enable_smileys']='1';         //check the checkbox "enable smileys" in ervery post?
$config['Enable_magicurl']='1';         //Same as above but for magic url
$config['Enable_onderschrift']='1';      //same as above but for signature

$config['RSS_feed']='http://feeds.feedburner.com/tweakers/mixed';               //url to the rss feed of your choice
$config['Start_bericht']='0';         //Where does the bot need to start posting? (0 is standard, choose 1 or 2 if the feed has spam on top of it)
$config['Eind bericht']='39';         //where does the bot need to stop posting from the feed? (9 is standard, choose a lower one if here aren't 10 news items in the feed)
$config['Titel_begin']='0';            //Choose the character where the topic title needs to begin with (0 is standard, choose a higher one if there is spam at the beginning of a topic title)
$config['Onderwerp_grootte']='100';      //Don't change, if you change, the bot won't work correctly anymore (this is the size of the subject field in the database)
$config['HTML_toestaan']='1';         //The html codes which are accepted in the forum and which you accept in the news items
$config['maak_utf8']=0;               //make it 1 if you have problems with óöòê or some of this characters. Don't make it 1 if you don't need to.
$config['maak_ISO-8859-1']=1;         //make it 1 if you have problems with óöòê or some of this characters. Don't make it 1 if you don't need to.
$config['Charset']='ISO-8859-1';      //The character set of the feed. ISO-8859-1 is standard.
$config['Title_nopost']=array('ADV');      //An array with topic titles (or first characters only) which won't be posted (in case the feed has spam on random locations)
$config['Charset_fix']=0;            //Fixes some problems with '". Don't make it 1 if you don't need to.

$config['Beschrijving']='description';   //How is the description field called in the feed?
$config['Titel']='title';            //How is the title field called in the feed?
$config['Link']='link';               //how is the link field called in the feed?

error_reporting(0);

if(!require_once('config.php'))
{
   exit('Kon config bestand niet laden.');
}
if(!mysql_connect($dbhost,$dbuser,$dbpasswd))
{
   exit('Kon geen connectie maken met de database server.');
}
if(!mysql_select_db($dbname ))
{
   exit('Kon de database niet vinden.');
}

$gebruikersqry = mysql_query('SELECT user_colour, username FROM '.$table_prefix.'users WHERE user_id=\''.$config['GebruikersID'].'\'') or die(mysql_error());
list($Gebruikerskleur,$Gebruikersnaam) = mysql_fetch_row($gebruikersqry);

$tijd=time();
$bbcodeuid='Derk'.rand(0,9);
$posts=0;

$xml_feed = file_get_contents($config['RSS_feed']);

if ($config['maak_ISO-8859-1'])
{
   $xml_feed=utf8_decode($xml_feed);
}
if ($config['maak_utf8'])
{
   $xml_feed=utf8_encode($xml_feed);
}

$xml_praser = xml_parser_create($config['Charset']);
xml_parser_set_option($xml_praser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($xml_praser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($xml_praser,$xml_feed,$xml_inh,$xml_tags); 
xml_parser_free($xml_praser);

for ($i=0; $i < count($xml_tags['item']); $i+=2)
{
   $eerste = $xml_tags['item'][$i] + 1;
   $tweede = $xml_tags['item'][$i + 1] - $eerste;
   $item=array_slice($xml_inh,$eerste,$tweede);
   for ($j=0; $j < count($item); $j++)
   {
      if (!isset($arr[$i/2][$item[$j]['tag']]))
      {
         $teller[$item[$j]['tag']]=1;
         if ($config['Charset_fix']==1)
         {
            $item[$j]['value']=html_entity_decode($item[$j]['value'],ENT_NOQUOTES);
         }
         $arr[$i/2][$item[$j]['tag']]=$item[$j]['value'];
      }
      else
      {
         $teller[$item[$j]['tag']]++;
         if ($config['Charset_fix']==1)
         {
            $item[$j]['value']=html_entity_decode($item[$j]['value'],ENT_NOQUOTES);
         }
         $arr[$i/2][$item[$j]['tag'].$teller[$item[$j]['tag']]]=$item[$j]['value'];
      }
   }
}

for ($i = $config['Start_bericht']; $i <= $config['Eind bericht']; $i++)
{
   foreach($config['Title_nopost'] as $val)
   {
      if ($val==substr($arr[$i][$config['Titel']],0,strlen($val)))
      {
         unset($arr[$i]);
         break;
      }
   }
}

for ($i = $config['Start_bericht']; $i <= $config['Eind bericht']; $i++)
{
   $titel = substr($arr[$i][$config['Titel']], $config['Titel_begin'], $config['Onderwerp_grootte']);
   if ($titel!='')
   {
      $titel=mysql_real_escape_string(strip_tags($titel,$config['HTML_toestaan']));
      $postsqry = mysql_query('SELECT topic_title FROM '.$table_prefix.'topics WHERE topic_title=\''.$titel.'\' AND forum_id=\''.$config['ForumID'].'\'') or die(mysql_error());
      if (mysql_num_rows($postsqry) == 0)
      {
         $bericht=mysql_real_escape_string(strip_tags($arr[$i][$config['Beschrijving']],$config['HTML_toestaan']));
         $link=mysql_real_escape_string(strip_tags($arr[$i][$config['Link']],$config['HTML_toestaan']));
         $bericht=$bericht.'<br /><br />[url='.$link.':'.$bbcodeuid.']Lees meer[/url:'.$bbcodeuid.']';
         mysql_query('INSERT INTO '.$table_prefix.'topics (forum_id, icon_id, topic_title, topic_poster, topic_time, topic_first_post_id, topic_first_poster_name, topic_first_poster_colour, topic_last_poster_id, topic_last_poster_name, topic_last_poster_colour, topic_last_post_subject, topic_last_post_time, topic_last_view_time,topic_replies,topic_replies_real)VALUES("'.$config['ForumID'].'", "'.$config['IcoonID'].'", "'.$titel.'", "'.$config['GebruikersID'].'", "'.$tijd.'", "'.$config['GebruikersID'].'", "'.$Gebruikersnaam.'", "'.$Gebruikerskleur.'", "'.$config['GebruikersID'].'", "'.$Gebruikersnaam.'", "'.$Gebruikerskleur.'", "'.$titel.'", "'.$tijd.'", "'.$tijd.'", "0", "0")') or die(mysql_error());
         $topic_id=mysql_insert_id();
         mysql_query('INSERT INTO '.$table_prefix.'posts (topic_id, forum_id, poster_id, icon_id, poster_ip, post_time, enable_bbcode, enable_smilies, enable_magic_url, enable_sig, post_username, post_subject, post_text, post_checksum, bbcode_uid, bbcode_bitfield)VALUES("'.$topic_id.'", "'.$config['ForumID'].'", "'.$config['GebruikersID'].'", "'.$config['IcoonID'].'", "'.$config['IP_adres'].'", "'.$tijd.'", "'.$config['Enable_BB'].'", "'.$config['Enable_smileys'].'", "'.$config['Enable_magicurl'].'", "'.$config['Enable_onderschrift'].'", "'.$Gebruikersnaam.'", "'.$titel.'", "'.$bericht.'", "'.md5($bericht).'", "'.$bbcodeuid.'", "EA==")') or die(mysql_error());
         $post_id=mysql_insert_id();
         mysql_query('UPDATE '.$table_prefix.'topics SET topic_first_post_id="'.$post_id.'", topic_last_post_id="'.$post_id.'" WHERE topic_id="'.$post_id.'"') or die(mysql_error());
         mysql_query('INSERT INTO '.$table_prefix.'topics_posted (user_id, topic_id, topic_posted)VALUES(\''.$config['GebruikersID'].'\', \''.$topic_id.'\', \'1\')') or die(mysql_error());
         $posts=$posts+1;
      }
   }
}

if ($posts!=0)
{
   mysql_query('UPDATE '.$table_prefix.'users SET user_posts=user_posts+'.$posts.', user_lastpost_time="'.$tijd.'", user_lastvisit="'.$tijd.'" WHERE user_id="'.$config['GebruikersID'].'"') or die(mysql_error());
   mysql_query('UPDATE '.$table_prefix.'forums SET forum_posts=forum_posts+'.$posts.', forum_topics_real=forum_topics_real+'.$posts.', forum_topics=forum_topics+'.$posts.', forum_last_post_id="'.$post_id.'", forum_last_poster_id="'.$config['GebruikersID'].'", forum_last_post_subject="'.$titel.'", forum_last_post_time="'.$tijd.'", forum_last_poster_name="'.$Gebruikersnaam.'", forum_last_poster_colour="'.$Gebruikerskleur.'" WHERE forum_id="'.$config['ForumID'].'"') or die(mysql_error());
   mysql_query('UPDATE '.$table_prefix.'config SET config_value=config_value+'.$posts.' WHERE config_name="num_posts"') or die(mysql_error());
   mysql_query('UPDATE '.$table_prefix.'config SET config_value=config_value+'.$posts.' WHERE config_name="num_topics"') or die(mysql_error());
}
?>
Mijn website : jongeren-forum.com

Mitchel
Berichten: 23
Lid geworden op: 22 mei 2009, 16:34

Re: Nieuwsbot

Bericht door Mitchel » 08 jun 2009, 15:49

Hoe moet ik dit installeren?
het liefst stapje voor stapje :oops:

Gebruikersavatar
Pascal
Berichten: 2315
Lid geworden op: 20 feb 2007, 18:55
Locatie: Nijmegen
Contacteer:

Re: Nieuwsbot

Bericht door Pascal » 08 jun 2009, 16:09

Installatie:
Download het zip bestandje en pak de file uit. Open de file met kladblok en bewerk de variabelen aan de bovenkant. Het meeste staat standaard goed. Pas wel even de feed url, het forum id en de user id aan. De rest van de instellingen kan je even doornemen, maar zijn vooral belangrijk als het niet naar wens werkt.
Upload de bot naar de root van je phpbb forum en draai het bestand met een cronjob. Mocht je niet willen dat anderen het script zomaar draaien kan je de naam van het bestand aanpassen.
Hoever ben je al? Wat lukt er niet?
Keep bleeding, keep, keep bleeding love
I keep bleeding, I keep, keep bleeding love
Keep bleeding, keep, keep bleeding love
You cut me open

Mitchel
Berichten: 23
Lid geworden op: 22 mei 2009, 16:34

Re: Nieuwsbot

Bericht door Mitchel » 09 jun 2009, 13:24

Cronjob? wat is dat als ik vragen mag :oops:

Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Re: Nieuwsbot

Bericht door Jeroen » 25 jun 2009, 13:22

Ik ben ook wel benieuwd hoe dat zit met die cronjob.
Hij werkt niet voordat je dat niet gedaan hebt of wel?
Jeroen

Gebruikersavatar
Derky
Berichten: 4466
Lid geworden op: 07 apr 2005, 16:24
Locatie: Nederland
Contacteer:

Re: Nieuwsbot

Bericht door Derky » 25 jun 2009, 14:25

Een cronjob is gewoon een scriptje dat op een bepaalde tijd een actie uitvoert. Dus bijvoorbeeld de URL aanroepen van dit script. ;)

Gebruikersavatar
Jeroen
Berichten: 3639
Lid geworden op: 10 mei 2008, 21:22

Re: Nieuwsbot

Bericht door Jeroen » 25 jun 2009, 15:05

Kan je dan ook misschien precies beschrijven hoe we dat in dit geval doen?
Jeroen

Gebruikersavatar
Derky
Berichten: 4466
Lid geworden op: 07 apr 2005, 16:24
Locatie: Nederland
Contacteer:

Re: Nieuwsbot

Bericht door Derky » 25 jun 2009, 15:39

Heb je wel de mogelijkheid om cronjobs te gebruiken van je webhost?

Plaats reactie