SRL Archive - Research & Development Lounge

GetGEPrice


Markus

2009-11-17 15:23:01

Probably already millions of these floating around, but I had to make my own of course x)
Gets the Grand Exchange price through the website.

function GetGEPrice(id : integer) : integer;
var
s, s2 : string;
hoi : Extended;
begin
s := GetPage('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj='+inttostr(id));
s2 := trim(Between('<b>Market price:</b>', #10, s));
if pos('m', s2) <> 0 then
begin
Delete(s2, length(s2), 1);
hoi := StrToFloat(s2);
hoi := hoi * 1000000;
result := floor(hoi);
exit;
end;
if pos('k', s2) <> 0 then
begin
Delete(s2, length(s2), 1);
hoi := StrToFloat(s2);
hoi := hoi * 1000;
result := floor(hoi);
exit;
end;
result := StrToInt(GetNumbers(s2));
end;

JPHamlett

2009-11-17 15:51:07


Function GetIDPrice(ItemID: Integer): Integer; // Credits to Camaro and TAD
Var
s: String;
Begin
s := getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' +
IntToStr(ItemID));
s := between('Market price:</b>', '</span>', s);
s := getnumbers(s);
Result := StrToInt(s);
Writeln(s);
End;


not mine its Camaro and TADS but it works good hopefully this isnt against any rules

YoHoJo

2009-11-17 15:58:40

I edited this from one I found, probably Camaro/TADs (look similar)

Function GEGetPrice(ID,Which: Integer): Integer;
var
Kind: String;
begin
Case Which Of
1: Kind:='nimum price:</b>';
2: Kind:='t price:</b> ';
3: Kind:='ximum price:</b> ';
End;
Result := StrToInt(GetNumbers(Between(Kind, '<', Getpage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(ID)))));
end;

Markus

2009-11-17 16:52:39

J_Pizzle/YoHoJo: don't forget to take care of for example 10.8k and 22m :p which is something your functions don't atm.

Nava2

2009-11-17 17:43:33

function ConvertNumber(Number : string) : Integer;



begin

if Pos('m', Number) <> 0 then

begin

Delete(Number, Pos('m', Number), Length(Number));

try

Result := Round(StrToFloat(Number) * 1000000);

except

Writeln('This caused error in StrToFloat (m): ' + Number);

end;

end else

if Pos('k', Number) <> 0 then

begin

Delete(Number, Pos('k', Number), Length(Number));

try

Result := Round(StrToFloat(Number) * 1000);

except

Writeln('This caused error in StrToFloat (k): ' + Number);

end;

end else

Result := StrToIntDef(Number, 0);

end;



function GetMarketValue(var T: TBankSlot): string;

var

Name: string;

I: Integer;

begin

if ((T.Name = 'Members object') and (CheckMembersObjects = True)) or ForceJagex then

begin

Result := GetPage('http://itemdb-rs.runescape.com/viewitem.ws?obj=' + IntToStr(T.ID));

Delete(Result, 1, 15130);

Name := Copy(Result, 1, PosEx(#10, Result, 2) - 1);

if Pos('not found', Name) = 0 then

T.Name := Name

else

T.Name := '-= ??? =-';

Delete(Result, 1, 270);

Delete(Result, 1, Pos('Mark', Result) + 17);

Delete(Result, Pos('</', Result) - 1, Length(Result));

if Length(Result) > 20 then

begin

Result := '';

Exit;

end;

end else

begin

Name := Replace(T.Name, ' ', '_');

for I := 0 to 2 do

if Pos('_' + IntToStr(100 - 25 * I), Name) <> 0 then

begin

Delete(Name, Pos('_' + IntToStr(100 - 25 * I), Name), Length(Name));

Break;

end;

Result := GetPage('http://rscript.org/lookup.php?type=ge&search=' + Name);

if InIntArray([53, 73], Length(Result)) or ((Pos(IntToStr(T.ID), Result) = 0) and (Pos(IntToStr(T.ID - 1), Result) = 0)) then

begin

Result := '';

Exit;

end;

Result :=Between(Name + ' ', ' ', Result);

end;

Result := Replace(Result, ',', '');

end;

YoHoJo

2009-11-17 18:22:33

:D Everyone shit on Markus and post your own GE grabbers!

NCDS

2009-11-17 18:49:17

From: YoHoJo
:D Everyone shit on Markus and post your own GE grabbers!


or just be cool like Nava2 and skip EVERY OTHER LINE :staycool:

YoHoJo

2009-11-17 18:53:24

Oh shit Nava2 whipping out some futuristic standards right there!
Lets capitalize bolds too!

Boreas

2009-11-18 02:58:04

function CurrentPrice(ObjNum:integer):integer;
var tmpstr,Page:string;
Pos1,Pos2:integer;
tmpfloat:extended;
begin
Page := GetPage('http://itemdb-rs.runescape.com/viewitem.ws?obj='+inttostr(ObjNum));
Pos1:=Pos('>Market price:</b> ',Page);
Pos2:=PosEx('</span>',Page,Pos1);
tmpstr:=Copy(Page,Pos1+19,Pos2-Pos1-20);
if pos('k',tmpstr)>0 then
begin
tmpfloat:=StrToFloat(TrimLetters(tmpstr));
result:=round(tmpfloat*1000);
end;
if pos('m',tmpstr)>0 then
begin
tmpfloat:=StrToFloat(TrimLetters(tmpstr));
result:=round(tmpfloat*1000000);
end;
tmpstr:=TrimOthers(tmpstr);
if (pos('k',tmpstr)=0)and(pos('m',tmpstr)=0) then
result := strtoint(tmpstr);
Page:='';
end;
Prolly doesn't work, from September 2008 lol.

Nava2

2009-11-18 08:59:37

From: YoHoJo
Oh shit Nava2 whipping out some futuristic standards right there!
Lets capitalize bolds too!


:> It wasn't intentional… for some reason gedit tacked on an extra newline char… every line…