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 

imdb.tcl (by B0unTy) gives error message since today.

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
h44i
Voice


Joined: 28 Feb 2006
Posts: 12

PostPosted: Sat Mar 04, 2006 9:54 am    Post subject: imdb.tcl (by B0unTy) gives error message since today. Reply with quote

Hi!

I've been using this script for a few weeks and since today, I get this error when searching for a movie:

[15:11] Tcl error [imdb_proc]: can't read "location": no such variable

I did not change anything, did IMDb change something maybe? How to solve?



Code:
############################################################
##     This iMDB.tcl requires Eggdrop1.6.0 or higher      ##
##                  (c) 2003 by B0unTy                    ##
############################################################
##                                                        ##
## INSTALL:                                               ##
## ========                                               ##
##   1- Copy iMDB.tcl in your dir scripts/                ##
##   2- Add iMDB.tcl in your eggdrop.conf:                ##
##        source scripts/imdb.tcl                         ##
##                                                        ##
##   For each channel you want users to use !imdb cmd     ##
##   Just type in partyline: .chanset #channel +imdb      ##
##                                                        ##
############################################################
# COOKIES ARE :
# =============
# TITLE       = %title   |   BOLD      = %bold
# URL         = %url      |   UNDERLINE   = %uline
# DIRECTOR      = %name      |   COLORS      = %color#,#
# GENRE       = %genre   |   NEW LINE   = \n
# SYNOPSIS       = %plot      |-----------------------------
# RATING       = %rating   |   !! to reset color code !!
# VOTES       = %votes   |   !! use %color w/o args !!
# RUNTIME       = %time      |
# BUDGET       = %budget   |
# SCREENS       = %screens   |
# TAGLINE      = %tagline   |
# MPAA         = %mpaa      |
# COUNTRY      = %country   |
# LANGUAGE      = %language   |
# SOUND MIX      = %soundmix   |
# TOP 250      = %top250   |
#
# RANDOMIZING OUTPUT :
# ====================
# Example:
#  set random(IMDBIRC-0)       "IMDB info for %bold%title%bold Directed by %name"
#  set random(IMDBIRC-1)       "IMDB info for %title Directed by %bold%name%bold"
#  set random(IMDBIRC-2)       "IMDB info for %title Directed by %name"
# TYPE --------^   ^
#       ID --------^
#
#  set announce(IMDBIRC) "random 3"
# TYPE ---------^        ^    ^
#       RANDOM ----------^    ^
#           # OF IDS ---------^
#
# example random announces:
# set announce(IMDBIRC) "random 3"
# set random(IMDBIRC-0) "IMDB info for %bold%title%bold Directed by %name -> rated %uline%rating%uline (%votes votes) - genre: %genre - runtime: %time mins >> URL: %uline%url%uline >> Budget: %budget >> Screens: (USA) %screens"
# set random(IMDBIRC-1) "TITLE: %bold%title%bold - DIRECTOR: %name - RATE: %rating by %votes users - GENRE: %genre - RUNTIME: %time mins - URL: %url - BUDGET: %budget - SCREENS: (USA) %screens"
# set random(IMDBIRC-2) "%bold%title%bold - %url\n%boldDirected by:%bold %name\n%boldGenre:%bold %genre\n%boldTagline:%bold %tagline\n%boldSynopsis:%bold %plot\n%boldRating:%bold %rating (%votes votes) top 250:%bold%top250%bold\n%boldMPAA:%bold %mpaa\n%boldRuntime:%bold %time mins.\n%boldCountry:%bold %country\n%boldLanguage:%bold %language\n%boldSound Mix:%bold %soundmix\n%boldBudget:%bold %budget \n%boldOpening Weekend:%bold (USA) %screens"

# example normal announce:
set announce(IMDBIRC) "%bold%title%bold - %url\n%boldGenre:%bold %genre\n%boldTagline:%bold %tagline\n%boldRating:%bold %rating (%votes votes) top 250:%bold%top250%bold\n%boldRuntime:%bold %time mins."

# for a channel !imdb request
# set to 1 = all results will be sent publicly to the channel
# set to 0 = all results will be sent as private notice
set pub_or_not 1

# use or not the imdb debugger (1=enable debug  0=disable debug)
set IMDB_DEBUG 0

# set IMDB_ALTERNATIVE 0 = use the internal tcl http 2.3 package
# set IMDB_ALTERNATIVE 1 = use the external curl 6.0+
set IMDB_ALTERNATIVE 0

# set here the location path where find curl 6.0+
set binary(CURL) ""

#################################################################
# DO NOT MODIFY BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING!  #
#################################################################
if { $IMDB_ALTERNATIVE == 0 } { package require http 2.3 }
setudef flag imdb

bind pub -|- !imdb imdb_proc
bind join - * imdb:join:message

proc imdb:join:message {nick uhost hand chan} {
  global imdb
  set permission_result [channel_check $chan]

  if { $permission_result == 0 } { return }
 
  if {[isbotnick $nick] || [matchattr $hand bo]} {return}

  set joinmsg "Type \002!imdb\002 for an Internet Movie Database (IMDB) Search."

  notice $nick $joinmsg
}

proc notice {who what} {
   putquick "NOTICE $who :$what"
}

proc htmlcodes {tempfile} {
   set mapfile [string map {\" ' & & [ ( \\ / ] ) \{ ( \} ) £ £ ¨ ¨ © © « « ­ ­ ® ®} $tempfile]
   set mapfile [string map {´ ´ · · ¹ ¹ » » ¼ ¼ ½ ½ ¾ ¾ À À Á Á Â Â } $mapfile]
   set mapfile [string map {Ã Ã Ä Ä Å Å Æ Æ Ç Ç È È É É Ê Ê Ë Ë Ì Ì Í Í Î Î Ï Ï Ð Ð Ñ Ñ Ò Ò Ó Ó Ô Ô Õ Õ Ö Ö } $mapfile]
   set mapfile [string map {× × Ø Ø Ù Ù Ú Ú Û Û Ü Ü Ý Ý Þ Þ ß ß à à á á â â ã ã ä ä å å æ æ ç ç è è é é ê ê } $mapfile]
   set mapfile [string map {ë ë ì ì í í î î ï ï ð ð ñ ñ ò ò ó ó ô ô õ õ ö ö ÷ ÷ ø ø ù ù ú ú û û ü ü ý ý þ þ } $mapfile]
   return $mapfile
}

proc channel_check { chan } {
   foreach setting [channel info $chan] {
      if {[regexp -- {^[\+-]} $setting]} {
         if {![string compare "+imdb" $setting]} {
            set permission 1
            break
         } else {
            set permission 0
         }
      }
   }
   return $permission
}

proc replacevar {strin what withwhat} {
   set output $strin
   set replacement $withwhat
   set cutpos 0
   while { [string first $what $output] != -1 } {
      set cutstart [expr [string first $what $output] - 1]
      set cutstop  [expr $cutstart + [string length $what] + 1]
      set output [string range $output 0 $cutstart]$replacement[string range $output $cutstop end]
   }
   return $output
}

proc imdb_proc { nick uhost handle chan arg } {
   global IMDB_DEBUG pub_or_not announce random binary IMDB_ALTERNATIVE
   set arg [string map {\\ \\\\ \" \\\" \' \\\' \{ \\\{ \} \\\} \[ \\\[ \] \\\] \( \\\( \) \\\)} $arg]
   # channel_check permission
   set permission_result [channel_check $chan]
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG permission_result == $permission_result" }
   if { $permission_result == 0 } { return }
   # public or private
   if {$pub_or_not == 1 } { set toput "PRIVMSG $chan" } else { set toput "NOTICE $nick" }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG toput_result == $toput" }
   # if no arg passed, show help
   if {$arg == ""} {
      if { $IMDB_ALTERNATIVE == 0 } { set using "Http 2.3+" } else { set using "Curl 6.0+" }
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG no arg passed, show help" }
      putquick "$toput :IMDb info script \002v2.3.4\002 by B0unTy using \002$using\002"
      putquick "$toput :\002Syntax: !imdb <movie title>\002  example: !imdb Beautiful Mind"
      return
   }
   # initial search
   set imdburl "http://www.imdb.com"
   set imdbsearchurl "http://akas.imdb.com/find?tt=on;nm=on;mx=5;"
   set searchString [string map {\  %20 & %26 , %2C . %20} $arg]
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG searchString: \"$searchString\"" }
   if { $IMDB_ALTERNATIVE == 0 } {
      set page [::http::config -useragent "MSIE 6.0"]
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG ${imdbsearchurl}q=$searchString" }
      set page [::http::geturl ${imdbsearchurl}q=$searchString]
      set html [::http::data $page]
      ::http::Finish $page
   } else {
      catch { exec $binary(CURL) "${imdbsearchurl}q=$searchString" } html
   }
   #if redirect necessary, find first link and redirect
   if { [regexp {<title>IMDb name and title search</title>} $html] == 1 } {
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG redirect 1" }
      set ttcode "0000001"
      if [regexp {/title/tt[0-9]+} $html ttcode] {
         set pos [string last / $ttcode] ; incr pos
         set ttcode [string range $ttcode $pos end]
      }
      # for bogus ttcode
      if { $ttcode == "0000001" } {
         puthelp "$toput :No no no! I can't find that!"
         if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG bogus ttcode" }
         return
      }
      set newurl "$imdburl/title/$ttcode/"
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG redirect 1 = $newurl" }
      # get the page redirected to
      unset html
      if { $IMDB_ALTERNATIVE == 0 } {
         set page [::http::config -useragent "MSIE 6.0"]
         set page [::http::geturl $newurl]
         set html [::http::data $page]
         ::http::Finish $page
      } else {
         catch { exec $binary(CURL) "$newurl" } html
      }
   # if no redirect happened, then get first page on match
   } else {
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG redirect 0" }
      if { $IMDB_ALTERNATIVE == 0 } {
         upvar 0 $page oldpage
         regexp {title/tt[0-9]+/} $oldpage(body) location
      } else {
         set result [catch { exec $binary(CURL) -i "${imdbsearchurl}q=$searchString" } oldpage]
         regexp {title/tt[0-9]+/} $oldpage location
      }
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG redirect 0 Location == $location" }
      set newurl "$imdburl/$location"
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG redirect 0 = $newurl" }
      unset html
      if { $IMDB_ALTERNATIVE == 0 } {
         set page [::http::config -useragent "MSIE 6.0"]
         set page [::http::geturl $newurl]
         set html [::http::data $page]
         ::http::Finish $page
      } else {
         catch { exec $binary(CURL) "$newurl" } html
      }
   }
   # for bogus searches
   if {[string length $newurl] == 0} {
      puthelp "$toput :No no no! I can't find that!"
      if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG bogus searches" }
      return
   }
   set title "N/A" ; set name "N/A" ; set genre "N/A" ; set tagline "N/A"
   set plot "N/A" ; set rating "N/A" ; set votes "N/A" ; set mpaa "N/A"
   set runtime "N/A" ; set budget "N/A" ; set screens "N/A" ; set country "N/A"
   set language "N/A" ; set soundmix "N/A" ; set top250 "N/A"
   ## get title
   if [regexp {<title>[^<]+} $html title] {
      set pos [expr [string last > $title] + 1]
      set title [string range $title $pos end]
      set title [htmlcodes $title]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG title == $title" }
   ## get director
   if [regexp {Directed by</b><br>\n <[^>]+>[^<]+} $html name] {
      set pos [string last > $name] ; incr pos
      set name [string range $name $pos end]
      set name [htmlcodes $name]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG director == $name" }
   ## get genre
   if [regexp {<a href=./Sections/Genres[^\n]+} $html genre] {
      regsub -all {<[^\>]*>} $genre {} genre
      regsub {\(.*\)} $genre {} genre
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG genre == $genre" }
   ## get tagline
   if [regexp {<b class="ch">Tagline:</b>[^<]+} $html tagline] {
      set pos [string last > $tagline] ; incr pos
      set tagline [string range $tagline $pos end]
      set tagline [string trim $tagline]
      set tagline [htmlcodes $tagline]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG tagline == $tagline" }
   ## get plot
   if [regexp {<b class=\"ch\">Plot (Summary|Outline):</b>[\s\n]+[^<]+} $html plot] {
      set pos [string last > $plot] ; incr pos
      set plot [string range $plot $pos end]
      set plot [string trim $plot]
      set plot [htmlcodes $plot]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG plot == $plot" }
   ## get iMDb rating
   if [regexp {<b>\d.\d/10</b> \([\w\s\d,]+\)} $html rating] {
      set pos [string last ( $rating]
      set pos1 [string first { } $rating $pos]
      incr pos ; incr pos1 -1
      set votes [string range $rating $pos $pos1]
      set rating [string range $rating 3 8]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG rating == $rating | votes == $votes" }
   ## get TOP 250
   if [regexp {<a href="/top_250_films">[^\n]+} $html top250] {
      regexp {#[^<]+} $top250 top250
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG top250 == $top250" }
   ## get MPAA
   if [regexp {<b class="ch"><a href="/mpaa">[^\n]+} $html mpaa] {
      regsub -all {<[^\>]*>} $mpaa {} mpaa
      regsub {MPAA: } $mpaa {} mpaa
      set mpaa [htmlcodes $mpaa]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG mpaa == $mpaa" }
   ## get runtime
   if [regexp {<b class=\"ch\">Runtime:</b>([\n\s]+)([\w:]+)(\d+)} $html runtime] {
      regsub -all {[\n\s]+} $runtime {} runtime
      set pos [string last > $runtime] ; incr pos
      set runtime [string range $runtime $pos end]
      set pos [string last : $runtime]
      if {$pos != -1} {incr pos ; set runtime [string range $runtime $pos end]}
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG runtime == $runtime" }
   ## get country
   if [regexp {<a href=./Sections/Countries[^\n]+} $html country] {
      regsub -all {<[^\>]*>} $country {} country
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG country == $country" }
   ## get language
   if [regexp {<a href=./Sections/Languages[^\n]+} $html language] {
      regsub -all {<[^\>]*>} $language {} language
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG language == $language" }
   ## get soundmix
   if [regexp {<a href=./List.sound-mix=[^\n]+} $html soundmix] {
      regsub -all {<[^\>]*>} $soundmix {} soundmix
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG language == $language" }
   unset html
   if { $IMDB_ALTERNATIVE == 0 } {
      set page2 [::http::config -useragent "MSIE 6.0"]
      set page2 [::http::geturl ${newurl}business]
      set html [::http::data $page2]
      ::http::Finish $page2
   } else {
      catch { exec $binary(CURL) "${newurl}business" } html
   }
   ## get budget
   if [regexp {<b>Budget</b></dt>[\s\n]?<dd><[^>]+>[^<]+} $html budget] {
      set pos [string last > $budget] ; incr pos
      set budget [string range $budget $pos end]
      set budget [string map {€ € £ £ } $budget]
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG budget == $budget" }
   ## get screens
   if [regexp {<b>Opening Weekend</b></dt>[\s\n]?[^\n]+} $html opweek] {
      if [regexp {\(USA\) \([^)]+\) \([^)]+\)} $opweek screens] {
         set pos [string last ( $screens]
         set pos1 [string last ) $screens]
         incr pos ; incr pos1 -1
         set screens [string range $screens $pos $pos1]
      }
   }
   if {$IMDB_DEBUG == 1} { puthelp "NOTICE $nick :IMDB_DEBUG screens == $screens" }
   ## output results
   if { ! [string compare [lindex $announce(IMDBIRC) 0] "random"] && [string is alnum -strict [lindex $announce(IMDBIRC) 1]] == 1 } {
      set output $random(IMDBIRC\-[rand [lindex $announce(IMDBIRC) 1]])
   } else {
      set output $announce(IMDBIRC)
   }
   set output [replacevar $output "%bold" "\002"]
   set output [replacevar $output "%color" "\003"]
   set output [replacevar $output "%uline" "\037"]
   set output [replacevar $output "%title" $title]
   set output [replacevar $output "%url" $newurl]
   set output [replacevar $output "%name" $name]
   set output [replacevar $output "%genre" $genre]
   set output [replacevar $output "%tagline" $tagline]
   set output [replacevar $output "%plot" $plot]
   set output [replacevar $output "%rating" $rating]
   set output [replacevar $output "%votes" $votes]
   set output [replacevar $output "%top250" $top250]
   set output [replacevar $output "%mpaa" $mpaa]
   set output [replacevar $output "%time" $runtime]
   set output [replacevar $output "%country" $country]
   set output [replacevar $output "%language" $language]
   set output [replacevar $output "%soundmix" $soundmix]
   set output [replacevar $output "%budget" $budget]
   set output [replacevar $output "%screens" $screens]
   foreach line [split $output "\n"] {
      puthelp "$toput :$line"
   }
}

putlog "IMDB info version 2.3.4 loaded"
Back to top
View user's profile Send private message
Alchera
Revered One


Joined: 11 Aug 2003
Posts: 3344
Location: Ballarat Victoria, Australia

PostPosted: Sat Mar 04, 2006 10:07 am    Post subject: Reply with quote

Try this copy of imdb.tcl, it was patched some time ago and seems to be working OK
_________________
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
Back to top
View user's profile Send private message Visit poster's website
h44i
Voice


Joined: 28 Feb 2006
Posts: 12

PostPosted: Sat Mar 04, 2006 10:27 am    Post subject: Reply with quote

Tried it:

[15:45] Tcl error [imdb_proc]: can't read "location": no such variable

Try it yourself, do you have the problem too?
Back to top
View user's profile Send private message
Alchera
Revered One


Joined: 11 Aug 2003
Posts: 3344
Location: Ballarat Victoria, Australia

PostPosted: Sat Mar 04, 2006 11:36 am    Post subject: Reply with quote

h44i wrote:
Tried it:

[15:45] Tcl error [imdb_proc]: can't read "location": no such variable

Try it yourself, do you have the problem too?

I use it all the time.. and no errors. Try enclosing your query in quotes.
_________________
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
Back to top
View user's profile Send private message Visit poster's website
h44i
Voice


Joined: 28 Feb 2006
Posts: 12

PostPosted: Sat Mar 04, 2006 12:40 pm    Post subject: Reply with quote

Ow wait, it doesnt work with some movies. Others do work.

-edit-

And the ones who don't work, work when placing it like this indeed:

!imdb "The Exorcism Of Emily Rose"

By the way, is there a way to speed up the bot saying the lines of the script. There must be some kind of setting which says wait 2000 ms before next line or something. How can I speed it up?
Back to top
View user's profile Send private message
NTHosts
Op


Joined: 10 Oct 2005
Posts: 100
Location: UK

PostPosted: Sat Mar 04, 2006 12:58 pm    Post subject: hi Reply with quote

Yep, Replace all the puthelp with putquick

I had the same problem on another script a few days ago, works perfect now Smile
_________________
www.NT-Hosts.Net - More than just a host
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger MSN Messenger
h44i
Voice


Joined: 28 Feb 2006
Posts: 12

PostPosted: Sat Mar 04, 2006 1:03 pm    Post subject: Reply with quote

Works indeed, cool, thnx Very Happy
Back to top
View user's profile Send private message
Sirmad
Voice


Joined: 13 Mar 2006
Posts: 5

PostPosted: Mon Mar 13, 2006 10:12 am    Post subject: Reply with quote

i find the error u must make

regexp {title/tt[0-9]+/} $oldpage(meta) location

to

regexp {title/tt[0-9]+/} $oldpage(body) location
Back to top
View user's profile Send private message
NTHosts
Op


Joined: 10 Oct 2005
Posts: 100
Location: UK

PostPosted: Tue Mar 14, 2006 9:56 am    Post subject: ... Reply with quote

Not knowing the script i cant comment, but you might have more luck on this one by emailing the author direct Smile
_________________
www.NT-Hosts.Net - More than just a host
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
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