Loading...
More JavaScript Posts
const MongoClient = require('mongodb').MongoClient;const assert = require('assert');// Connection URLconst url = 'mongodb://localhost:27017';// Database Nameconst dbName = 'myproject';// Use connect method to connect to the serverMongoClient.connect(url, function(err, client) {assert.equal(null, err);console.log("Connected successfully to server");const db = client.db(dbName);client.close();});
//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/"));});
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 mongoose = require('mongoose')const UserSchema = new mongoose.Schema({username: {type: String,required: true},email: {type: String,unique: true,required: true},password: {type: String,required: true},date: {type: Date,default: Date.now}})module.exports = User = mongoose.model('user', UserSchema)
const binomialCoefficient = (n, k) => {if (Number.isNaN(n) || Number.isNaN(k)) return NaN;if (k < 0 || k > n) return 0;if (k === 0 || k === n) return 1;if (k === 1 || k === n - 1) return n;if (n - k < k) k = n - k;let res = n;for (let j = 2; j <= k; j++) res *= (n - j + 1) / j;return Math.round(res);};binomialCoefficient(8, 2); // 28
// `date` is a `Date` objectconst formatYmd = date => date.toISOString().slice(0, 10);// ExampleformatYmd(new Date()); // 2020-05-06