egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TVRage.com Schedule Script (Latest: 2.0)
Goto page Previous  1, 2, 3, ... 32, 33, 34  Next
 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
Tammik
Voice


Joined: 23 Jan 2006
Posts: 10

PostPosted: Wed Feb 01, 2006 3:06 am    Post subject: can't find package ncgi Reply with quote

can't find package ncgi how do get that to work iam not so good at this..
Back to top
View user's profile Send private message
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Wed Feb 01, 2006 3:54 am    Post subject: Reply with quote

Google is your friend. It is part of tcllib. Install that and you'll have it.
Back to top
View user's profile Send private message
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Thu Feb 02, 2006 12:34 am    Post subject: Reply with quote

no need of ncgi if the input is supposed to contain only alnums (letters/digits) and spaces, simply [string map] space with +
_________________
connection, sharing, dcc problems? click <here>
before asking for scripting help, read <this>
use [code] tag when posting logs, code
Back to top
View user's profile Send private message Visit poster's website
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Thu Feb 02, 2006 12:59 am    Post subject: Reply with quote

There's no guarantee of that. For example, you might search for "That 70's Show."
Back to top
View user's profile Send private message
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Thu Feb 02, 2006 3:22 am    Post subject: Reply with quote

then encode non-alnums to their %XX representation:

Code:

% set str "That 70's Show"
That 70's Show
% set str [string map {" " +} $str]
That+70's+Show
% foreach c [split $str {}] {
   if {$c == "+" || [string is alnum $c]} {append x $c} {
      binary scan $c H2 c; append x %$c
   }
}
% set x
That+70%27s+Show
% ncgi::encode "That 70's Show"
That+70%27s+Show

_________________
connection, sharing, dcc problems? click <here>
before asking for scripting help, read <this>
use [code] tag when posting logs, code
Back to top
View user's profile Send private message Visit poster's website
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Thu Feb 02, 2006 3:45 am    Post subject: Reply with quote

or use regexp for compactness:
Code:

foreach c [split $str {}] {
   if [regexp {[+\w]} $c] {append x $c} {
      binary scan $c H2 c; append x %$c
   }
}

_________________
connection, sharing, dcc problems? click <here>
before asking for scripting help, read <this>
use [code] tag when posting logs, code
Back to top
View user's profile Send private message Visit poster's website
bras
Voice


Joined: 03 Feb 2006
Posts: 7

PostPosted: Fri Feb 03, 2006 8:41 am    Post subject: Reply with quote

Hi, thank you very much for this tcl. It's really god, however I will stick with version 0.2 because of the ncgi issue for me.
Anyway, what is !schedule for ? Type it and nothing seens to happen.

Thanks!
Back to top
View user's profile Send private message
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Fri Feb 03, 2006 2:37 pm    Post subject: Reply with quote

Latest version removes ncgi requirement and further tweaks regexp's.

Code:
####################
#    tvrage.tcl    #
#   v0.4 03Feb06   #
# Coded By: GaveUp #
####################

###################
#   DESCRIPTION   #
#################################################################################
# This script pulls today's or tomorrow's schedule of new shows from tvrage.com #
# Triggers:                                                                     #
#      !today -- Display today's schedule                                       #
#     !tomorrow -- Display tomorrow's schedule                                  #
#     !showinfo <show name> -- Display detailed information for <show name>     #
#     !schedule <day> -- Display schedule for <day>                             #
#                        <day> can be one of: mon, tue, wed, thu, fri, sat, sun #
#################################################################################

####################
# Revision History #
#####################################################################
# 0.4 -- *more tweaks to regex                                      #
#        *removed ncgi requirement                                  #
# 0.3 -- *fixed last time of 7th day now displayed                  #
#        *tweaked regex to catch some programs it was missing       #
# 0.2 -- +!showinfo trigger for detailed show info and next/last ep #
#        +!schedule for 7 day schedule                              #
#        *fixed errors in various regex                             #
# 0.1 -- Initial Release                                            #
#                                                                   #
# + added   - removed   * fixed/changed                             #
#####################################################################

########
# TODO #
#################################################
# *Move hardcoded settings to variables.        #
# *Add support for changing timezones.          #
#################################################

### Begin Config ###

set tvrage(scheduleurl) "http://www.tvrage.com/quickschedule.php"
set tvrage(showinfourl) "http://www.tvrage.com/quickinfo.php"
set tvrage(scheduleTitle) "\00303New TV Shows for %%date%% ***All Times in EST/EDT***\00315"
set tvrage(c1) ""
set tvrage(c2) ""
set tvrage(c3) ""
set tvrage(c4) ""

### End Config ###

bind pub - !today pub:tvrage.com.today
bind pub - !tomorrow pub:tvrage.com.tomorrow
bind pub - !showinfo pub:tvrage.com.showinfo
bind pub - !schedule pub:tvrage.com.schedule

package require http
#package require ncgi
setudef flag tv

proc pub:tvrage.com.schedule {nick uhost hand chan text} {
   set seconds [clock seconds]
   set days(sun) 0
   set days(mon) 1
   set days(tue) 2
   set days(wed) 3
   set days(thu) 4
   set days(fri) 5
   set days(sat) 6

   if ![info exist days([string tolower $text])] return

   set currDay [clock format $seconds -format "%w"]
   
   if {$currDay > $days([string tolower $text])} {
      parse:tvrage.com $nick $uhost $hand $chan $text [expr (7 - $currDay) + $days([string tolower $text])]
   } else {
      parse:tvrage.com $nick $uhost $hand $chan $text [expr $days([string tolower $text]) - $currDay]
   }
}
      

proc pub:tvrage.com.today {nick uhost hand chan text} {
   parse:tvrage.com $nick $uhost $hand $chan $text "0"
}

proc pub:tvrage.com.tomorrow {nick uhost hand chan text} {
   parse:tvrage.com $nick $uhost $hand $chan $text "1"
}

proc parse:tvrage.com.encodeURL {str} {
   set str [string map {" " +} $str]
   foreach c [split $str {}] {
      if {$c == "+" || [string is alnum $c]} {append x $c} {
         binary scan $c H2 c; append x %$c
      }
   }

   return $x
}

proc pub:tvrage.com.showinfo {nick uhost hand chan text} {
   if ![channel get $chan tv] return
   
   #set token [http::geturl [join [list "http://www.tvrage.com/quickinfo.php?show=" [ncgi::encode [string trimleft $text]]] ""]]
   set token [http::geturl [join [list "http://www.tvrage.com/quickinfo.php?show=" [parse:tvrage.com.encodeURL [string trimleft $text]]] ""]]
   set data [http::data $token]
   http::cleanup $token
   set show(title) ""
   
   foreach line [split $data \n] {
      if {[regexp {^No Show Results Were Found For \".*\"$} $line]} {
         putserv "PRIVMSG $chan :\00303$line\00315"
         return
      }
      if {[regexp {^Show Name@(.*)$} $line -> match]} { set show(title) $match }
      if {[regexp {^Show URL@(.*)$} $line -> match]} { set show(url) $match }
      if {[regexp {^Premiered@(.*)$} $line -> match]} { set show(premiered) $match }
      if {[regexp {^Latest Episode@(\d+)x(\d+)\^([\w\'\.\, \#\&\@\:]+)\^([\w\/]+)$} $line -> season episode eptitle epDate]} {
         set show(latest) [join [list "\00303Latest Episode ::\00315 \00304$season" "x$episode - $eptitle ($epDate)\00315"] ""]
      }
      if {[regexp {^Next Episode@(\d+)x(\d+)\^([\w\'\.\, \#\@\&\:]+)\^([\w\/]+)$} $line -> season episode eptitle epDate]} {
         set show(next) [join [list "\00303Next Episode ::\00315 \00304$season" "x$episode - $eptitle ($epDate)\00315"] ""]
      }
      if {[regexp {^Country@(.*)$} $line -> match]} { set show(country) $match }
      if {[regexp {^Status@(.*)$} $line -> match]} { set show(status) $match }
      if {[regexp {^Classification@(.*)$} $line -> match]} { set show(class) $match }
   }

   if ![info exist show(next)] { set show(next) "\00303Next Episode ::\00315 \00304N/A\00315" }

   putserv "PRIVMSG $chan :\00303Title ::\00315 \00304$show(title)\00315 \00308<>\00315 \00303URL ::\00315 \00304$show(url)\00315 \00308<>\00315 \00303Premiered ::\00315 \00304$show(premiered)\00315 \00308<>\00315 $show(latest) \00308<>\00315 $show(next) \00308<>\00315 \00303Country ::\00315 \00304$show(country)\00315 \00308<>\00315 \00303Status ::\00315 \00304$show(status)\00315"
}
      
proc parse:tvrage.com {nick uhost hand chan text when} {
   if ![channel get $chan tv] return
   set token [http::geturl http://www.tvrage.com/quickschedule.php]
   set data [http::data $token]
   http::cleanup $token
   set date ""
   set systemTime [clock seconds]
   set systemTime [expr $systemTime + 3600]
   set currentTime ""
   set parsing 0
   set currentOutput ""
   set gotTime 0
   set neededDate ""
   set neof 1

   set systemTime [expr "$systemTime + ($when * 86400)"]
   set neededDate [clock format $systemTime -format "%A, %d %b %Y"]

   foreach line [split $data \n] {
      if {[regexp {^\[DAY\]([\w\, ]+)\[\/DAY\]$} $line -> date]} {
         if {$parsing == 1} {
            break;
         }
         
         if {$date == $neededDate} {
            putserv "PRIVMSG $chan :\00303New TV Shows for $date ***All Times in EST/EDT***\00315"
            set parsing 1
         }
      }

      if {$parsing} {
         if {[regexp {^\[TIME\]([\w\: ]+)\[\/TIME\]$} $line -> currentTime]} {
            if {$gotTime} {
               set currentOutput [string trim $currentOutput <>]
               putserv "PRIVMSG $chan :$currentOutput"
               set currentOutput ""
            }
         
            set currentOutput "\002$currentTime:\002 "
            set gotTime 1
         }

         regsub -all {\x92} $line {'} line
         #if !{[regexp {^\[SHOW\]([ \w\&\!]+)\^([\(\)\-\#\w \'\`\:&\!\/]+)\^([\dx]+)\^([\w\\\/\:\.\-]+)\[\/SHOW\]$} $line -> network title epnum url]} { putlog $line }
         if {[regexp {^\[SHOW\]([ \w\&\!]+)\^([\-\(\)\#\w \'\`\:&\!\/]+)\^([\dx]+)\^([\w\\\/\:\.\-]+)\[\/SHOW\]$} $line -> network title epnum url]} {
            set currentOutput [concat $currentOutput "\00304$network\00315 - \00314$title $epnum\00315 <>"]
         }
      }
   }

   if {$currentOutput != ""} {
      set currentOutput [string trim $currentOutput <>]
      putserv "PRIVMSG $chan :$currentOutput"
   }
}

putlog "TVRage.com Primetime Schedule v0.4"
Back to top
View user's profile Send private message
Tammik
Voice


Joined: 23 Jan 2006
Posts: 10

PostPosted: Fri Feb 10, 2006 4:08 pm    Post subject: Reply with quote

if i type !showinfo Arrested Development
the script wount work..

getting this error..

Tcl error [pub:tvrage.com.showinfo]: can't read "show(latest)": no such
lement in array
Back to top
View user's profile Send private message
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Fri Feb 10, 2006 4:14 pm    Post subject: Reply with quote

Are you using the latest version?
Back to top
View user's profile Send private message
Tammik
Voice


Joined: 23 Jan 2006
Posts: 10

PostPosted: Fri Feb 10, 2006 4:31 pm    Post subject: Reply with quote

latest version of your script yes
Back to top
View user's profile Send private message
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Fri Feb 10, 2006 4:49 pm    Post subject: Reply with quote

Was working here, but I had forgot I had made a few changes to the latest version. Here is the fixed script.

Code:
####################
#    tvrage.tcl    #
#   v0.5 10Feb06   #
# Coded By: GaveUp #
####################

###################
#   DESCRIPTION   #
#################################################################################
# This script pulls today's or tomorrow's schedule of new shows from tvrage.com #
# Triggers:                                                                       #
#      !today -- Display today's schedule                                         #
#     !tomorrow -- Display tomorrow's schedule                                   #
#     !showinfo <show name> -- Display detailed information for <show name>     #
#     !schedule <day> -- Display schedule for <day>                             #
#                        <day> can be one of: mon, tue, wed, thu, fri, sat, sun #
#################################################################################

####################
# Revision History #
#####################################################################
# 0.5 -- *Yet more regex tweaks                                     #
# 0.4 -- *more tweaks to regex                                      #
#        *removed ncgi requirement                                  #
# 0.3 -- *fixed last time of 7th day now displayed                  #
#        *tweaked regex to catch some programs it was missing       #
# 0.2 -- +!showinfo trigger for detailed show info and next/last ep #
#        +!schedule for 7 day schedule                              #
#        *fixed errors in various regex                             #
# 0.1 -- Initial Release                                            #
#                                                                   #
# + added   - removed   * fixed/changed                             #
#####################################################################

########
# TODO #
#################################################
# *Move hardcoded settings to variables.        #
# *Add support for changing timezones.          #
# *Fix 'too long for line' problem              #
#################################################

### Begin Config ###

set tvrage(scheduleurl) "http://www.tvrage.com/quickschedule.php"
set tvrage(showinfourl) "http://www.tvrage.com/quickinfo.php"
set tvrage(scheduleTitle) "\00303New TV Shows for %%date%% ***All Times in EST/EDT***\00315"
set tvrage(c1) ""
set tvrage(c2) ""
set tvrage(c3) ""
set tvrage(c4) ""

### End Config ###

bind pub - !today pub:tvrage.com.today
bind pub - !tomorrow pub:tvrage.com.tomorrow
bind pub - !showinfo pub:tvrage.com.showinfo
bind pub - !schedule pub:tvrage.com.schedule

package require http
package require ncgi
setudef flag tv

proc pub:tvrage.com.schedule {nick uhost hand chan text} {
   set seconds [clock seconds]
   set days(sun) 0
   set days(mon) 1
   set days(tue) 2
   set days(wed) 3
   set days(thu) 4
   set days(fri) 5
   set days(sat) 6

   if ![info exist days([string tolower $text])] return

   set currDay [clock format $seconds -format "%w"]
   
   if {$currDay > $days([string tolower $text])} {
      parse:tvrage.com $nick $uhost $hand $chan $text [expr (7 - $currDay) + $days([string tolower $text])]
   } else {
      parse:tvrage.com $nick $uhost $hand $chan $text [expr $days([string tolower $text]) - $currDay]
   }
}
      

proc pub:tvrage.com.today {nick uhost hand chan text} {
   parse:tvrage.com $nick $uhost $hand $chan $text "0"
}

proc pub:tvrage.com.tomorrow {nick uhost hand chan text} {
   parse:tvrage.com $nick $uhost $hand $chan $text "1"
}

proc parse:tvrage.com.encodeURL {str} {
   set str [string map {" " +} $str]
   foreach c [split $str {}] {
      if {$c == "+" || [string is alnum $c]} {append x $c} {
         binary scan $c H2 c; append x %$c
      }
   }

   return $x
}

proc pub:tvrage.com.showinfo {nick uhost hand chan text} {
   if ![channel get $chan tv] return
   
   set token [http::geturl [join [list "http://www.tvrage.com/quickinfo.php?show=" [ncgi::encode [string trimleft $text]]] ""]]
   #set token [http::geturl [join [list "http://www.tvrage.com/quickinfo.php?show=" [parse:tvrage.com.encodeURL [string trimleft $text]]] ""]]
   set data [http::data $token]
   http::cleanup $token
   set show(title) ""
   
   foreach line [split $data \n] {
      if {[regexp {^No Show Results Were Found For \".*\"$} $line]} {
         putserv "PRIVMSG $chan :\00303$line\00315"
         return
      }
      if {[regexp {^Show Name@(.*)$} $line -> match]} { set show(title) $match }
      if {[regexp {^Show URL@(.*)$} $line -> match]} { set show(url) $match }
      if {[regexp {^Premiered@(.*)$} $line -> match]} { set show(premiered) $match }
      if {[regexp {^Latest Episode@(\d+)x(\d+)\^([\w\'\.\, \#\&\@\:\(\)]+)\^([\w\/]+)$} $line -> season episode eptitle epDate]} {
         set show(latest) [join [list "\00303Latest Episode ::\00315 \00304$season" "x$episode - $eptitle ($epDate)\00315"] ""]
      }
      if {[regexp {^Next Episode@(\d+)x(\d+)\^([\w\'\.\, \#\@\&\:\(\)]+)\^([\w\/]+)$} $line -> season episode eptitle epDate]} {
         set show(next) [join [list "\00303Next Episode ::\00315 \00304$season" "x$episode - $eptitle ($epDate)\00315"] ""]
      }
      if {[regexp {^Country@(.*)$} $line -> match]} { set show(country) $match }
      if {[regexp {^Status@(.*)$} $line -> match]} { set show(status) $match }
      if {[regexp {^Classification@(.*)$} $line -> match]} { set show(class) $match }
   }

   if ![info exist show(next)] { set show(next) "\00303Next Episode ::\00315 \00304N/A\00315" }

   putserv "PRIVMSG $chan :\00303Title ::\00315 \00304$show(title)\00315 \00308<>\00315 \00303URL ::\00315 \00304$show(url)\00315 \00308<>\00315 \00303Premiered ::\00315 \00304$show(premiered)\00315 \00308<>\00315 $show(latest) \00308<>\00315 $show(next) \00308<>\00315 \00303Country ::\00315 \00304$show(country)\00315 \00308<>\00315 \00303Status ::\00315 \00304$show(status)\00315"
}
      
proc parse:tvrage.com {nick uhost hand chan text when} {
   if ![channel get $chan tv] return
   set token [http::geturl http://www.tvrage.com/quickschedule.php]
   set data [http::data $token]
   http::cleanup $token
   set date ""
   set systemTime [clock seconds]
   set systemTime [expr $systemTime + 3600]
   set currentTime ""
   set parsing 0
   set currentOutput ""
   set gotTime 0
   set neededDate ""
   set neof 1

   set systemTime [expr "$systemTime + ($when * 86400)"]
   set neededDate [clock format $systemTime -format "%A, %d %b %Y"]

   foreach line [split $data \n] {
      if {[regexp {^\[DAY\]([\w\, ]+)\[\/DAY\]$} $line -> date]} {
         if {$parsing == 1} {
            break;
         }
         
         if {$date == $neededDate} {
            putserv "PRIVMSG $chan :\00303New TV Shows for $date ***All Times in EST/EDT***\00315"
            set parsing 1
         }
      }

      if {$parsing} {
         if {[regexp {^\[TIME\]([\w\: ]+)\[\/TIME\]$} $line -> currentTime]} {
            if {$gotTime} {
               set currentOutput [string trim $currentOutput <>]
               putserv "PRIVMSG $chan :$currentOutput"
               putlog $currentOutput
               set currentOutput ""
            }
         
            set currentOutput "\002$currentTime:\002 "
            set gotTime 1
         }

         regsub -all {\x92} $line {'} line
         if {[regexp {^\[SHOW\]([ \w\&\!]+)\^([\-\(\)\#\w \'\`\:&\!\/]+)\^([\dx]+)\^([\w\\\/\:\.\-]+)\[\/SHOW\]$} $line -> network title epnum url]} {
            set currentOutput [concat $currentOutput "\00304$network\00315 - \00314$title $epnum\00315 <>"]
         }
      }
   }

   if {$currentOutput != ""} {
      set currentOutput [string trim $currentOutput <>]
      putserv "PRIVMSG $chan :$currentOutput"
   }
}

putlog "TVRage.com Primetime Schedule v0.5"
Back to top
View user's profile Send private message
Tammik
Voice


Joined: 23 Jan 2006
Posts: 10

PostPosted: Sat Feb 11, 2006 2:31 am    Post subject: Reply with quote

have you enable ncgi again.. ???
thouht you removed that ?
Back to top
View user's profile Send private message
GaveUp
Op


Joined: 19 Jan 2006
Posts: 139

PostPosted: Sat Feb 11, 2006 11:39 am    Post subject: Reply with quote

Whoops. I was doing some testing and switching back and forth on it and forgot to set it back before pasting the script over. Just search the script for 'ncgi' and comment those two lines out. On the second line (the one that starts "set token...") uncomment the line below it.
Back to top
View user's profile Send private message
Tammik
Voice


Joined: 23 Jan 2006
Posts: 10

PostPosted: Sun Feb 12, 2006 6:05 pm    Post subject: Reply with quote

found a bug..

script wont work if you type !showinfo 24


i get this then

Tcl error [pub:tvrage.com.showinfo]: can't read "show(latest)": no such element in array
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Goto page Previous  1, 2, 3, ... 32, 33, 34  Next
Page 2 of 34

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber