Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 195 additions & 46 deletions lib/sherdog/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,97 +23,245 @@ 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: {
total: 0,
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);
Expand All @@ -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 !== "") {
Expand Down
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand All @@ -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": {
Expand Down