Loading...
More JavaScript Posts
//Disclaimer: I do not condone mass web scraping of ESPN websites, and this is just theoretical code that hasn't been used.//Scrape player stats off of https://www.espn.com/nfl/team/roster/_/name/phi/philadelphia-eagles//Example player JS object/*{"shortName": "S. Opeta","name": "Sua Opeta","href": "http://www.espn.com/nfl/player/_/id/3121009/sua-opeta","uid": "s:20~l:28~a:3121009","guid": "dec19157-e984-f981-3724-498281328c97","id": "3121009","height": "6' 4\"","weight": "305 lbs","age": 27,"position": "G","jersey": "78","birthDate": "08/15/96","headshot": "https://a.espncdn.com/i/headshots/nfl/players/full/3121009.png","lastName": "Sua Opeta","experience": 4,"college": "Weber State"}*///The page needs to be focused, so you have to put this code in a bookmarklet and click the page before clicking it. Allegedly.navigator.clipboard.writeText(JSON.stringify(window["__espnfitt__"].page.content.roster.groups.flatMap((group)=>{return group.athletes.map((athlete)=>{//We can assume all football players are above 100 lbs and below 1000 lbs.athlete.weight = parseInt(athlete.weight.substring(0,3));if(athlete.experience == "R") athlete.experience = 0;else athlete.experience = parseInt(athlete.experience);//We can assume players are at least 1 foot, or under 10 feet tall.athlete.inches = 12 * parseInt(athlete.height.substring(0, 1)); //Add feet in inchesathlete.inches += parseInt(athlete.height.substring(2).replaceAll("\"", "").trim()); //Add remaining inchesconst monthDayYear = athlete.birthDate.split("/");athlete.birthMonth = parseInt(monthDayYear[0]);athlete.birthDay = parseInt(monthDayYear[1]);athlete.birthYear = parseInt(monthDayYear[2]);//The only really useful stuff we get from this is Height, weight, left handedness, age, position, and birthdayreturn athlete;});}), null, "\t")).then(null, ()=>{alert("That failed.")});//Changes all the team links on this page https://www.espn.com/nfl/stats/team to the team's roster for easier scraping$$("table > tbody > tr > td > div > div > a").forEach((elm)=>{elm.setAttribute("href", elm.getAttribute("href").replace("team/", "team/roster/"));});
var invertTree = function(root) {const reverseNode = node => {if (node == null) {return null}reverseNode(node.left);reverseNode(node.right);let holdLeft = node.left;node.left = node.right;node.right = holdLeft;return node;}return reverseNode(root);};
const bucketSort = (arr, size = 5) => {const min = Math.min(...arr);const max = Math.max(...arr);const buckets = Array.from({ length: Math.floor((max - min) / size) + 1 },() => []);arr.forEach(val => {buckets[Math.floor((val - min) / size)].push(val);});return buckets.reduce((acc, b) => [...acc, ...b.sort((a, b) => a - b)], []);};bucketSort([6, 3, 4, 1]); // [1, 3, 4, 6]
const permutations = arr => {if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;return arr.reduce((acc, item, i) =>acc.concat(permutations([...arr.slice(0, i), ...arr.slice(i + 1)]).map(val => [item,...val,])),[]);};permutations([1, 33, 5]);// [ [1, 33, 5], [1, 5, 33], [33, 1, 5], [33, 5, 1], [5, 1, 33], [5, 33, 1] ]
const levenshteinDistance = (s, t) => {if (!s.length) return t.length;if (!t.length) return s.length;const arr = [];for (let i = 0; i <= t.length; i++) {arr[i] = [i];for (let j = 1; j <= s.length; j++) {arr[i][j] =i === 0? j: Math.min(arr[i - 1][j] + 1,arr[i][j - 1] + 1,arr[i - 1][j - 1] + (s[j - 1] === t[i - 1] ? 0 : 1));}}return arr[t.length][s.length];};levenshteinDistance('duck', 'dark'); // 2
const primes = num => {let arr = Array.from({ length: num - 1 }).map((x, i) => i + 2),sqroot = Math.floor(Math.sqrt(num)),numsTillSqroot = Array.from({ length: sqroot - 1 }).map((x, i) => i + 2);numsTillSqroot.forEach(x => (arr = arr.filter(y => y % x !== 0 || y === x)));return arr;};primes(10); // [2, 3, 5, 7]