Advertisement
Terrah

Hotslogs scraping

Nov 25th, 2015
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.75 KB | None | 0 0
  1. local function IsHero(tbl)
  2.  
  3.     if type(tbl._attr)=="table"
  4.     and type(tbl._attr.class)=="string"
  5.     and (tbl._attr.class=="rgAltRow" or tbl._attr.class=="rgRow")
  6.     and tbl[4]
  7.     and tbl[4][1]
  8.     and tbl[4][1]._attr
  9.     and tbl[4][1]._attr.href
  10.     and tbl[4][1]._attr.href:find("/Sitewide/HeroDetails?Hero=",1,true)
  11.     then
  12.         return true;
  13.     else
  14.         return false;
  15.     end
  16. end
  17.  
  18. local function InsertHeroStats(tbl, raw)
  19.  
  20.     local entry = {};
  21.  
  22.     entry.name = raw[4][1][1];
  23.     entry.win = raw[8][1];
  24.     entry.games = raw[6][1];
  25.  
  26.     if type(raw[5][1])=="table" then
  27.         entry.level = raw[5][2][1];
  28.     else
  29.         entry.level = raw[5][1];
  30.     end
  31.  
  32.     table.insert(tbl,entry);
  33. end
  34.  
  35. local function FindHeroStats(tbl, existing)
  36.  
  37.     if not tbl then return nil; end
  38.  
  39.     local stats = existing or {};
  40.  
  41.     for k,v in pairs(tbl)do
  42.         if type(v)=="table" then
  43.  
  44.             if(IsHero(v))then
  45.                 InsertHeroStats(stats,v);
  46.             else
  47.                 FindHeroStats(v,stats);
  48.             end
  49.         end
  50.     end
  51.     return stats;
  52. end
  53.  
  54. --[[return function(msg,usr,chan)
  55.  
  56.     if msg==nil or msg=="" or msg==" " then
  57.         return;
  58.     end
  59.  
  60.     local body, code, headers, status = MOD.HTTPGet("http://www.hotslogs.com/Player/Profile?PlayerID="..tostring(MOD.HotsLogsID));
  61.     local hero = msg;
  62.  
  63.     if body then
  64.        
  65.         local parsed = HTML(body);
  66.         local stats = FindHeroStats(parsed);
  67.        
  68.         if not stats then
  69.             print("Unable to decode data");
  70.             return;
  71.         end
  72.  
  73.         for n=1, #stats do
  74.        
  75.             if(stats[n].name:lower()==hero:lower())then
  76.                 print(stats[n].name.." ");     
  77.                 print("Games: "..tostring(stats[n].games));
  78.                 print("Level: "..tostring(stats[n].level));
  79.                 print("Win Percent: "..tostring(stats[n].win));
  80.                 return;
  81.             end
  82.         end
  83.  
  84.         print("Unable to find data for "..hero);   
  85.     else
  86.         print("Unable to fetch data");
  87.     end
  88. end]]
  89.  
  90. return nil
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement