#########################################################################
#									#
# Formel 1 Live Ticker							#
# VERSION: 2.1 beta3							#
#									#
# DIESES SCRIPT BITTE NICHT ÄNDERN !!!					#
# SCRIPT TEILE BITTE NICHT WEITER VERARBEITEN FÜR EIGENE SCRIPTE !!!	#
#									#
#									#
#									#
# Dieses Formel 1 Live Ticker Script benutzt den HTML			#
# basierten Ticker von rp-online.de um überhaupt einen			#
# Live Ticker im IRC möglich zu machen.					#
#									#
#									#
# Um eine Liste der möglichen Befehle des Scriptes zu erhalten:		#
#									#
# /msg <botnick> f1 hilfe						#
#									#
#									#
# Bitte bei der Konfiguration in dieser Datei auf die			#
# Kommentare achten!							#
#									#
#									#
#									#
# Wichtiges:								#
#									#
# Nach dem starten oder rehashen des Eggdrops wird der			#
# Ticker automatisch ausgeschaltet. Somit wird verhindert,		#
# das der Eggdrop ständig die Webseite abfragt, obwohl kein		#
# Formel 1 Rennen / Qualifying stattfindet.				#
#									#
#									#
#									#
# Falls ein Bug auftaucht, bitte eine Mail mit				#
# genauer Beschreibung an mich senden.					#
#									#
# Bei Kritik und Vorschlägen einfach Kontakt				#
# mit mir aufnehmen.							#
#									#
#									#
# Copyright © 2001 - 2006 CMF2000					#
#									#
#									#
# Kontakt:								#
#									#
# Web: http://www.hoax-irc.net						#
#									#
# Mail: CMF2000@hoax-irc.net						#
#									#
# IRC: irc.hoax-irc.net #platinum					#
#									#
#########################################################################

############## Konfiguration ##############

## Beispiel: Für einen Channel: set f1channels "#formel1"
## Beispiel: Für mehrere Channels: set f1channels "#formel1,#channel2,#channel3"
## Wichtig: Bei mehreren Channels nicht das Komma zwischen den einzelnen Channels vergessen!

set f1channels "#formel1"

## Hier wird in Sekunden eingestellt, in welchen Zeitabständen der Ticker arbeiten soll.
## Die Zeit sollte nicht zu gering gewählt werden, weil jedesmal die rp-online Webseite abgerufen wird.
## Also auch am besten den Ticker ausschalten, wenn kein Formel 1 Rennen / Qualifying stattfindet.
## Sinnvoll ist hier ein Wert zwischen 60 und 120 Sekunden.

set f1time "120"

############## AB HIER NICHTS ÄNDERN ##############

bind msg - f1 formel1:msg

set f1version "2.1 beta3"
set f1file "f1ticker.tmp"

set f1ticker "0"
file delete $f1file

proc formel1:msg { nick uhost hand txt } {
   global f1ticker f1version f1file botnick
   if { $txt == "hilfe" } {
        putserv "NOTICE $nick :Befehle (Botmaster):"
        putserv "NOTICE $nick :Ticker einschalten => /msg $botnick f1 an"
        putserv "NOTICE $nick :Ticker ausschalten => /msg $botnick f1 aus"
    	putserv "NOTICE $nick :--"
  	putserv "NOTICE $nick :Befehle (Public):"
  	putserv "NOTICE $nick :Ticker Hilfe (diese hier) => /msg $botnick f1 hilfe"
  	putserv "NOTICE $nick :Ticker Version => /msg $botnick f1 version"
   	putserv "NOTICE $nick :Ticker Status => /msg $botnick f1 status"
   }
   if { [matchattr [finduser *!$uhost] m] } {
   	if { $txt == "an" } {
   	     if { $f1ticker == "0" } {
   	     	  set f1ticker "1"
   	     	  putserv "NOTICE $nick :Formel 1 Live Ticker wird eingeschaltet."
   	     	  utimer 5 formel1:ticker:start
   	     } else {
   	     	  putserv "NOTICE $nick :Formel 1 Live Ticker ist bereits eingeschaltet."
   	     }
   	}
   	if { $txt == "aus" } {
   	     if { $f1ticker == "1" } {
   	     	  set f1ticker "0"
   	     	  file delete $f1file
   	     	  putserv "NOTICE $nick :Formel 1 Live Ticker wird ausgeschaltet."
   	     } else {
   	     	  putserv "NOTICE $nick :Formel 1 Live Ticker ist bereits ausgeschaltet."
   	     }
   	}
   }
   if { $txt == "version" } {
   	putserv "NOTICE $nick :Formel 1 Live Ticker $f1version (http://www.hoax-irc.net)"
   }
   if { $txt == "status" } {
   	if { $f1ticker == "1" } {
   	     putserv "NOTICE $nick :Formel 1 Live Ticker ist eingeschaltet."
   	} else {
   	     putserv "NOTICE $nick :Formel 1 Live Ticker ist ausgeschaltet."
   	}
   }
}

proc formel1:ticker:start { } {
   global f1time
   if { [formel1:ticker] == "ok" } {
   	utimer $f1time formel1:ticker:start
   }
}

proc formel1:ticker { } {
   global f1ticker f1version f1file f1channels
   if { $f1ticker == "1" } {
   if [catch { socket ticker.rp-online.de 80 } sock] {
      	putlog "Formel 1 Live Ticker $f1version - Keine Verbindung zum Server."
      	set f1ticker "0"
      	file delete $f1file
      	return 0
   }
   if { [file exists $f1file] } {
   	set f1dat [open $f1file]
   	set f1lastline [gets $f1dat]
   	close $f1dat
   } else {
   	set f1lastline "0"
   }
   set f1dat [open $f1file w]
   set f1write "0"
   puts $sock "GET http://ticker.rp-online.de/formel1/rpo/ticker.html HTTP/1.0"
   puts $sock "User-Agent: Formel 1 Live Ticker $f1version (Eggdrop/IRC)"
   puts $sock ""
   flush $sock
   while { [eof $sock] != 1 } {
   	   set text "[gets $sock]"
   	   regsub -all "<*/*br>" $text "" text
	   regsub -all "<*/*b>" $text "" text
   	if { [string match "*<a class='links'*" $text] == "1" } {
   	     close $f1dat
   	     close $sock
   	     return ok
   	}
   	if { $f1write == "1" } {
   	     if { $f1firstline == "1" } {
   	          set text [string range $text 3 end]
   	          puts $f1dat $text
   	          set f1firstline "0"
   	     }
   	     if { $text == $f1lastline } {
   	     	  close $f1dat
   	     	  close $sock
   	     	  return ok
   	     }
   	     if { $f1head == "1" } {
   	     	  putserv "PRIVMSG $f1channels :4Formel 1 Live Ticker:"
   	     	  set f1head "0"
   	     }
   	     if { [string length $text] >= "450" } {
   	     	  set split [string first " " $text 420]
   	     	  set text1 [string range $text 0 $split]
   	     	  set text2 [string range $text [expr $split +1] end]
   	     	  putserv "PRIVMSG $f1channels :$text1"
   	     	  putserv "PRIVMSG $f1channels :$text2"
   	     } else {
   	     	  putserv "PRIVMSG $f1channels :$text"
   	     }
   	     if { $f1lastline == "0" } {
   	          close $f1dat
	          close $sock
   	     	  return ok
   	     }
   	}
   	if { [string match "   </div>" $text] == "1" } {
	     set f1write "1"
	     set f1firstline "1"
	     set f1head "1"
   	}
   }
   }
}

putlog "Formel 1 Live Ticker $f1version wird geladen..."
