TclScripts/UrlGrab

From S23Wiki
Jump to: navigation, search

How to grab URLs from IRC channels, save them to mysql, and display them on a webpage:

urlgrab.tcl v0.7 (by RufusDE <Thomas.KoesterATrz.Uni-Osnabrueck.DE>)
already handles all the regex'ing nicely, and because no problem should ever be solved twice, we just take this one to start with.

Note: It only logs to a text file though, but we have libmysqltcl installed (on s23.org) so we can add MySql commands like this:

# added sql insert by mutante 
set db [mysqlconnect -host localhost -user <user> -password <password> -db ircurls]
mysqlexec $db "INSERT INTO urlgrab SET url="$url",chan="$lchan",nick="$nick",date=now()"
puthelp "privmsg mutante :Added to sql-db : url: $url chan: $lchan nick: $nick date: $ctime"
mysqlclose $db  

I inserted this between row 51 - 57 in the original script.
Replace <user> and <password> with your mysql user / pass.
You need to create a database "ircurls" with a table "urlgrab" or whatever you like,
and the table structure is:

Table structure for table `urlgrab`


CREATE TABLE urlgrab (
  id int(5) unsigned NOT NULL auto_increment,
  url varchar(255) default NULL,
  nick varchar(32) default NULL,
  chan varchar(64) default NULL,
  date datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Now to the output part / webinterface: You can use f.e. php (or perl) to read from mysql:
Example:

<?php

 $db = mysql_connect("localhost", "<user>", "<pass>");

 mysql_select_db("ircurls",$db);

 $result = mysql_query("SELECT * FROM urlgrab",$db);
 $urlnum=0;

 while ($myrow = mysql_fetch_row($result)) {
  
  printf("%s <a target="new" href="%s">%s</a> %s %s %s 
", 
  $myrow[0], $myrow[1], $myrow[1], $myrow[2], $myrow[3], $myrow[4],$myrow[5]);

$urlnum++;
}

echo "<tr><td colspan="5">Total URLs found: $urlnum</td></tr>";
echo "</table></body></html>";

Which, if you play with it, looks something like:
http://mutante.s23.org/urllog.php , (Which is now a broken link)
While creating all this i found out Rufus already offers mysql_urlgrab.tcl, DOH!!!
So you could as well just use that, but i didnt check it out yet ;)
Rufus is also the maintainer of libmysqltcl himself it seems, so he should know pretty good. -Mutante


Related: Eggdrop | MySQL