Post by err0r on Jul 6, 2014 21:42:07 GMT
Simple @window roomlister for IRCwx
From what i was able to test it works.
From what i was able to test it works.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;; IRCwx Chat Network Chatroom Lister ;;;;;;;;;;
;;;;;;;;;; @Window Room Lister v 1.0 ;;;;;;;;;;
;;;;;;;;;; by err0r ;;;;;;;;;;
;;;;;;;;;; http://www.tg007.net ;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;; Instructions ;;;;;;;;;;
;;;;;;;;;; Use /rlister or /rlister <cat> ;;;;;;;;;;
;;;;;;;;;; to open window ;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;; Report any errors or suggestions ;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Menu
menu status,channel,menubar {
IRCwx Roomlister: { rlister gn }
.View Category
..City Chats: { rlister cc }
..Computing: { rlister cp }
..Entertainment: { rlister et }
..General: { rlister gn }
..Interests: { rlister in }
..Lifestyles: { rlister ls }
..News & Politics: { rlister ne }
..Peers: { rlister pr }
..Religion: { rlister rl }
..RolePlay: { rlister rp }
..Romance: { rlister rm }
..Sport & Health: { rlister sp }
..Teens: { rlister tn }
..Unlisted: { rlister un }
-
}
;;Close
on *:CLOSE:@IRCwxRoomlist: { /window -c @IRCwxRoomlistb | /window -c @IRCwxRoomlistc }
;;Aliases
alias rlister {
if (!$window(@IRCwxRoomlist)) { window -blMk -t42,50,57,70 +benstx @IRCwxRoomlist }
if (!$window(@IRCwxRoomlistb)) { window -lh @IRCwxRoomlistb }
if (!$window(@IRCwxRoomlistc)) { window -lh @IRCwxRoomlistc }
rlisterstart | rlistget $1
}
alias rlistget {
clear @IRCwxRoomlist | clear @IRCwxRoomlistb | clear @IRCwxRoomlistc
if ($1) { set %rlistroom.category $1 }
if (!%rlistroom.number) { set -e %rlistroom.number 1 | rlistclear }
if (!%rlistroom.total) { set -e %rlistroom.total 1 }
if (!%rlistroom.category) { set -e %rlistroom.category gn }
sockclose rlister | sockopen rlister www.ircwx.com 80 | rlshowcat
}
alias rlistclear { clear @IRCwxRoomlistb | clear @IRCwxRoomlistc }
alias rlshowcat { titlebar @IRCwxRoomlist $rlistcatr(%rlistroom.category) }
alias rlisterstart { clear @IRCwxRoomlist | aline @IRCwxRoomlist Roomname $chr(9) Users $chr(9) Type $chr(9) Language $chr(9) Topic | aline @IRCwxRoomlist $chr(160) }
alias rlisterror { noop $input(Unable to obtain roomlist $crlf $replace(%rlisterror,3,failure establishing socket connection,4,error resolving given hostname),uowd,Attention!) | unset %rlisterror }
alias rlistertype {
if (rmicon_srv isin $1-) { return 1 }
elseif (rmicon_user isin $1-) { return 2 }
elseif (ucr1 isin $1-) { return 3 }
else { return - }
}
;;; Socket
on *:sockopen:rlister: {
set -e %rlistroom.name 1 | set -e %rlistroom.page 2
if ($sockerr) { set %rlisterror $sockerr | sockclose $sockname | .timer.rlerror -m 1 1 rlisterror | halt }
sockwrite -n $sockname GET /roomslist.aspx?pg= $+ %rlistroom.number $+ &cat= $+ %rlistroom.category HTTP/1.1
sockwrite -n $sockname Host: www.ircwx.com
sockwrite -n $sockname $crlf
}
on *:sockread:rlister: {
if ($sockerr > 0) return | var %rlister | sockread %rlister
if ($regex(%rlistroom.name,%rlister,/(.*)<\/td><td valign=middle align=left nowrap><a href="chatui.aspx\?rm=(.*)" class="rmlist" >(.*)<\/a><\/td><td>(.*)<\/td><td style="text-align: right">(.*)<\/td><td>(.*)</td>/ig)) {
var %rmlister.icon $rlistertype($regml(%rlistroom.name,1))
var %rmlister.name $regml(%rlistroom.name,3)
var %rmlister.count $regml(%rlistroom.name,5)
var %rmlister.lang $regml(%rlistroom.name,6)
var %rmlister.topic $regml(%rlistroom.name,4)
}
if (%rmlister.name) && ($window(@IRCwxRoomlist)) {
aline @IRCwxRoomlist 01 $+ $replace(%rmlister.name,<,<) $chr(9) %rmlister.count $chr(9) $replace(%rmlister.icon,1,SCR,2,RCR,3,UCR) $chr(9) $rlistlanguage(%rmlister.lang) $chr(9) $rliststriphtml(%rmlister.topic)
aline @IRCwxRoomlistb $chr(37) $+ $chr(35) $+ $replace(%rmlister.name,<,<,$chr(32),\b) $chr(9) $iif($len(%rmlister.count) == 1,0 $+ %rmlister.count,$iif($len(%rmlister.count) == 2,0 $+ %rmlister.count,%rmlister.count)) $chr(9) %rmlister.icon $chr(9) $rlistlanguage(%rmlister.lang) $chr(9) $rliststriphtml(%rmlister.topic)
aline @IRCwxRoomlistc $chr(37) $+ $chr(35) $+ $replace(%rmlister.name,<,<,$chr(32),\b) $chr(9) $iif($len(%rmlister.count) == 1,0 $+ %rmlister.count,$iif($len(%rmlister.count) == 2,0 $+ %rmlister.count,%rmlister.count)) $chr(9) %rmlister.icon $chr(9) $rlistlanguage(%rmlister.lang) $chr(9) $rliststriphtml(%rmlister.topic)
inc %room.name | inc %room.total
}
if ($regex(%rlistroom.page,%rlister,/\] <a href='(.*?)' class='pages'>(.*?)<\/a>/)) { set -e %rlistroom.lastnm $regml(%rlistroom.page,2) | inc %rlistroom.page }
if ($regex(%rlister,/</HTML>/)) { sockclose $sockname | $iif(!%rlistroom.icon,.timer.rlerror -m 1 1 rlisterror) | if (%rlistroom.number == %rlistroom.lastnm) || (!%rlistroom.lastnm) { unset %rlistroom.* } | else { set -e %rlistroom.number %rlistroom.lastnm | rlistget } }
}
;;; StripHtml by unknown author
alias rliststriphtml {
if (!$isid) || (!$1) return
var %H = $1 , %T = $regsub(%H,/(<[^>]+>)/g,,%H)
if ($chr(38) isin %H) {
set -e %H $replacecs(%H,',',"," ,<,< ,>,> ,&,& , ,$iif($prop,$chr($prop),$chr(32)) ,£,£ ,§,$chr(36) ,¨,¨ ,«,« ,»,» ,ß,ß, Ñ,Ñ ,ñ,ñ,',')
set -e %H $replacecs(%H,À,À ,Á,Á ,Â, ,Ã,à ,Ä,Ä ,Å,Å ,Æ,Æ ,à,à ,á,á ,â,â ,ã,ã ,ä,ä ,å,å ,æ,æ)
set -e %H $replacecs(%H,È,È,É,É,Ê,Ê,Ë,Ë,è,è,é,é,ê,ê,ë,ë,Ì,Ì,Í,Í,Î,Î,Ï,Ï,ì,ì,í,í,î,î)
set -e %H $replacecs(%H,ï,ï,Ò,Ò,Ó,Ó,Ô,Ô,Õ,Õ,Ö,Ö,Ø,Ø,ò,ò,ó,ó,ô,ô,õ,õ,ö,ö,ø,ø,Ù,Ù,Ú,Ú,Û,Û,Ü,Ü,Ý,Ý,ù,ù,ú,ú,û,û,ü,ü,ý,ý,ÿ,ÿ)
}
return %H
}
alias rlistfilter { rlisterstart | clear @IRCwxRoomlistc | filter -t $+ %rlistfilter 9 @IRCwxRoomlistb @IRCwxRoomlistc | .timer.rmsort -m 1 500 roomsort }
alias roomsort {
var %te 1
while ($line(@IRCwxRoomlistc,%te)) {
tokenize 32 $line(@IRCwxRoomlistc,%te)
if ($len($3) == 2) && ($left($3,1) == 0) { var %rcount = $right($3,1-) }
else { var %rcount = $3 }
aline @IRCwxRoomlist $right($replace($1,\b,$chr(32)),-2) $chr(9) %rcount $chr(9) $replace($5,1,SCR,2,RCR,3,UCR) $chr(9) $rlistlanguage($7) $chr(9) $9-
inc %te
}
}
alias rlistlanguage { return $replace($1,Deutsch,Dutch,Français,French,Español,Spanish,Português,Portugues,العربية,Arabic) }
alias rlistcatr { return $replacex($1,et,Entertainment,gn,General,cp,Computing,rm,Romance,pr,Peers,un,Unlisted,cc,City Chats,in,Interests,ls,Lifestyles,ne,News & Politics,rl,Religion,rp,Roleplay,sp,Sport & Health,tn,Teens) }
;; MENU
menu @IRCwxRoomlist {
dclick: if ($sline(@IRCwxRoomlist,1).ln != $null) { join $gettok($line(@IRCwxRoomlistc,$sline(@IRCwxRoomlist,1).ln),1,9) }
$iif($sline(@IRCwxRoomlist,1).ln == $null,$style(2)) Join mIRC: join $gettok($line(@IRCwxRoomlistc,$sline(@IRCwxRoomlist,1).ln),1,9)
-
Search: $iif(!$dialog(search),dialog -m rlistsearch rlistsearch)
-
Category:
.City Chats: rlister cc
.Computing: rlister cp
.Entertainment: rlister et
.General: rlister gn
.Interests: rlister in
.Lifestyles: rlister ls
.News & Politics: rlister ne
.Peers: rlister pr
.Religion: rlister rl
.RolePlay: rlister rp
.Romance: rlister rm
.Sport & Health: rlister sp
.Teens: rlister tn
.Unlisted: rlister un
-
Sort by:
.Name: set %rlistfilter u 1 | rlistfilter
.Users: set %rlistfilter eu 2 | rlistfilter
.Type: set %rlistfilter u 3 | rlistfilter
-
$iif($sline(@IRCwxRoomlist,1).ln == $null,$style(2)) Browser:
.Join: url $+(http://www.ircwx.com/chatui.aspx?rm=,$chr(37),25,$chr(37),23,$replace($right($gettok($line(@IRCwxRoomlistc,$sline(@IRCwxRoomlist,1).ln),1,9),-2),\b,$chr(32)))
.Copy: clipboard $+(http://www.ircwx.com/chatui.aspx?rm=,$chr(37),25,$chr(37),23,$right($gettok($line(@IRCwxRoomlistc,$sline(@IRCwxRoomlist,1).ln),1,9),-2))
}
dialog rlistsearch {
title "Room Search"
size -1 -1 147 26
option dbu
edit "", 1, 1 1 145 11
button "Search/Find Next", 2, 1 14 50 11
button "Close", 4, 52 14 93 11
}
on *:DIALOG:rlistsearch:sclick:2: {
if (%rlistsearch.item != $did(rlistsearch,1).text) {
set %rlistsearch.item $did(rlistsearch,1).text | set %rlistsearch.start 0 | set %rlistsearch.num $fline(@IRCwxRoomlist,* $+ %rlistsearch.item $+ *,0,1)
}
set %rlistsearch.start $calc(%rlistsearch.start +1)
if (%rlistsearch.start > %rlistsearch.num) { noop $input(End of Search,uodw,Attention!) | halt }
/sline -s @IRCwxRoomlist $fline(@IRCwxRoomlist,* $+ %rlistsearch.item $+ *, $+ %rlistsearch.start $+ ,1)
}
on *:dialog:rlistsearch:sclick:4: { unset %rlistsearch.* | dialog -x rlistsearch }
on *:dialog:rlistsearch:close:*: { unset %rlistsearch.* }