Pagina 1 van 2

Nieuwsbot

Geplaatst: 23 mar 2009, 21:13
door Derk
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

Re: Nieuwsbot

Geplaatst: 23 mar 2009, 21:25
door Johan
Heb je een voorbeeldje? :) Ik zal hem binnenkort wel even op een testforumpje installeren :D

Re: Nieuwsbot

Geplaatst: 23 mar 2009, 21:28
door Derk
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/

Re: Nieuwsbot

Geplaatst: 23 mar 2009, 22:24
door Paul
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.

Re: Nieuwsbot

Geplaatst: 23 mar 2009, 22:44
door Derk
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.

Re: Nieuwsbot

Geplaatst: 23 mar 2009, 23:36
door Paul
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 ;)

Re: Nieuwsbot

Geplaatst: 24 mar 2009, 00:23
door Derk
Nouja, oke, gebruik op eigen risico dus. Echter wil ik er graag bij melden dat hij bij mij altijd probleemloos heeft gewerkt :)

Re: Nieuwsbot

Geplaatst: 24 mar 2009, 07:56
door Johan
Ziet er (functie, niet scripting) goed uit :) Scripting weet ik niet :mrgreen:

Re: Nieuwsbot

Geplaatst: 28 apr 2009, 19:48
door pagi
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"/

Re: Nieuwsbot

Geplaatst: 28 apr 2009, 20:57
door Derk
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.

Re: Nieuwsbot

Geplaatst: 29 apr 2009, 06:33
door Masterbas
Toch staat er in de config iets van allow_HTML... waarom zit deze functie er dan in? Nog in ontwikkeling of...?

Re: Nieuwsbot

Geplaatst: 29 apr 2009, 11:52
door Derk
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?

Re: Nieuwsbot

Geplaatst: 29 apr 2009, 13:04
door pagi

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

Re: Nieuwsbot

Geplaatst: 08 jun 2009, 15:49
door Mitchel
Hoe moet ik dit installeren?
het liefst stapje voor stapje :oops:

Re: Nieuwsbot

Geplaatst: 08 jun 2009, 16:09
door Pascal
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?

Re: Nieuwsbot

Geplaatst: 09 jun 2009, 13:24
door Mitchel
Cronjob? wat is dat als ik vragen mag :oops:

Re: Nieuwsbot

Geplaatst: 25 jun 2009, 13:22
door Jeroen
Ik ben ook wel benieuwd hoe dat zit met die cronjob.
Hij werkt niet voordat je dat niet gedaan hebt of wel?

Re: Nieuwsbot

Geplaatst: 25 jun 2009, 14:25
door Derky
Een cronjob is gewoon een scriptje dat op een bepaalde tijd een actie uitvoert. Dus bijvoorbeeld de URL aanroepen van dit script. ;)

Re: Nieuwsbot

Geplaatst: 25 jun 2009, 15:05
door Jeroen
Kan je dan ook misschien precies beschrijven hoe we dat in dit geval doen?

Re: Nieuwsbot

Geplaatst: 25 jun 2009, 15:39
door Derky
Heb je wel de mogelijkheid om cronjobs te gebruiken van je webhost?