diff --git a/lib/sherdog/index.js b/lib/sherdog/index.js index 5e23755..cc41b82 100644 --- a/lib/sherdog/index.js +++ b/lib/sherdog/index.js @@ -23,20 +23,41 @@ module.exports.getFighter = function(url, callback) { var fighter = { name: "", nickname: "", - age: "", + // age: "", birthday: "", locality: "", nationality: "", association: "", - height: "", + height: 0, weight: "", - weight_class: "", image_url: "", + image_flag: "", + weight_class: "", + upcoming_fights: { + title_ufc: '', + date_location: '', + link_fight: '', + left_fighter: { + name: '', + record_fighter: '', + img_fighter: '', + link: '', + }, + right_fighter: { + name: '', + record_fighter: '', + img_fighter: '', + link: '', + }, + }, wins: { total: 0, knockouts: 0, submissions: 0, decisions: 0, + knockouts_percent: 0, + submissions_percent: 0, + decisions_percent: 0, others: 0 }, losses: { @@ -44,76 +65,203 @@ module.exports.getFighter = function(url, callback) { knockouts: 0, submissions: 0, decisions: 0, + knockouts_percent: 0, + submissions_percent: 0, + decisions_percent: 0, others: 0 }, + draw: { + total: 0, + }, + nc: { + total: 0, + }, no_contests: 0, fights: [] }; - + + // Upcoming Fights + if($('.fight_card_preview')) { + $('.fight_card_preview').filter(function() { + var el = $(this); + // Global Fight + el.title_ufc = el.find('h2[itemprop="name"]').text(); + el.date_location = el.find('.date_location').text(); + el.link_fight = el.find('.card_button').attr('href'); + + // Left and Right Link + el.left_link = el.find('.left_side > a[itemprop="url"]').attr('href'); + el.right_link = el.find('.right_side > a[itemprop="url"]').attr('href'); + + // Left and Right Image + el.left_img = el.find('.left_side > a > img[itemprop="image"]').attr("src"); + el.right_img = el.find('.right_side > a > img[itemprop="image"]').attr("src"); + + // Left and Right Name + el.left_name = el.find('.left_side > h3 > a > span[itemprop="name"]').text(); + el.right_name = el.find('.right_side > h3 > a > span[itemprop="name"]').text(); + + // Left and Right Name + el.left_record = el.find('.left_side > .record').text(); + el.right_record = el.find('.right_side > .record').text(); + + + // Global Fight + fighter.upcoming_fights.title_ufc = el.title_ufc; + fighter.upcoming_fights.date_location = el.date_location; + fighter.upcoming_fights.link_fight = el.link_fight; + + // Left and Right Link + fighter.upcoming_fights.left_fighter.link = el.left_link; + fighter.upcoming_fights.right_fighter.link = el.right_link; + + // Left and Right Image + fighter.upcoming_fights.left_fighter.img_fighter = el.left_img; + fighter.upcoming_fights.right_fighter.img_fighter = el.right_img; + + // Left and Right Name + fighter.upcoming_fights.left_fighter.name = el.left_name; + fighter.upcoming_fights.right_fighter.name = el.right_name; + + // Left and Right Records + fighter.upcoming_fights.left_fighter.record_fighter = el.left_record; + fighter.upcoming_fights.right_fighter.record_fighter = el.right_record; + }); + } + // Fighter name, nickname $('.bio_fighter').filter(function() { var el = $(this); - name = el.find('span.fn').text(); + el.name = el.find('span.fn').text(); nickname = el.find('span.nickname').text(); - fighter.name = name; + fighter.name = el.name; fighter.nickname = nickname.replace(/['"]+/g, ''); }); + // Fighter image - fighter.image_url = $(".profile_image.photo").attr("src"); - + fighter.image_url = $(".fighter-info > div:nth-child(1) > img").attr("src"); + fighter.image_flag = $(".big_flag").attr("src"); + // Fighter bio - $('.bio').filter(function() { + $('.fighter-right').filter(function() { var el = $(this); - age = el.find('.item.birthday strong').text(); - birthday = el.find('span[itemprop="birthDate"]').text(); + birthday = el.find('tr:nth-child(1) > td:nth-child(2)').text(); locality = el.find('span[itemprop="addressLocality"]').text(); nationality = el.find('strong[itemprop="nationality"]').text(); - association = el.find('.item.association span[itemprop="name"]').text(); - height = el.find('.item.height strong').text(); - weight = el.find('.item.weight strong').text(); - weight_class = el.find('.item.wclass strong').text(); - fighter.age = age.slice(5); fighter.birthday = birthday; fighter.locality = locality; fighter.nationality = nationality; - fighter.association = association; + // weight_class = el.find('.item.wclass strong').text(); + // fighter.weight_class = weight_class; + }); + + //HEIGHT / WIDTH + $('.bio-holder').filter(function() { + var el = $(this); + // height = el.find('tr:nth-child(2) > td:nth-child(2) > b[itemprop="height"]').text(); + height = el.find('tr:nth-child(2) > td:nth-child(2)').text(); + weight = el.find('tr:nth-child(3) > td:nth-child(2)').text(); + weight_class = el.find('div > a').text(); fighter.height = height; fighter.weight = weight; fighter.weight_class = weight_class; }); - // Fighter record - $('.record .count_history').filter(function() { + //ASSOCIATION + $('.association-class').filter(function() { + var el = $(this); + association = el.find('.association span[itemprop="name"]').text(); + fighter.association = association; + }); + + //WIN / LOSS + $('.winsloses-holder').filter(function() { var el = $(this); - var wins = el.find('.left_side .bio_graph').first(); - var winsByKnockout = wins.find('.graph_tag:nth-child(3)'); - var winsBySubmission = wins.find('.graph_tag:nth-child(5)'); - var winsByDecision = wins.find('.graph_tag:nth-child(7)'); - var winsByOther = wins.find('.graph_tag:nth-child(9)'); - var losses = el.find('.left_side .bio_graph.loser'); - var lossesByKnockout = losses.find('.graph_tag:nth-child(3)'); - var lossesBySubmission = losses.find('.graph_tag:nth-child(5)'); - var lossesByDecision = losses.find('.graph_tag:nth-child(7)'); - var lossesByOther = losses.find('.graph_tag:nth-child(9)'); - var noContests = el.find('.right_side .bio_graph'); - var getTotal = function(el) { return parseInt(el.text().split(' ')[0] || 0); } - var getPercent = function(el) { return el.find('em').text().split('%')[0]; } + //WIN + wins_total = el.find('.win > span:nth-child(2)').text(); + fighter.wins.total = parseInt(wins_total); + //WIN_KNOCKOUTS + knockouts_total = el.find('.wins > div:nth-child(3) > .pl').text(); + fighter.wins.knockouts = parseInt(knockouts_total); + knockouts_percent = el.find('.wins div:nth-child(3) > .pr').text(); + fighter.wins.knockouts_percent = parseInt(knockouts_percent); + //WIN_SUBMISSION_TOTAL + submissions_total = el.find('.wins > div:nth-child(5) > .pl').text(); + fighter.wins.submissions = parseInt(submissions_total); + submissions_percent = el.find('.wins > div:nth-child(5) > .pr').text(); + fighter.wins.submissions_percent = parseInt(submissions_percent); + //WIN_DECISION_TOTAL + decisions_total = el.find('.wins > div:nth-child(7) > .pl').text(); + fighter.wins.decisions = parseInt(decisions_total); + decisions_percent = el.find('.wins > div:nth-child(7) > .pr').text(); + fighter.wins.decisions_percent = parseInt(decisions_percent); + + //-----------------------+ + //LOSS + //-----------------------+ + loss_total = el.find('.lose > span:nth-child(2)').text(); + fighter.losses.total = parseInt(loss_total); + //LOSS_KNOCKOUTS + knockouts_total = el.find('.loses > div:nth-child(3) > .pl').text(); + fighter.losses.knockouts = parseInt(knockouts_total); + knockouts_percent = el.find('.loses div:nth-child(3) > .pr').text(); + fighter.losses.knockouts_percent = parseInt(knockouts_percent); + //LOSS_SUBMISSION_TOTAL + submissions_total = el.find('.loses > div:nth-child(5) > .pl').text(); + fighter.losses.submissions = parseInt(submissions_total); + submissions_percent = el.find('.loses > div:nth-child(5) > .pr').text(); + fighter.losses.submissions_percent = parseInt(submissions_percent); + //LOSS_DECISION_TOTAL + decisions_total = el.find('.loses > div:nth-child(7) > .pl').text(); + fighter.losses.decisions = parseInt(decisions_total); + decisions_percent = el.find('.loses > div:nth-child(7) > .pr').text(); + fighter.losses.decisions_percent = parseInt(decisions_percent); - wins_total = parseInt(wins.find('.card .counter').text()); - losses_total = parseInt(losses.find('.counter').text()); - no_contests_total = parseInt(noContests.find('.counter').text()); - fighter.wins.total = wins_total; - fighter.losses.total = losses_total; - fighter.no_contests = no_contests_total; - fighter.wins.knockouts = getTotal(winsByKnockout); - fighter.wins.submissions = getTotal(winsBySubmission); - fighter.wins.decisions = getTotal(winsByDecision); - fighter.wins.others = getTotal(winsByOther); - fighter.losses.knockouts = getTotal(lossesByKnockout); - fighter.losses.submissions = getTotal(lossesBySubmission); - fighter.losses.decisions = getTotal(lossesByDecision); + //-----------------------+ + //DRAW + //-----------------------+ + draw_total = el.find('.draws > span:nth-child(2)').text(); + fighter.draw.total = parseInt(draw_total); + + //-----------------------+ + //NC + //-----------------------+ + nc_total = el.find('.nc > span:nth-child(2)').text(); + fighter.nc.total = parseInt(nc_total); }); + // Fighter record + // $('.winsloses-holder').filter(function() { + // var el = $(this); + // var wins = el.find('.wins ').first(); + // var winsByKnockout = wins.find('.graph_tag:nth-child(3)'); + // var winsBySubmission = wins.find('.graph_tag:nth-child(5)'); + // var winsByDecision = wins.find('.graph_tag:nth-child(7)'); + // var winsByOther = wins.find('.graph_tag:nth-child(9)'); + // var losses = el.find('.winsloses-holder.loser'); + // var lossesByKnockout = losses.find('.graph_tag:nth-child(3)'); + // var lossesBySubmission = losses.find('.graph_tag:nth-child(5)'); + // var lossesByDecision = losses.find('.graph_tag:nth-child(7)'); + // var lossesByOther = losses.find('.graph_tag:nth-child(9)'); + // var noContests = el.find('.right_side .winsloses-holder'); + // var getTotal = function(el) { return parseInt(el.text().split(' ')[0] || 0); } + // var getPercent = function(el) { return el.find('em').text().split('%')[0]; } + + // wins_total = parseInt(wins.find('.winloses .win').text()); + // losses_total = parseInt(losses.find('.counter').text()); + // no_contests_total = parseInt(noContests.find('.counter').text()); + // fighter.wins.total = wins_total; + // fighter.losses.total = losses_total; + // fighter.no_contests = no_contests_total; + // fighter.wins.knockouts = getTotal(winsByKnockout); + // fighter.wins.submissions = getTotal(winsBySubmission); + // fighter.wins.decisions = getTotal(winsByDecision); + // fighter.wins.others = getTotal(winsByOther); + // fighter.losses.knockouts = getTotal(lossesByKnockout); + // fighter.losses.submissions = getTotal(lossesBySubmission); + // fighter.losses.decisions = getTotal(lossesByDecision); + // }); + // Fighter Fight History $('.module.fight_history tr:not(.table_head)').each(function() { var el = $(this); @@ -139,7 +287,8 @@ module.exports.getFighter = function(url, callback) { referee: referee, round: round, time: time, - opponent: opponent_name + opponent: opponent_name, + opponent_url: opponent_url }; if (result !== "") { diff --git a/package.json b/package.json index 1b9efdd..3c71349 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "sherdog", - "version": "0.1.10", + "name": "api_super_lutas", + "version": "1.1.2", "description": "Sherdog MMA Fighter API scraper in Node.js", "main": "lib/sherdog", "scripts": { @@ -14,13 +14,13 @@ "Javascript" ], "author": { - "name": "Andrew Valish", - "email": "andrew@vali.sh", - "url": "http://vali.sh" + "name": "Marcos Stevanini", + "email": "marcosstevanini@gmail.com", + "url": "https://github.com/MarcosStevanini/" }, "repository": { "type": "git", - "url": "https://github.com/Valish/sherdog-api.git" + "url": "git+https://github.com/MarcosStevanini/sherdog-api.git" }, "license": "MIT", "dependencies": {