Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Chris

By: a guest on Sep 2nd, 2008  |  syntax: PHP  |  size: 3.38 KB  |  views: 226  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. /* NewsBot - A "really sweeeet newsletter delivering" bot for Addshore
  3.    Copyright (C) 2008  Chris Grant - http://en.wikipedia.org/wiki/User:Chris_G
  4.  
  5.    This program is free software; you can redistribute it and/or modify
  6.    it under the terms of the GNU General Public License as published by
  7.    the Free Software Foundation; either version 2 of the License, or
  8.    (at your option) any later version.
  9.  
  10.    This program is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.    GNU General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU General Public License
  16.    along with this program; if not, write to the Free Software
  17.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.    
  19.    Developers (add your self here if you worked on the code):
  20.         Chris    - [[User:Chris_G]]  - Wrote up the main code
  21.         Cobi     - [[User:Cobi]]     - Wrote wikibot.classes.php
  22.         Addshore - [[User:Addshore]] - Edited for own use
  23. */
  24.  
  25. //Includes
  26. include("wikibot.classes.php"); //Use Cobi's classes - see [[User:Cobi]] and [[User:ClueBot/Source]]
  27. include("bot.config.php"); //Includes bot username and password
  28.  
  29. //Setup the classes
  30. $wpapi  = new wikipediaapi;
  31. $wpq    = new wikipediaquery;
  32. $wpi    = new wikipediaindex;
  33.  
  34. //Config Vars for the delivery
  35. $delivery['type']  = 'links'; //cat, list, links
  36. $delivery['page']  = 'Wikipedia:WikiProject_Puerto_Rico/Participants';
  37. $delivery['text']  = "\n\r{{subst:Wikipedia:WikiProject_Puerto_Rico/Newsletter/Current}}\n\r~~~~";
  38. $delivery['sum']   = 'WikiProject Puerto Rico Newsletter Issue 1 - Summer 2008 ([[User:'.$user.'|BOT]])';
  39. $delivery['sleep'] = 10000; //Wait micro seconds (1000000 = 1s)
  40.  
  41. //Login
  42. $wpapi->login($user,$pass);
  43. echo "Now logged in\n";
  44.  
  45. //Posting Source
  46. $wpi->forcepost('User:'.$user.'/Source/Newsbot','The following post was automatically generated by [[User:'.$user.'|'.$user."]].\n\n<source lang='php'>" . file_get_contents('news.bot.php')."</source>",'Automatic source code upload');
  47. echo "Source Code Posted!\n";
  48.  
  49. if ($delivery['type'] == 'cat') {
  50.         $x = $wpapi->categorymembers('Category:'.$delivery['page'],500);
  51.         foreach ($x as $p) {
  52.                 deliver($p['title']);
  53.         }
  54. }
  55. elseif ($delivery['type'] == 'list') {
  56.         $pages = explode(chr(10), $wpq->getpage($delivery['page']));
  57.         foreach ($pages as $p) {
  58.                 deliver($p);
  59.         }
  60. }
  61. elseif ($delivery['type'] == 'links') {
  62.         preg_match_all('/\[\[(User|User_talk):.+\]\]/i',$wpq->getpage($delivery['page']),$pages);
  63.         foreach ($pages[0] as $p) {
  64.                 $temp = explode('|',$p);
  65.                 $p = preg_replace(array('/.*\[\[(User|User_talk):/i','/\]\].*/i'),'',$temp[0]);
  66.                 deliver($p);
  67.         }
  68. }
  69. else {
  70.         die('Unsupported Delivery Type Chosen *dies*');
  71. }
  72.  
  73. function deliver($page) {
  74.         //Delivers the newsletter to $page
  75.         global $wpi, $wpq, $delivery;
  76.         $page = "User_Talk:".trim($page);
  77.         if (preg_match('/#REDIRECT \[\[.+\]\]/i',$wpq->getpage($page),$new_page)) {
  78.                 $page = str_replace(array('#REDIRECT [[',']]'),'',$new_page[0]);
  79.         }
  80.         echo "Sending to $page\n";
  81.         $wpi->post($page,$wpq->getpage($page).$delivery['text'],$delivery['sum']);
  82.         usleep($delivery['sleep']);
  83. }