Get player statistics from CricInfo

Using this flow player statistics can be retrieved from the http://stats.espncricinfo.com site.

[{"id":"37075663.2ae06a","type":"http in","z":"44a0ee1b.ee0508","name":"Get player id","url":"/cricket/player/id","method":"get","upload":false,"swaggerDoc":"","x":110,"y":140,"wires":[["6e8d2091.0fb79"]]},{"id":"90ac35f2.d3a718","type":"http response","z":"44a0ee1b.ee0508","name":"OK Response","statusCode":"200","headers":{"content-type":"application/json"},"x":1240,"y":180,"wires":[]},{"id":"6e8d2091.0fb79","type":"function","z":"44a0ee1b.ee0508","name":"Create URL","func":"msg.validreq = (typeof msg.req.query.name !== 'undefined') && (typeof msg.req.query.country !== 'undefined');\n\nif(msg.validreq && !msg.req.query.name)\n    msg.validreq = false;\nif(msg.validreq && !msg.req.query.country)\n    msg.validreq = false;\n\nif(msg.validreq) {\n    msg.name = msg.req.query.name;\n    msg.country = msg.req.query.country;\n    msg.url = 'http://stats.espncricinfo.com/ci/engine/stats/analysis.html?search=' + msg.req.query.name.replace(' ','+') + ';template=analysis';\n}\nelse\n    msg.payload = '';\n\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":140,"wires":[["671e7aad.1d2044"]]},{"id":"b4eceb5c.99f9a8","type":"function","z":"44a0ee1b.ee0508","name":"Get Player Table","func":"msg.table = '';\n\nfor(var i=0;i<msg.payload.length && !msg.table;i++) {\n    if(msg.payload[i].indexOf(msg.name) > -1 && msg.payload[i].indexOf(msg.country) > -1 && msg.payload[i].indexOf('class=2;') > -1)\n        msg.table = msg.payload[i];\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":140,"wires":[["90e5cd17.1f236"]]},{"id":"3220b9e3.218a5e","type":"http response","z":"44a0ee1b.ee0508","name":"Not Found","statusCode":"404","headers":{},"x":990,"y":180,"wires":[]},{"id":"90e5cd17.1f236","type":"switch","z":"44a0ee1b.ee0508","name":"Table found","property":"table","propertyType":"msg","rules":[{"t":"nempty"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":830,"y":140,"wires":[["1164f086.16fedf"],["3220b9e3.218a5e"]]},{"id":"1164f086.16fedf","type":"html","z":"44a0ee1b.ee0508","name":"Get Links","property":"table","outproperty":"payload","tag":"a","ret":"attr","as":"single","x":980,"y":120,"wires":[["da202c95.e81988"]]},{"id":"da202c95.e81988","type":"function","z":"44a0ee1b.ee0508","name":"Get Id","func":"var id ='';\n\nfor(var i=0;i<msg.payload.length;i++) {\n    var href = msg.payload[i].href;\n    if(href.indexOf('class=2;') > -1)\n        id = href.substring(href.lastIndexOf('/') +1, href.indexOf('?')).replace('.html','');\n}\n\nmsg.payload = {\n    \"id\" : parseInt(id)\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":1110,"y":120,"wires":[["90ac35f2.d3a718"]]},{"id":"db40f44f.3eef8","type":"http in","z":"44a0ee1b.ee0508","name":"Get player stats","url":"/cricket/player/:id/stats","method":"get","upload":false,"swaggerDoc":"","x":120,"y":200,"wires":[["1d9f5070.0a36f"]]},{"id":"1d9f5070.0a36f","type":"function","z":"44a0ee1b.ee0508","name":"Create URL","func":"msg.validreq = (typeof msg.req.query.startdate !== 'undefined') && (typeof msg.req.query.enddate !== 'undefined') && (typeof msg.req.params.id !== 'undefined');\n\nif(msg.validreq && !msg.req.query.startdate)\n    msg.validreq = false;\nif(msg.validreq && !msg.req.query.enddate)\n    msg.validreq = false;\nif(msg.validreq && !msg.req.params.id)\n    msg.validreq = false;\n\nif(msg.validreq)\n    msg.url = 'http://stats.espncricinfo.com/ci/engine/player/' + msg.req.params.id + '.html?class=2;orderby=start;orderbyad=reverse;spanmax1=' + msg.req.query.enddate.replace(' ', '+') + ';spanmin1=' + msg.req.query.startdate.replace(' ', '+') + ';spanval1=span;template=results;type=allround;view=match';\nelse\n    msg.payload = '';\n\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":200,"wires":[["e8f02736.fb58a8"]]},{"id":"5ed5eff1.34ecb","type":"http response","z":"44a0ee1b.ee0508","name":"OK Response","statusCode":"200","headers":{"content-type":"application/json"},"x":580,"y":320,"wires":[]},{"id":"d00def00.49eb68","type":"switch","z":"44a0ee1b.ee0508","name":"Check request","property":"validreq","propertyType":"msg","rules":[{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":200,"y":720,"wires":[["ead6b556.5691e8"],["48cac8da.8fa658"]]},{"id":"48cac8da.8fa658","type":"http response","z":"44a0ee1b.ee0508","name":"Bad Request","statusCode":"400","headers":{},"x":370,"y":760,"wires":[]},{"id":"ead6b556.5691e8","type":"http request","z":"44a0ee1b.ee0508","name":"Get Cricinfo page","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","proxy":"","authType":"basic","x":390,"y":660,"wires":[["4b39e35f.daf7fc"]]},{"id":"4b39e35f.daf7fc","type":"switch","z":"44a0ee1b.ee0508","name":"Return Code","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":590,"y":660,"wires":[["9e911163.08c79"],["cacd050d.dda9c8"]]},{"id":"cacd050d.dda9c8","type":"http response","z":"44a0ee1b.ee0508","name":"Not Found","statusCode":"404","headers":{},"x":630,"y":720,"wires":[]},{"id":"5b7b6885.bc7c","type":"link in","z":"44a0ee1b.ee0508","name":"Link for CricInfo Request","links":["e8f02736.fb58a8","671e7aad.1d2044"],"x":55,"y":720,"wires":[["d00def00.49eb68"]]},{"id":"e8f02736.fb58a8","type":"link out","z":"44a0ee1b.ee0508","name":"Link to CricInfo Stats Request","links":["5b7b6885.bc7c"],"x":435,"y":200,"wires":[]},{"id":"671e7aad.1d2044","type":"link out","z":"44a0ee1b.ee0508","name":"Link to CricInfo Id Request","links":["5b7b6885.bc7c"],"x":415,"y":140,"wires":[]},{"id":"f4ad32d1.b96ee","type":"link in","z":"44a0ee1b.ee0508","name":"Link for Player Id","links":["e37e4c58.cecd78"],"x":495,"y":140,"wires":[["b4eceb5c.99f9a8"]]},{"id":"8fc0d505.5753d","type":"link in","z":"44a0ee1b.ee0508","name":"Link for Player Stats","links":["93fd5603.d5a93"],"x":540,"y":200,"wires":[["26bc5e38.e3e4c2"]]},{"id":"9484fd4e.21c5c","type":"switch","z":"44a0ee1b.ee0508","name":"Check request type","property":"url","propertyType":"msg","rules":[{"t":"cont","v":"view=match","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":950,"y":620,"wires":[["93fd5603.d5a93"],["e37e4c58.cecd78"]]},{"id":"93fd5603.d5a93","type":"link out","z":"44a0ee1b.ee0508","name":"Link to Player Stats","links":["8fc0d505.5753d"],"x":1075,"y":580,"wires":[]},{"id":"e37e4c58.cecd78","type":"link out","z":"44a0ee1b.ee0508","name":"Link to Player Id","links":["f4ad32d1.b96ee"],"x":1075,"y":640,"wires":[]},{"id":"9e911163.08c79","type":"html","z":"44a0ee1b.ee0508","name":"Get Tables","property":"payload","outproperty":"payload","tag":"table","ret":"html","as":"single","x":750,"y":620,"wires":[["9484fd4e.21c5c"]]},{"id":"26bc5e38.e3e4c2","type":"function","z":"44a0ee1b.ee0508","name":"Get Stat Tables","func":"msg.careeravg = {};\nmsg.matches = [];\n\nfor(var i=0;i<msg.payload.length && !msg.table;i++) {\n    if(msg.payload[i].indexOf('Career averages') > -1)\n        msg.careeravg = msg.payload[i];\n    else if(msg.payload[i].indexOf('Match by match list') > -1)\n        msg.matches = msg.payload[i];\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":200,"wires":[["94ecf381.a500a8"]]},{"id":"94ecf381.a500a8","type":"link out","z":"44a0ee1b.ee0508","name":"Link to Career Avg Stat","links":["5462e136.ba4898"],"x":795,"y":200,"wires":[]},{"id":"5462e136.ba4898","type":"link in","z":"44a0ee1b.ee0508","name":"Link for Career Avg Stat","links":["94ecf381.a500a8"],"x":55,"y":340,"wires":[["a3db4bf9.f756c8"]]},{"id":"a3db4bf9.f756c8","type":"switch","z":"44a0ee1b.ee0508","name":"Is empty","property":"careeravg","propertyType":"msg","rules":[{"t":"empty"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":160,"y":340,"wires":[["fb8d8829.97f078"],["1245e094.e2b74f"]]},{"id":"8fa30759.47f4a","type":"link out","z":"44a0ee1b.ee0508","name":"Link to Match Stat","links":["1c7b9e4.cbf3de2"],"x":1315,"y":380,"wires":[]},{"id":"1c7b9e4.cbf3de2","type":"link in","z":"44a0ee1b.ee0508","name":"Link for Match Stat","links":["8fa30759.47f4a"],"x":55,"y":460,"wires":[["782c5f4c.47a1"]]},{"id":"1245e094.e2b74f","type":"html","z":"44a0ee1b.ee0508","name":"Get headers","property":"careeravg","outproperty":"headers","tag":"th","ret":"html","as":"single","x":340,"y":380,"wires":[["efe5e4cd.b20a68"]]},{"id":"efe5e4cd.b20a68","type":"html","z":"44a0ee1b.ee0508","name":"Get bodies","property":"careeravg","outproperty":"payload","tag":"tbody","ret":"html","as":"single","x":510,"y":380,"wires":[["49fa32.f1cb65d"]]},{"id":"49fa32.f1cb65d","type":"function","z":"44a0ee1b.ee0508","name":"Get Filtered Body","func":"for(var i=0;i<msg.payload.length && !msg.table;i++) {\n    if(msg.payload[i].indexOf('>filtered') > -1)\n        msg.careeravg = msg.payload[i];\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":710,"y":380,"wires":[["2deec19d.45bb16"]]},{"id":"2deec19d.45bb16","type":"html","z":"44a0ee1b.ee0508","name":"Get Average Stats","property":"careeravg","outproperty":"payload","tag":"td","ret":"html","as":"single","x":930,"y":380,"wires":[["847983fe.eb2b18"]]},{"id":"847983fe.eb2b18","type":"function","z":"44a0ee1b.ee0508","name":"Set Career Avg Payload","func":"msg.careeravg = {};\n\nfor (var i=0;i<msg.headers.length;i++) {\n    if(msg.headers[i]) {\n        if(msg.headers[i] === 'Mat' || msg.headers[i] === 'Ct' || msg.headers[i] === 'St')\n            msg.careeravg[msg.headers[i]] = parseInt(msg.payload[i]);\n        else\n            msg.careeravg[msg.headers[i]] = msg.payload[i];\n    }\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":1170,"y":380,"wires":[["8fa30759.47f4a"]]},{"id":"fb8d8829.97f078","type":"change","z":"44a0ee1b.ee0508","name":"Set Empty payload","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.average","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"payload.matches","pt":"msg","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":320,"wires":[["5ed5eff1.34ecb"]]},{"id":"782c5f4c.47a1","type":"html","z":"44a0ee1b.ee0508","name":"Get table headers","property":"matches","outproperty":"headers","tag":"th","ret":"text","as":"single","x":210,"y":460,"wires":[["f11ae5b1.cba7a"]]},{"id":"f11ae5b1.cba7a","type":"html","z":"44a0ee1b.ee0508","name":"Get match stats","property":"matches","outproperty":"payload","tag":"td","ret":"text","as":"single","x":420,"y":460,"wires":[["dceedb04.8fc2f8"]]},{"id":"dceedb04.8fc2f8","type":"function","z":"44a0ee1b.ee0508","name":"Set Final payload","func":"msg.matches = [];\nvar match = {};\n\nfor(i=0;i<msg.payload.length;i++) {\n    if(i % 10 === 5)\n        continue;\n    \n    if (i % 10 === 0)\n        match = {};\n    \n    var header = msg.headers[i % 10];\n    header = header.replace('Bat1', 'Bat');\n    \n    //if((typeof msg.matches[i / 10] !== 'undefined'))\n      //  node.log(\"Index \" + i + \" undefined at \" + (i / 10));\n        \n    if(i % 10 == 9) {\n        match[\"MatchId\"] = parseInt(msg.payload[i].split(' ')[2]);\n        msg.matches.push(match);\n    }\n    else {\n        if(header === 'Ct' || header === 'St')\n            match[header] = parseInt(msg.payload[i]);\n        else if(header == 'Opposition')\n            match[header] = msg.payload[i].split(' ')[1];\n        else\n            match[header] = msg.payload[i];\n    }\n}\n\nmsg.payload = {\n    \"average\" : msg.careeravg,\n    \"matches\" : msg.matches\n};\n\nmsg.headers = {};\n\nreturn msg;","outputs":1,"noerr":0,"x":640,"y":460,"wires":[["f0bd7e2b.ce3658"]]},{"id":"f0bd7e2b.ce3658","type":"http response","z":"44a0ee1b.ee0508","name":"OK Response","statusCode":"200","headers":{"content-type":"application/json"},"x":840,"y":460,"wires":[]}]

Flow Info

Created 7 years, 9 months ago
Rating: not yet rated

Actions

Rate:

Node Types

Core
  • change (x1)
  • function (x8)
  • html (x7)
  • http in (x2)
  • http request (x1)
  • http response (x6)
  • link in (x5)
  • link out (x6)
  • switch (x5)

Tags

  • cricket
  • cricinfo
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option