mIRC socket read text from url

1.4k views Asked by At

I have been trying to use mIRC to read a short line of text from a url and echo/ write it in to chat when someone types !test.

The socket host is XXXXXXXXXXXX because it is running on wamp on my PC.

The data on the page is not long, Here is the page.

SnOwEfLaKe's Battlefield 4(pc) Stats | Rank: 140 | Kills: 66393 | K/D: 2 | W/L: 1.38 | Score: 60646533 | Time Played: 53.27 days | Accuracy: 14.17%

alias demo {
var %user = $$1, %chan = $2, %sockname = demo. $+ $ticks
hfree -w %sockname | hmake %sockname
hadd %sockname user %user
hadd %sockname chan %chan
hadd %sockname host XXXXXXXXX
hadd %sockname port 80
hadd %sockname request /nb/bf4stats.php
sockopen -e %sockname $hget(%sockname,host) $hget(%sockname,port)
}

on *:text:!test:#:{
demo #
}

on *:sockopen:demo.*: {
var %<< = sockwrite -nt $sockname
%<< GET $hget($sockname,request) HTTP/1.0
%<< Host: $sock($sockname).addr
%<< $crlf
}

on *:sockread:demo.*: {
var %header, %content
if (!$hget($sockname,header.complete)) {
sockread %header
while (%header != $null) {
  if (HTTP/* 2?? * iswm %header) { hadd $sockname following $true }
  elseif (HTTP/* 4?? * iswm %header) { hadd $sockname following $false }
  ;echo -ag %header
  sockread %header
}
if ($sockbr) hadd $sockname header.complete $true
}

if ($hget($sockname,header.complete)) {
 while ($sockbr) {
  sockread -f %content
  ;if (%content != $null) echo -ag %content
}
}
}

on *:sockclose:demo.*:{
  if ($hget($sockname,following)) { var %msg = Following }
  else { var %msg = Not following }

if ($hget($sockname,chan)) { msg $v1 %msg }
  else { echo -ag %msg }

  hfree $sockname
 }

I am not having any luck

1

There are 1 answers

0
Blood_Wolf89 On BEST ANSWER

I figured out how to do it.

on *:TEXT:*:#blood_wolf89:{
if ($strip($1) === !bf4stats) {
var %user = $iif($2, $strip($2), Blood_Wolff89)
var %urlSafeUser = $regsubex(%user, /[^a-z\d_-]/gi, % $+ $base($asc(\t), 10, 16, 2))
var %url = http://api.bf4stats.com/api/playerInfo?plat=pc&name= $+ %urlSafeuser

JSONOpen -ud bf4stat %url

var %name = $JSON(bf4stat, player, name)
var %rank = $JSON(bf4stat, player, rank, nr)
var %score = $JSON(bf4stat, player, score)

var %kills = $JSON(bf4stat, stats, kills)
var %deaths = $JSON(bf4stat, stats, deaths)
var %kdRatio = $round($calc(%kills / %deaths), 2)

var %wins = $JSON(bf4stat, stats, numWins)
var %losses = $JSON(bf4stat, stats, numLosses)
var %wlRatio = $round($calc(%wins / %losses), 2)


var %played = $duration($JSON(bf4stat, stats, timePlayed))

var %hits = $JSON(bf4stat, stats, shotsHit)
var %misses = $JSON(bf4stat, stats, shotsFired)
var %accuracy = $round($calc(%hits / %misses * 100),2) $+ %
if ((%user == %name) || (%urlSafeuser == %name)) { msg # [BF4Stats]:  %name      $+ 's Battlefield 4(PC) Stats $(|,0) Rank: %rank $(|,0) Kills: %kills $(|,0) K/D: %kdRatio $(|,0) W/L: %wlRatio $(|,0) Score: %score $(|,0) Time Played: %played $(|,0) Accuracy: %accuracy } 
if ((%urlSafeuser !== %name)) {  msg # [BF4Stats]: Invalid Battlefield 4 Name.  }
}
}

And after that I have a JSON Parser that I have gotten from here: http://hawkee.com/snippet/10194