SHOW:
|
|
- or go back to the newest paste.
| 1 | - | ;!IMDB Movie Search Script by Ford_Lawnmower irc.Geekshed.net #Script-Help |
| 1 | + | |
| 2 | - | |
| 2 | + | |
| 3 | - | ; 2014-01-13 modification to strip codes for +c channels |
| 3 | + | |
| 4 | - | |
| 4 | + | |
| 5 | ;;;; Change %textcolor to the color you want for normal text | |
| 6 | var %textcolor $+($chr(15),$chr(3),04) | |
| 7 | ;;;; Change %linkcolor to the color/format you want for links | |
| 8 | var %linkcolor $+($chr(15),$chr(31)) | |
| 9 | ;;;; Change %ratingcolor+ to the color you want for the positive stars in the rating. | |
| 10 | var %ratingcolor+ $+($chr(15),$chr(3),04) | |
| 11 | ;;;; Change %ratingcolor- to the color you want for the negative stars in the rating. | |
| 12 | var %ratingcolor- $+($chr(15),$chr(3),14) | |
| 13 | ;;;; You can change the way this script prints out by editing | |
| 14 | ;;;; %lineone, %linetwo and %linethree below. | |
| 15 | ;;;; tags must be valid and separated by a space. | |
| 16 | ;;;; valid tags are as follows: title rating votes genres | |
| 17 | ;;;; runtime director writer language country date plot | |
| 18 | ;;;; shortplot cast link trailer reviews critics | |
| 19 | ;;;; If you want to omit a line, just change it to 0 | |
| 20 | ;;;; Use title instead of otitle if you want the title in the language related to your ip address | |
| 21 | var %lineone otitle rating votes reviews critics genres runtime director writer language country date | |
| 22 | var %linetwo shortplot | |
| 23 | var %linethree cast link trailer | |
| 24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End Setup;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
| 25 | var %sockname $+(IMDB,$network,$2,$ticks) | |
| 26 | hadd -m %sockname lineone %lineone | |
| 27 | hadd %sockname linetwo %linetwo | |
| 28 | hadd %sockname linethree %linethree | |
| 29 | sockopen %sockname www.imdb.com 80 | |
| 30 | sockmark %sockname $1-2 $+(/title/,$3,/) 0 %tagcolor %textcolor %linkcolor 0 0 %ratingcolor+ %ratingcolor- | |
| 31 | } | |
| 32 | menu Channel,Status {
| |
| 33 | .$iif($group(#IMDB) == On,$style(1)) IMDB IMDB Trigger | |
| 34 | ..$iif($group(#IMDB) == On,$style(2)) On: .enable #IMDB | |
| 35 | ..$iif($group(#IMDB) == Off,$style(2)) Off: .disable #IMDB | |
| 36 | } | |
| 37 | #IMDB on | |
| 38 | On $*:Text:/^(\+|-|!|@)IMDB.*/Si:#: {
| |
| 39 | var %action $regml(1) | |
| 40 | unset %imdstrip | |
| 41 | if c isincs $chan(#).mode && %action == @ { set %imdstrip $true }
| |
| 42 | if (%action isin +-) && ($regex($nick($chan,$nick).pnick,/(!|~|&|@|%)/)) {
| |
| 43 | if (%action == +) {
| |
| 44 | if ($istok(%IMDBChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is already running the IMDB script }
| |
| 45 | else {
| |
| 46 | .enable #IMDB | |
| 47 | Set %IMDBChanList $addtok(%IMDBChanList,$+($network,$chan),32) | |
| 48 | .msg $chan $nick has activated the IMDB script for $chan . | |
| 49 | } | |
| 50 | } | |
| 51 | else {
| |
| 52 | if (!$istok(%IMDBChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is not running the IMDB script }
| |
| 53 | else {
| |
| 54 | Set %IMDBChanList $remtok(%IMDBChanList,$+($network,$chan),1,32) | |
| 55 | .msg $chan $nick has deactivated the IMDB script for $chan . | |
| 56 | } | |
| 57 | } | |
| 58 | } | |
| 59 | elseif (!$timer($+(IMDB,$network,$nick))) && ($istok(%IMDBChanList,$+($network,$chan),32)) {
| |
| 60 | .timer $+ $+(IMDB,$network,$nick) 1 6 noop | |
| 61 | var %method $iif(%action == !,.notice $nick,$iif($regex($nick($chan,$nick).pnick,/(!|~|&|@|%|\+)/),.msg $chan,.notice $nick)) | |
| 62 | GIMDB %method $2- | |
| 63 | } | |
| 64 | } | |
| 65 | alias EIMDB { GIMDB echo -a $1- }
| |
| 66 | alias -l GIMDB {
| |
| 67 | $1-2 Searching For: $strip($3-) ............. | |
| 68 | var %sockname $+(GIMDB,$network,$2,$ticks) | |
| 69 | sockopen %sockname www.google.com 80 | |
| 70 | sockmark %sockname $1-2 $+(/search?q=,$replace($3-,$chr(32),+),+site:imdb.com&rls=en&hl=en) $3- | |
| 71 | } | |
| 72 | On *:sockopen:GIMDB*: {
| |
| 73 | if (!$sockerr) {
| |
| 74 | sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0 | |
| 75 | sockwrite -n $sockname Host: www.google.com | |
| 76 | sockwrite -n $sockname User-Agent: Opera 9.6 | |
| 77 | sockwrite -n $sockname $crlf | |
| 78 | } | |
| 79 | else { echo -st Socket Error $nopath($script) | hfree $sockname | sockclose $sockname }
| |
| 80 | } | |
| 81 | On *:sockread:GIMDB*: {
| |
| 82 | if ($sockerr) { echo -st Socket Error $nopath($script) | hfree $sockname | sockclose $sockname }
| |
| 83 | else {
| |
| 84 | sockread &GIMDB | |
| 85 | if ($bintween(&GIMDB,<cite>www.imdb.com/title/,/</cite>,1)) {
| |
| 86 | IMDB $gettok($sock($sockname).mark,1-2,32) $v1 | |
| 87 | sockclose $sockname | |
| 88 | return | |
| 89 | } | |
| 90 | elseif ($bintween(&GIMDB,Your search,</b> - did not match any documents.,1)) {
| |
| 91 | $gettok($sock($sockname).mark,1-2,32) Sorry - Cannot find $strip($gettok($sock($sockname).mark,4-,32)) | |
| 92 | sockclose $sockname | |
| 93 | return | |
| 94 | } | |
| 95 | } | |
| 96 | } | |
| 97 | On *:sockclose:GIMDB*: { $gettok($sock($sockname).mark,1-2,32) Sorry - Cannot find $strip($gettok($sock($sockname).mark,4-,32)) }
| |
| 98 | On *:sockopen:IMDB*: {
| |
| 99 | if (!$sockerr) {
| |
| 100 | sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0 | |
| 101 | sockwrite -n $sockname Host: www.imdb.com | |
| 102 | sockwrite -n $sockname User-Agent: Opera 9.6 | |
| 103 | sockwrite -n $sockname $crlf | |
| 104 | } | |
| 105 | else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
| |
| 106 | } | |
| 107 | On *:sockclose:IMDB*: hfree $sockname | |
| 108 | On *:sockread:IMDB*: {
| |
| 109 | if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
| |
| 110 | else {
| |
| 111 | var %IMDb | sockread %IMDb | |
| 112 | if ($regex(%imdb,/<title>(.*?)<\/title>/i)) hadd -m $sockname title $+($gettok($sock($sockname).mark,5,32),Title:,$chr(32),$gettok($sock($sockname).mark,6,32)) $Xchr($remove($regml(1),IMDb -)) | |
| 113 | elseif ($regex(%imdb,/'og:title'\s?content="(.*?)"\s?\/>/i)) {
| |
| 114 | hadd -m $sockname otitle $+($gettok($sock($sockname).mark,5,32),Title:,$chr(32),$gettok($sock($sockname).mark,6,32)) $Xchr($gettok($regml(1),1,45)) | |
| 115 | } | |
| 116 | elseif ($regex(%imdb,/([a-z]{6,8}:)/i)) sockmark $sockname $puttok($sock($sockname).mark,$regml(1),4,32)
| |
| 117 | elseif (class="title-extra" isin %imdb) { sockmark $sockname $puttok($sock($sockname).mark,etitle:,4,32) }
| |
| 118 | elseif (($regex(%imdb,/"(.*)"/i)) && ($gettok($sock($sockname).mark,4,32) == etitle:)) {
| |
| 119 | hadd -m $sockname otitle $+($gettok($sock($sockname).mark,5,32),Title:,$chr(32),$gettok($sock($sockname).mark,6,32)) $Xchr($gettok($regml(1),1,45)) | |
| 120 | sockmark $sockname $puttok($sock($sockname).mark,natta:,4,32) | |
| 121 | } | |
| 122 | elseif (<h2>Storyline</h2> isin %imdb) sockmark $sockname $puttok($sock($sockname).mark,plot:,4,32) | |
| 123 | elseif (<table class="cast_list"> isin %imdb) sockmark $sockname $puttok($sock($sockname).mark,cast:,4,32) | |
| 124 | elseif (Release Date: isin %imdb) sockmark $sockname $puttok($sock($sockname).mark,date:,4,32) | |
| 125 | elseif ($regex(%imdb,/itemprop="ratingCount">(.*?)<\/span>/i)) hadd -m $sockname votes $+($gettok($sock($sockname).mark,5,32),Votes:,$gettok($sock($sockname).mark,6,32)) $regml(1) | |
| 126 | elseif ($regex(shortplot,%imdb,/<meta name="description"\scontent="(.*?)"\s/>/i)) {
| |
| 127 | hadd -m $sockname shortplot $+($gettok($sock($sockname).mark,5,32),Plot:,$chr(32),$gettok($sock($sockname).mark,6,32)) $Xchr($regml(shortplot,1)) | |
| 128 | sockmark $sockname $puttok($sock($sockname).mark,0,4,32) | |
| 129 | } | |
| 130 | elseif ($regex(%imdb,/itemprop="reviewCount">(.*?)<\/span>/i)) {
| |
| 131 | if ($gettok($sock($sockname).mark,4,32) == critics:) hadd -m $sockname critics $+($gettok($sock($sockname).mark,5,32),Critics:,$gettok($sock($sockname).mark,6,32)) $regml(1) | |
| 132 | else {
| |
| 133 | hadd -m $sockname reviews $+($gettok($sock($sockname).mark,5,32),Reviews:,$gettok($sock($sockname).mark,6,32)) $regml(1) | |
| 134 | sockmark $sockname $puttok($sock($sockname).mark,critics:,4,32) | |
| 135 | } | |
| 136 | } | |
| 137 | elseif (*star-box-giga-star" iswm %imdb) { sockmark $sockname $puttok($sock($sockname).mark,votes:,4,32) }
| |
| 138 | elseif ($gettok($sock($sockname).mark,4,32) == votes: && %imdb isnum) {
| |
| 139 | hadd -m $sockname votes $+($gettok($sock($sockname).mark,5,32),Votes:,$gettok($sock($sockname).mark,6,32)) %imdb | |
| 140 | sockmark $sockname $puttok($sock($sockname).mark,nothing,4,32) | |
| 141 | } | |
| 142 | elseif ($gettok($sock($sockname).mark,4,32) == Critics:) {
| |
| 143 | if ($regex(%imdb,/>([\d\x2C]+)\sreviews<\/a>/i)) hadd -m $sockname critics $+($gettok($sock($sockname).mark,5,32),Critics:,$gettok($sock($sockname).mark,6,32)) $regml(1) | |
| 144 | } | |
| 145 | elseif ($gettok($sock($sockname).mark,4,32) == runtime:) {
| |
| 146 | if ($regex(%imdb,/<time.*>(.*?)<\/time>/i)) {
| |
| 147 | hadd -m $sockname runtime $+($gettok($sock($sockname).mark,5,32),Runtime:,$gettok($sock($sockname).mark,6,32)) $regml(1) | |
| 148 | sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 149 | tokenize 32 $sock($sockname).mark | |
| 150 | hadd -m $sockname link $+($6,$5,Link:,$chr(32),$7,http://www.imdb.com,$3) | |
| 151 | if ($hget($sockname,lineone)) put $1-2 $regsubex($v1,/([\S]+)/g,$hget($sockname,\t)) | |
| 152 | if ($hget($sockname,linetwo)) put $1-2 $regsubex($v1,/([\S]+)/g,$hget($sockname,\t)) | |
| 153 | if ($hget($sockname,linethree)) put $1-2 $regsubex($v1,/([\S]+)/g,$hget($sockname,\t)) | |
| 154 | hfree $sockname | |
| 155 | sockclose $sockname | |
| 156 | return | |
| 157 | } | |
| 158 | } | |
| 159 | elseif ($gettok($sock($sockname).mark,4,32) == genres:) {
| |
| 160 | if ($regex(%imdb,/>([^<]*)<\/a>/g)) hadd -m $sockname genres $addtok($hget($sockname,genres),$regml(1),32) | |
| 161 | elseif (</div> isin %imdb) {
| |
| 162 | hadd -m $sockname genres $+($gettok($sock($sockname).mark,5,32),Genres:,$gettok($sock($sockname).mark,6,32)) $hget($sockname,genres) | |
| 163 | sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 164 | } | |
| 165 | } | |
| 166 | elseif ($gettok($sock($sockname).mark,4,32) == director:) {
| |
| 167 | if ($regex(%imdb,/"name">(.*?)<\/span>/i)) hadd -m $sockname director $+($gettok($sock($sockname).mark,5,32),Director:,$gettok($sock($sockname).mark,6,32)) $Xchr($regml(1)) | |
| 168 | elseif (</div> isin %imdb) sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 169 | } | |
| 170 | elseif ($gettok($sock($sockname).mark,4,32) == writer:) {
| |
| 171 | if ($regex(%imdb,/"name">(.*?)<\/span>/i)) hadd -m $sockname writer $+($gettok($sock($sockname).mark,5,32),Writer:,$gettok($sock($sockname).mark,6,32)) $Xchr($regml(1)) | |
| 172 | elseif (</div> isin %imdb) sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 173 | } | |
| 174 | elseif ($gettok($sock($sockname).mark,4,32) == country:) {
| |
| 175 | if ($regex(%imdb,/>(.*?)<\/a>/)) set %IMDb.Country $+($iif(%IMDb.Country,$+($v1,$chr(44))),$Xchr($regml(1))) | |
| 176 | elseif (</div> isin %imdb) {
| |
| 177 | sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 178 | hadd -m $sockname country $+($gettok($sock($sockname).mark,5,32),Country:,$gettok($sock($sockname).mark,6,32)) %IMDb.Country | |
| 179 | unset %IMDb.Country | |
| 180 | } | |
| 181 | } | |
| 182 | elseif ($gettok($sock($sockname).mark,4,32) == language:) {
| |
| 183 | if ($regex(%imdb,/>([^<]*)<\/a>/)) set %IMDb.Language $+($iif(%IMDb.Language,$+($v1,$chr(44))),$Xchr($regml(1))) | |
| 184 | elseif (</div> isin %imdb) {
| |
| 185 | sockmark $sockname $puttok($sock($sockname).mark,$v1,4,32) | |
| 186 | hadd -m $sockname language $+($gettok($sock($sockname).mark,5,32),Language:,$gettok($sock($sockname).mark,6,32)) %IMDb.Language | |
| 187 | unset %IMDb.Language | |
| 188 | } | |
| 189 | } | |
| 190 | elseif ($gettok($sock($sockname).mark,4,32) == plot:) {
| |
| 191 | if ($regex(%imdb,/<p>(.*)/)) {
| |
| 192 | tokenize 32 $sock($sockname).mark | |
| 193 | hadd -m $sockname plot $6 $+($5,Plot:,$6) $Xchr($regml(1)) | |
| 194 | sockmark $sockname $puttok($sock($sockname).mark,0,4,32) | |
| 195 | } | |
| 196 | } | |
| 197 | elseif ($gettok($sock($sockname).mark,4,32) == cast:) {
| |
| 198 | if ($regex(%imdb,/href="\/name\/.*\/">([^<]*)<\/a>/)) set %IMDb.Cast $+($iif(%IMDb.Cast,$+($v1,$chr(44))),$Xchr($regml(1))) | |
| 199 | elseif ($regex(%imdb,/alt="(.*?)"/)) set %IMDb.Cast $addtok(%IMDb.Cast,$Xchr($regml(1)),44) | |
| 200 | elseif (</table> isin %imdb) {
| |
| 201 | sockmark $sockname $puttok($sock($sockname).mark,0,4,32) | |
| 202 | hadd -m $sockname cast $+($gettok($sock($sockname).mark,5,32),Cast:,$gettok($sock($sockname).mark,6,32)) %IMDb.Cast | |
| 203 | unset %IMDb.Cast | |
| 204 | tokenize 32 $sock($sockname).mark | |
| 205 | sockmark $sockname $deltok($sock($sockname).mark,10-,32) | |
| 206 | } | |
| 207 | } | |
| 208 | elseif ($gettok($sock($sockname).mark,4,32) == date:) {
| |
| 209 | if ($regex(%imdb,/>(.*?)<\/time>/i)) {
| |
| 210 | sockmark $sockname $puttok($sock($sockname).mark,notag:,4,32) | |
| 211 | tokenize 32 $sock($sockname).mark | |
| 212 | hadd -m $sockname date $+($5,Release Date:,$chr(32),$6,$regml(1)) | |
| 213 | } | |
| 214 | } | |
| 215 | elseif (watch trailer isin %imdb && $regex(%imdb,/<a\shref="([^<]*)"\sonclick="/)) {
| |
| 216 | tokenize 32 $sock($sockname).mark | |
| 217 | hadd -m $sockname trailer $+($5,Trailer:,$chr(32),$7,http://www.imdb.com,$regml(1)) | |
| 218 | } | |
| 219 | elseif (Reviews: isin %imdb || </html> isin %imdb) {
| |
| 220 | tokenize 32 $sock($sockname).mark | |
| 221 | hadd -m $sockname link $+($6,$5,Link:,$chr(32),$7,http://www.imdb.com,$3) | |
| 222 | if ($hget($sockname,lineone)) put $1-2 $strip($regsubex($v1,/([\S]+)/g,$hget($sockname,\t))) | |
| 223 | if ($hget($sockname,linetwo)) put $1-2 $strip($regsubex($v1,/([\S]+)/g,$hget($sockname,\t))) | |
| 224 | if ($hget($sockname,linethree)) put $1-2 $strip($regsubex($v1,/([\S]+)/g,$hget($sockname,\t))) | |
| 225 | hfree $sockname | |
| 226 | sockclose $sockname | |
| 227 | return | |
| 228 | } | |
| 229 | elseif ($regex(%imdb,/star-box-giga-star">\s?(.*?)\s?<\/div>/i)) {
| |
| 230 | var %L $round($regml(1),0), %R $calc(10 - %L) | |
| 231 | tokenize 32 $sock($sockname).mark | |
| 232 | hadd -m $sockname rating $+($5,Rating:,$chr(32),$5,$chr(91),$10,$str(*,%L),$11,$str(*,%R),$5,$chr(93),$6) $regml(1) | |
| 233 | } | |
| 234 | } | |
| 235 | } | |
| 236 | alias -l AddMark { sockmark $sockname $addtok($sock($sockname).mark,$1-,32) }
| |
| 237 | alias -l Xchr {
| |
| 238 | var %return $regsubex($regsubex($1-,/&#x([A-F0-9]{1,2});/g,$chr($base($regml(\n),16,10))),/&#([0-9]{2});/g,$chr(\1))
| |
| 239 | return $replacecs(%return,–,,·,·,»,»,«,«,Ü,Ü,ü,ü,Á,Á,á,á,É,$& | |
| 240 | É,é,é,Í,Í,í,í,Ó,Ó,ó,ó,Ñ,Ñ,ñ,ñ,Ú,Ú,ú,ú, ,$chr(32),$& | |
| 241 | æ,æ,",") | |
| 242 | } | |
| 243 | alias -l Put {
| |
| 244 | if (!$regex($1,/(\.|^)(msg|notice|echo)$/Si)) || (!$3) { return }
| |
| 245 | var %tokens $0, %Tstart 4, %Dtimer 1500 | |
| 246 | if ($timer($+(Put,$2,$network)).secs) { %Dtimer = $calc($v1 * 1000) }
| |
| 247 | while ($len($($+($,%Tstart,-,%tokens),2)) > 430) {
| |
| 248 | dec %tokens | |
| 249 | if ($len($($+($,%Tstart,-,%tokens),2)) <= 430) {
| |
| 250 | .timer -m 1 %Dtimer $1-3 $($+($,%Tstart,-,%tokens),2)) | |
| 251 | inc %Dtimer 1500 | |
| 252 | %Tstart = $calc(%tokens + 1) | |
| 253 | %tokens = $0 | |
| 254 | } | |
| 255 | } | |
| 256 | if (%imdstrip) { .timer -m 1 %Dtimer $strip($1-3 $($+($,%Tstart,-,%tokens),2))) }
| |
| 257 | else $1-3 $($+($,%Tstart,-,%tokens),2)) | |
| 258 | .timer $+ $+(Put,$2,$network) -m 1 $calc(%Dtimer + 1500) noop | |
| 259 | } | |
| 260 | alias -l bintween {
| |
| 261 | var %count = 1, %mark = 0, %mark2 = 0 | |
| 262 | while (%count <= $4) {
| |
| 263 | if ($bfind($1, %mark2, $2).text) {
| |
| 264 | %mark = $calc($bfind($1, %mark2, $2).text + $len($2)) | |
| 265 | if ($bfind($1, %mark, $3).text) {
| |
| 266 | %mark2 = $bfind($1, %mark, $3).text | |
| 267 | } | |
| 268 | else { return 0 }
| |
| 269 | } | |
| 270 | else { return 0 }
| |
| 271 | inc %count | |
| 272 | } | |
| 273 | return $bvar($1, $iif(%mark > 0,%mark,1), $calc(%mark2 - %mark)).text | |
| 274 | } |