#!/usr/bin/perl
use DBI;
use utf8;
use strict;
use URI::Escape;
use Date::Parse;
use Date::Format;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST); 
#hulpfuncties
chdir("/home/furbie/.irssi/scripts/");
require "helpers/mysql.pl"; do "helpers/mysql.pl";
require "helpers/tools.pl"; do "helpers/tools.pl";

my ($key, $value, $urlformat, $url, $channel, $content, $line, $dbh, $time), my @content;
my ($dag, $begin, $eind, $zender, $programma);
my ($second, $minute, $hour, $day, $month, $year, $weekday) = localtime(time);
$month++; $year+=1900; #rare Perl
my @channels = ("Nederland 1", "Nederland 2", "Nederland 3", "RTL4", "RTL5", "SBS6", "RTL7", "Talpa", "BRT1", "BRT2", "BBC1", "BBC2", "EuroSport", "NET5", "TMF", "Veronica", "MTV", "Cartoon Network", "BBCW", "Discovery");

$dbh = mysqlconnect();
#elke 6 uur proberen (voor als 'ie down is), updaten als laatste DB-entry over een dag is
($time) = mysqlselect($dbh, "SELECT `begin` FROM `tv` ORDER BY `begin` DESC");
if (str2time($time->{begin})-1.2*86400 >= time)
{ $dbh->disconnect(); exit; }

$urlformat = 'http://sjeemz.nl/?zoek=%s&%s=on&%s=on';
foreach$channel(@channels)
{
    $url = sprintf($urlformat
                  ,uri_escape($channel)
                  ,uri_escape(day_of_the_week($weekday))
                  ,uri_escape(day_of_the_week(($weekday+1)%7))
                  );
    $content = download($url, undef, undef, 10);
    #argh hij's kapot
    if ($content !~ /Zoekresultaten/i)
    { last; }
    #programma's cachen
    @content = grep(/<TD NOWRAP BGCOLOR=/, split(/[\r\n]+/, $content));
    foreach$line(@content)
    {
        $line =~ s/^(<[^>]+>)+//;
        for(1..4) { $line =~ s/(<[^>]+>)+/|/; }
        $line =~ s/(<[^>]+>)+.*$//;
        $line = striphtml($line);
        ($dag, $begin, $eind, $zender, $programma) = split(/\|/, $line);
        $dag = lc $dag;
        #programma < 5 min
        if ((str2time($eind) - str2time($begin))%86400 < 300)
        { next; }
        if (str2time($begin) > str2time($eind)) #einde is na middernacht, begin niet
        { $eind = join(" ", parsedatum(dag_van_de_week((week_van_de_dag($dag)+1)%7)."\@$eind",0)); }
        else
        { $eind = join(" ", parsedatum("$dag\@$eind",0)); }
        $begin = join(" ", parsedatum("$dag\@$begin",0));
        mysqldo($dbh, sprintf('INSERT INTO tv VALUES(0, %s, %s, %s, %s)'."\n"
                             ,$dbh->quote($begin)
                             ,$dbh->quote($eind)
                             ,$dbh->quote($zender)
                             ,$dbh->quote($programma)
                             )
               );
        print "$programma gehad";
    }
    print "$channel gehad.\n";
}
$dbh->disconnect();
