#!/usr/local/bin/perl5
#
# $Id: test.pl,v 1.5 2008/11/03 01:41:12 winter Exp $
#
# test.sh page# page# URL
#

use FindBin;
use lib "$FindBin::Bin";
use re 'eval';
use HTML::TableExtract;
use HTML::Entities;
use WWW::Mechanize;
use Data::Dumper;
use ARFCOM;

for ($i = $ARGV[0]; $i < $ARGV[1]; $i++) {
	$agent = WWW::Mechanize->new();
	$agent->get(decode_entities($ARGV[2]) . '&page=' . $i);

	print STDERR "Page $i\n";

	$te = HTML::TableExtract->new( attribs => { class => forumTable }, keep_html => 1, debug => 1 );
	$te->parse($agent->{content});

	# Page 1 is special and contains the original post
	if ($i > 1) {
		$post = 1;
	} else {
		$post = 0;
	}

	foreach $ts ($te->tables) {
		$_ = $ts->{children}[0]->cell(0, 0);
		next if (/forumForumBarVText/);

		# children
		#	0	member
		#	1	avatar
		#	2	?
		#	3	message
		#		0	member ID (link)
		#		1	Signature
		#		N	Post date/Edited date

		if (defined($ts->{children}[3]))
			{ $midx = 3; } else { $midx = 2; }
		if (defined($ts->{children}[$midx]->{children}[2]))
			{ $sidx = 2; } else { $sidx = 1; } 
		@r = $ts->{children}[$midx]->{children}[$sidx]->row(0);

		$poster =   ARFCOM::Post::extract_poster($ts->cell(0, 1));
		$member =   ARFCOM::Post::extract_member($ts->{children}[0]->cell(0, 0));
		$avatar =   ARFCOM::Post::extract_avatar($ts->{children}[1]->cell(0, 1));
		$mid =   ARFCOM::Post::extract_member_id($ts->{children}[$midx]->{children}[0]->row(0));
		$message = ARFCOM::Post::extract_message($ts->{children}[$midx]->row(1));
		$post_date = ARFCOM::Post::extract_date($r[0]);
		$edit_date = ARFCOM::Post::extract_date($r[1]);

		print $i . "\t" . $post . "\t" . $post_date . "\t" . $edit_date . "\t" . $poster . "\t" . $member . "\t" . $mid . "\t" . $avatar . "\t" . $message . "\n";
		$post++;
	}
}
