From f6aef58ba9a27f14ce19502e272fb0188c8400ff Mon Sep 17 00:00:00 2001 From: MarcosStevanini Date: Sat, 18 Feb 2023 11:33:07 -0300 Subject: [PATCH 1/5] Att. lib sherdog --- lib/sherdog/index.js | 152 ++++++++++++++++++++++++++++++------------- package.json | 12 ++-- 2 files changed, 114 insertions(+), 50 deletions(-) diff --git a/lib/sherdog/index.js b/lib/sherdog/index.js index 5e23755..85605b7 100644 --- a/lib/sherdog/index.js +++ b/lib/sherdog/index.js @@ -23,20 +23,24 @@ 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: "", wins: { total: 0, knockouts: 0, submissions: 0, decisions: 0, + knockouts_percent: 0, + submissions_percent: 0, + decisions_percent: 0, others: 0 }, losses: { @@ -44,6 +48,9 @@ module.exports.getFighter = function(url, callback) { knockouts: 0, submissions: 0, decisions: 0, + knockouts_percent: 0, + submissions_percent: 0, + decisions_percent: 0, others: 0 }, no_contests: 0, @@ -53,67 +60,124 @@ module.exports.getFighter = function(url, callback) { // 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); - 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); + //-----------------------+ + //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); }); + // 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); diff --git a/package.json b/package.json index 1b9efdd..6d73818 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "sherdog", - "version": "0.1.10", + "name": "api_super_lutas", + "version": "1.0.0", "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": { From 3fc371b3307934f96fc9bcb82a3389c602832d2b Mon Sep 17 00:00:00 2001 From: MarcosStevanini Date: Wed, 22 Feb 2023 14:13:04 -0300 Subject: [PATCH 2/5] Update query url_opponent --- lib/sherdog/index.js | 3 ++- package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/sherdog/index.js b/lib/sherdog/index.js index 85605b7..e620591 100644 --- a/lib/sherdog/index.js +++ b/lib/sherdog/index.js @@ -203,7 +203,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 6d73818..a3997d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "api_super_lutas", - "version": "1.0.0", + "version": "1.0.1", "description": "Sherdog MMA Fighter API scraper in Node.js", "main": "lib/sherdog", "scripts": { From 29c21f4cfa6d0654788a52050081899a5fd45c02 Mon Sep 17 00:00:00 2001 From: MarcosStevanini Date: Thu, 23 Feb 2023 14:17:44 -0300 Subject: [PATCH 3/5] Create Upcoming Fights --- lib/sherdog/index.js | 64 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/lib/sherdog/index.js b/lib/sherdog/index.js index e620591..21cc758 100644 --- a/lib/sherdog/index.js +++ b/lib/sherdog/index.js @@ -33,6 +33,23 @@ module.exports.getFighter = function(url, callback) { 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, @@ -56,6 +73,53 @@ module.exports.getFighter = function(url, callback) { no_contests: 0, fights: [] }; + + // Upcoming Fights + $('.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() { diff --git a/package.json b/package.json index a3997d3..b546569 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "api_super_lutas", - "version": "1.0.1", + "version": "1.1.1", "description": "Sherdog MMA Fighter API scraper in Node.js", "main": "lib/sherdog", "scripts": { From a76f7961abe93e516f127410f3ad350b3f5ac48f Mon Sep 17 00:00:00 2001 From: MarcosStevanini Date: Mon, 6 Mar 2023 18:28:06 -0300 Subject: [PATCH 4/5] att fighter --- lib/sherdog/index.js | 110 +++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 66 insertions(+), 46 deletions(-) diff --git a/lib/sherdog/index.js b/lib/sherdog/index.js index 21cc758..cc41b82 100644 --- a/lib/sherdog/index.js +++ b/lib/sherdog/index.js @@ -70,57 +70,65 @@ module.exports.getFighter = function(url, callback) { decisions_percent: 0, others: 0 }, + draw: { + total: 0, + }, + nc: { + total: 0, + }, no_contests: 0, fights: [] }; // Upcoming Fights - $('.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; + 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; + }); + } - // 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); @@ -208,6 +216,18 @@ module.exports.getFighter = function(url, callback) { fighter.losses.decisions = parseInt(decisions_total); decisions_percent = el.find('.loses > div:nth-child(7) > .pr').text(); fighter.losses.decisions_percent = parseInt(decisions_percent); + + //-----------------------+ + //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 diff --git a/package.json b/package.json index b546569..83bbcd8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "api_super_lutas", - "version": "1.1.1", + "version": "1.4", "description": "Sherdog MMA Fighter API scraper in Node.js", "main": "lib/sherdog", "scripts": { From 7407471a7704c2dc744d267d7e76c3125dd068c5 Mon Sep 17 00:00:00 2001 From: MarcosStevanini Date: Mon, 6 Mar 2023 18:29:04 -0300 Subject: [PATCH 5/5] att --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 83bbcd8..3c71349 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "api_super_lutas", - "version": "1.4", + "version": "1.1.2", "description": "Sherdog MMA Fighter API scraper in Node.js", "main": "lib/sherdog", "scripts": {