View difference between Paste ID: HZUUizaF and 5L1C3buW
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,&ndash;,–,&middot;,·,&raquo;,»,&laquo;,«,&Uuml;,Ü,&uuml;,ü,&Aacute;,Á,&aacute;,á,&Eacute;,$&
240
    É,&eacute;,é,&Iacute;,Í,&iacute;,í,&Oacute;,Ó,&oacute;,ó,&Ntilde;,Ñ,&ntilde;,ñ,&Uacute;,Ú,&uacute;,ú,&nbsp;,$chr(32),$&
241
    &aelig;,æ,&quot;,")
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
}