Skip to content
MSN Addons

Room listing

A TG007 community discussion started by Cleric xtx.

Discussion 1 post
Page 1 of 1
Open
Topic #1429 · 1 published post · 483 views

This will list all of the MSN chatrooms in a dialog, with the user's specified sections (eg: general computing). It wont work as is because it was designed for my original connection (which was rubbish, speedy and undisconnectablebyflooding laugh.gif). A few simple tweaks here n there and it should be fine.

The addon was made by Vawluum and modified/dialog'ed by me smile.gif

dialog rv {
 title "Room viewer"
 size -1 -1 202 112
 option dbu
 tab "Configure", 1, 1 1 199 107
 text "Room category", 3, 6 17 37 8, tab 1
 list 4, 5 26 192 50, tab 1 sort size extsel vsbar
 check "View non-msn rooms only", 5, 5 78 73 10, tab 1
 check "US rooms only", 6, 80 78 45 10, tab 1
 check "Worldwide rooms", 7, 127 78 57 10, tab 1
 tab "View rooms", 2
 list 8, 3 15 195 71, tab 2 sort size extsel hsbar vsbar
 button "Passport join", 9, 9 89 37 12, tab 2 ok
 button "Select passport", 10, 54 89 45 12, tab 2
 button "Guest join", 11, 106 89 37 12, tab 2 ok
 button "webchat join", 12, 151 89 37 12, tab 2 ok
}
on *:dialog:rv:sclick:5:{
 if (%rvt.uro == 1) { unset %rvt.uro }
 else { set %rvt.uro 1 }
}
on *:dialog:rv:sclick:6:{
 if (%rvt.us == 1) { unset %rvt.uro }
 else { set %rvt.us 1 }
}
on *:dialog:rv:sclick:7:{
 if (%rvt.ww == 1) { unset %rvt.ww }
 else { set %rvt.ww 1 }
}
on *:dialog:rv:sclick:2:{
 if (!$did($dname,4).seltext) { did -ra $dname 8 No category selected }
 else { msnrlist $did($dname,4).seltext }
}
alias crk.list {
 msnrlist $did(rv,4).seltext
 did -r rv 8
 var %rlist = 1
 while ($lines(roomlist.txt) >= %rlist) {
   did -a rv 8 $read(roomlist.txt,%rlist)
   inc %rlist 1
 }
}
on *:dialog:rv:sclick:8:{ set %jr $did(rv,8).seltext }
on *:dialog:rv:sclick:9:{ update | timerjoinr 1 10 join %jr | unset %jr }
on *:dialog:rv:sclick:10:{ dialog -m crakshark crakshark }
on *:dialog:rv:sclick:11:{ unset %ticket | unset %profile | join $did(rv,1).seltext }
on *:dialog:rv:sclick:12:{ run http://www.chat.msn.com/chatroom.msnw?rm1=$webc($gettok($did($dname,1).seltext,1,32)) }
alias webc {
 %w = $1-
 %w = $remove(%w,$chr(35))
 %w = $remove(%w,$chr(37))
 %w = $replace(%w,\b,$chr(35) $+ 20)
 return %w
}
alias rv {
 dialog -m rv rv
 did -a rv 4 GN General
 did -a rv 4 GE City Chats
 did -a rv 4 CP Computing
 did -a rv 4 EA Entertainment
 did -a rv 4 EV Events
 did -a rv 4 HE Health
 did -a rv 4 II Interests
 did -a rv 4 LF Lifestyles
 did -a rv 4 MU Music
 did -a rv 4 NW News
 did -a rv 4 PR Peers
 did -a rv 4 RL Religion
 did -a rv 4 RM Romance
 did -a rv 4 SP Sports n Recreation
 did -a rv 4 TN Teens
}

alias msnrlist {
 unset %rv.*
 set %rvt.rooms $1 | set %rvt.cat $2-
 sockopen rvooms1 chat.msn.com 80
 did -r rv 8
}
on *:sockopen:rvooms*: {
 if ($sockname == rvooms1) { sockwrite -n rvooms1 GET /find.msnw?cat= $+ %rvt.rooms HTTP/1.1 }
 else {
   set %rv.vrt2 1
   sockwrite -n $sockname GET /find.msnw?cat= $+ %rvt.rooms $+ &page= $+ $gettok(%rv.spages,1,32) HTTP/1.1
   %rv.spages = $deltok(%rv.spages,1,32)
 }
 sockwrite -n $sockname Accept: */* $+ $crlf $+ Accept-Language: en-us 
 sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
 sockwrite -n $sockname Host: chat.msn.com $+ $crlf $+ Connection: close $+ $crlf $+ $crlf
}
on *:sockread:rvooms*: {
 if ($sockerr) { echo -s Error in opening $sockname | halt }
 :sockread
 sockread -n &rv
 if ($sockbr == 0) { return }
 if (!%rv.vrt2) {
   if ($bfind(&rv,1,List chat rooms created on: the) != 0) {
     var %rv.uw = $bfind(&rv,1,List chat rooms created on: the)
     var %rv.uwl = $bvar(&rv,%rv.uw,$bvar(&rv,0)).text
     set %rv.wwl $mid(%rv.uwl,$calc($pos(%rv.uwl,=,6) + 1),$calc($calc($pos(%rv.uwl,>,3) - 1) - $calc($pos(%rv.uwl,=,6) + 1)))
 } }
 if (($bfind(&rv,1,$+($chr(9),<,/,TD,>)) != 0) && (%rv.channext == 1)) {
   set %rv.chatl $bfind(&rv,1,$+($chr(9),<,/,TD,>))
   set %rv.nextpage 1
   goto mochans
 }
 if ($bfind(&rv,1,<a href="/chatroom.msnw?) == 0) { 
   if ($bvar(&rv,0) > 850) { goto sockread }
   set %rv.r $mid($bvar(&rv,1,$bvar(&rv,0)).text,1,160)
 }
 if (!%rv.vrt2) {
   if ((*href*find $+ $chr(46) $+ msnw $+ $chr(63) $+ cat*page* iswm %rv.r) && (Next !isin %rv.r)) { 
     set %rv.pagenext 1
     goto sockread
   } 
   if ((%rv.pagenext == 1) && ($gettok(%rv.r,1,32) isnum)) { 
     set %rv.pagenext 0
     set %rv.spages %rv.spages $gettok(%rv.r,1,32)
     goto sockread
   } 
 }
 if ((%rv.wwl) && (%rv.spages)) {
   if (%rvt.us) {
     if ($mid($sockname,7,2) >= %rv.wwl) {
       sockclose $sockname
       unset %rv.spages
       mnextpage
       return
   } }
   if (%rvt.ww) {
     if ($mid($sockname,7,2) < %rv.wwl) {
       sockclose $sockname
       mnextpage
       return
   } }
 }
 if ($bfind(&rv,1,<a href="/chatroom.msnw?) != 0) { 
   set %rv.chatl $bfind(&rv,1,<a href="/chatroom.msnw?) 
 }
 if (*img src*users.gif*Room*Topic*Language* iswm $bvar(&rv,1,%rv.chatl).text) { 
   var %vru, %vur = $regsub($bvar(&rv,1,%rv.chatl).text,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%vru), %vru = $remove(%vru, )
   set %rv.susers1 $gettok(%vru,2,32)
   set %rv.channext 1
   goto sockread
 }
 :mochans
 if (!%rv.channext) { goto sockread }
 if (%rvt.uro) { 
   if ($bfind(&rv,1,chat room created by MSN) != 0) { goto sockread } 
 }
 set %rv.schan $mid($bvar(&rv,1,%rv.chatl).text,6,$calc($pos($bvar(&rv,1,%rv.chatl).text,<,1) - 10))
 set %rv.susers %rv.susers1
 set %rv.susers1 $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,12) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,13) - $pos($bvar(&rv,1,%rv.chatl).text,>,12) - 1)),</td)
 set %rv.stopic $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,6) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,7) - $pos($bvar(&rv,1,%rv.chatl).text,>,6) - 1)),</td)
 set %rv.slang $mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,8) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,<,9) - $pos($bvar(&rv,1,%rv.chatl).text,>,8) - 1))
 if (%rv.slang != English) { 
   if (%rv.nextpage == 1) { goto hmm }
   goto sockread 
 }
 did -a rv 8 $chr(37) $+ $chr(35) $+ $replace(%rv.schan,$chr(32),\b,$chr(44),\c)
 :hmm
 if (%rv.nextpage == 1) {
   sockclose $sockname
   mnextpage
   return
 }
 goto sockread
}
on *:sockclose:rvooms*: { echo -s $sockname closed | sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 }
alias mnextpage {
 if (%rv.spages) { 
   unset %rv.r
   set %rv.nextpage 0
   set %rv.channext 0
   sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 
 }
 else { 
   unset %rv.*
   halt 
} }
menu * {
 -
 View msnchat roomlist:/rv
 -
}

The original coding is below, which displays all of the chatrooms in a specified category into a window. This doesn't have the join option.

[script]
n0=alias msnrlist {
n1=  unset %rv.*
n2=  set %rvt.rooms $1 | set %rvt.cat $2-
n3=  window -lkw @Msn_
n4=  titlebar @Msn_ - Loading the $iif(%rvt.us,United States) $iif(%rvt.ww,Worldwide) %rvt.cat Room List...
n5=  sockopen rvooms1 chat.msn.com 80
n6=}
n7=on *:sockopen:rvooms*: {
n8=  if ($sockname == rvooms1) { sockwrite -n rvooms1 GET /find.msnw?cat= $+ %rvt.rooms HTTP/1.1 }
n9=  else {
n10=    set %rv.vrt2 1
n11=    sockwrite -n $sockname GET /find.msnw?cat= $+ %rvt.rooms $+ &page= $+ $gettok(%rv.spages,1,32) HTTP/1.1
n12=    %rv.spages = $deltok(%rv.spages,1,32)
n13=  }
n14=  sockwrite -n $sockname Accept: */* $+ $crlf $+ Accept-Language: en-us 
n15=  sockwrite -n $sockname User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
n16=  sockwrite -n $sockname Host: chat.msn.com $+ $crlf $+ Connection: close $+ $crlf $+ $crlf
n17=}
n18=on *:sockread:rvooms*: {
n19=  if ($sockerr) { echos Error in opening $sockname | halt }
n20=  :sockread
n21=  sockread -n &rv
n22=  if ($sockbr == 0) { return }
n23=  if (!%rv.vrt2) {
n24=    if ($bfind(&rv,1,List chat rooms created on: the) != 0) {
n25=      var %rv.uw = $bfind(&rv,1,List chat rooms created on: the)
n26=      var %rv.uwl = $bvar(&rv,%rv.uw,$bvar(&rv,0)).text
n27=      set %rv.wwl $mid(%rv.uwl,$calc($pos(%rv.uwl,=,6) + 1),$calc($calc($pos(%rv.uwl,>,3) - 1) - $calc($pos(%rv.uwl,=,6) + 1)))
n28=  } }
n29=  if (($bfind(&rv,1,$+($chr(9),<,/,TD,>)) != 0) && (%rv.channext == 1)) {
n30=    set %rv.chatl $bfind(&rv,1,$+($chr(9),<,/,TD,>))
n31=    set %rv.nextpage 1
n32=    goto mochans
n33=  }
n34=  if ($bfind(&rv,1,<a href="/chatroom.msnw?) == 0) { 
n35=    if ($bvar(&rv,0) > 850) { goto sockread }
n36=    set %rv.r $mid($bvar(&rv,1,$bvar(&rv,0)).text,1,160)
n37=  }
n38=  if (!%rv.vrt2) {
n39=    if ((*href*find $+ $chr(46) $+ msnw $+ $chr(63) $+ cat*page* iswm %rv.r) && (Next !isin %rv.r)) { 
n40=      set %rv.pagenext 1
n41=      goto sockread
n42=    } 
n43=    if ((%rv.pagenext == 1) && ($gettok(%rv.r,1,32) isnum)) { 
n44=      set %rv.pagenext 0
n45=      set %rv.spages %rv.spages $gettok(%rv.r,1,32)
n46=      goto sockread
n47=    } 
n48=   ;if (%rv.wwl) { set %rv.spages $gettok(%rv.spages,1- $+ $calc($findtok(%rv.spages,%rv.wwl,1,32) - 1),32) } 
n49=  }
n50=  if ((%rv.wwl) && (%rv.spages)) {
n51=    if (%rvt.us) {
n52=      if ($mid($sockname,7,2) >= %rv.wwl) {
n53=        sockclose $sockname
n54=        unset %rv.spages
n55=        mnextpage
n56=        return
n57=    } }
n58=    if (%rvt.ww) {
n59=      if ($mid($sockname,7,2) < %rv.wwl) {
n60=        sockclose $sockname
n61=        mnextpage
n62=        return
n63=    } }
n64=  }
n65=  if ($bfind(&rv,1,<a href="/chatroom.msnw?) != 0) { 
n66=    set %rv.chatl $bfind(&rv,1,<a href="/chatroom.msnw?) 
n67=  }
n68=  if (*img src*users.gif*Room*Topic*Language* iswm $bvar(&rv,1,%rv.chatl).text) { 
n69=    var %vru, %vur = $regsub($bvar(&rv,1,%rv.chatl).text,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%vru), %vru = $remove(%vru, )
n70=    set %rv.susers1 $gettok(%vru,2,32)
n71=    set %rv.channext 1
n72=    goto sockread
n73=  }
n74=  :mochans
n75=  if (!%rv.channext) { goto sockread }
n76=  if (%rvt.uro) { 
n77=    if ($bfind(&rv,1,chat room created by MSN) != 0) { goto sockread } 
n78=  }
n79=  set %rv.schan $mid($bvar(&rv,1,%rv.chatl).text,6,$calc($pos($bvar(&rv,1,%rv.chatl).text,<,1) - 10))
n80=  set %rv.susers %rv.susers1
n81=  set %rv.susers1 $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,12) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,13) - $pos($bvar(&rv,1,%rv.chatl).text,>,12) - 1)),</td)
n82=  set %rv.stopic $remove($mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,6) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,>,7) - $pos($bvar(&rv,1,%rv.chatl).text,>,6) - 1)),</td)
n83=  set %rv.slang $mid($bvar(&rv,1,%rv.chatl).text,$calc($pos($bvar(&rv,1,%rv.chatl).text,>,8) + 1),$calc($pos($bvar(&rv,1,%rv.chatl).text,<,9) - $pos($bvar(&rv,1,%rv.chatl).text,>,8) - 1))
n84=  if (%rv.slang != English) { 
n85=    if (%rv.nextpage == 1) { goto hmm }
n86=    goto sockread 
n87=  }
n88=  aline @Msn_ $chr(37) $+ $chr(35) $+ $replace(%rv.schan,$chr(32),\b,$chr(44),\c) $str($chr(160),7) ( $+ %rv.susers $+ )- $+ $chr(91) $iif(%rv.stopic,%rv.stopic,$chr(45)) $chr(93) 
n89=  :hmm
n90=  if (%rv.nextpage == 1) {
n91=    sockclose $sockname
n92=    mnextpage
n93=    return
n94=  }
n95=  goto sockread
n96=}
n97=on *:sockclose:rvooms*: { echos $sockname closed | sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 }
n98=alias mnextpage {
n99=  if (%rv.spages) { 
n100=    unset %rv.r
n101=    set %rv.nextpage 0
n102=    set %rv.channext 0
n103=    titlebar @Msn_ - Loading the $iif(%rvt.us,United States) $iif(%rvt.ww,Worldwide) %rvt.cat Room List Page $gettok(%rv.spages,1,32) of $gettok(%rv.spages,$numtok(%rv.spages,32),32) $+ ...
n104=    .timer 1 1 sockopen rvooms $+ $gettok(%rv.spages,1,32) chat.msn.com 80 
n105=  }
n106=  else { 
n107=    unset %rv.*
n108=    titlebar @Msn_ - %rvt.cat Room List Loaded $iif(%rvt.us,- (United States)) $iif(%rvt.ww,- (Worldwide)) 
n109=    window -b @Msn_
n110=    halt 
n111=} }
n112=menu @Msn_ {
n113=  Copy roomname: clipboard $gettok($sline(@Msn_,1),1,32) | echos Copied $gettok($sline(@Msn_,1),1,32) to clipboard
n114=  Reload: dline @Msn_ 1- $+ $line(@Msn_,0,0) | msnrlist %rvt.rooms %rvt.cat
n115=  Stop Loading: {
n116=    sockclose rvooms*
n117=    titlebar @Msn_ - %rvt.cat Channel List Loaded
n118=    window -b @Msn_
n119=  }
n120=  -
n121=  Close: window -c @Msn_
n122=}
n123=on 1:close:@Msn_: { sockclose rvooms* | unset %rv.* %rvt.rooms %rvt.cat }
n124=menu status {
n125=  View Msn Chan List
n126=  .Options
n127=  ..Show
n128=  ...$iif(%rvt.us,-) US only: set %rvt.us 1 | unset %rvt.ww | echos Room List will only show US chatrooms
n129=  ...$iif(%rvt.ww,-) WorldWide only: set %rvt.ww 1 | unset %rvt.us | echos Room list will only show WorldWide chatrooms
n130=  ...$iif(!%rvt.us && !%rvt.ww,-) Both: unset %rvt.us %rvt.ww | echos Room list will show US and WorldWide chatrooms
n131=  ..Rooms
n132=  ...$iif(%rvt.uro,-) User rooms only: set %rvt.uro 1 | echos Room list will only show User created chatrooms
n133=  ...$iif(!%rvt.uro,-) User and Msn rooms: unset %rvt.uro | echos Room list will show MSN and User created chatrooms
n134=  .General: msnrlist GN General
n135=  .City Chats: msnrlist GE City Chats
n136=  .Computing: msnrlist CP Computing
n137=  .Entertainment: msnrlist EA Entertainment
n138=  .Events: msnrlist EV Events
n139=  .Health: msnrlist HE Health
n140=  .Interests: msnrlist II Interests
n141=  .Lifestyles: msnrlist LF Lifestyles
n142=  .Music: msnrlist MU Music
n143=  .News: msnrlist NW News
n144=  .Peers: msnrlist PR Peers
n145=  .Religion: msnrlist RL Religion
n146=  .Romance: msnrlist RM Romance
n147=  .Sports n Recreation: msnrlist SP Sports n Recreation
n148=  .Teens: msnrlist TN Teens
n149=}