diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99f211d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules/ +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..391c52a --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +_In order to deploy this you'll need to use a system supporting puppeteer. Most platforms can do this with a couple of commands. For Heroku or Dokku just use this https://github.com/jontewks/puppeteer-heroku-buildpack_ + +# Prereqs + +- Have Chrome installed +- Make a Discord bot + - Go to https://discordapp.com/developers + - Make a new app and give it a unique name + - Note down your CLIENT_ID + - Go to the bot tab and click "Add Bot" + - Note down your token +- Add the bot to a Discord server (https://discordapp.com/oauth2/authorize?&client_id=ENTER_YOUR_BOT_CLIENT_ID_HERE&scope=bot&permissions=51200) + +# Running + +- Add your bot token to index.js +- yarn +- node index.js +- The bot should now appear as online on your Discord server +- Message the bot "testme" +- The fetching process should start! + +# Making the bot actually do stuff + +- In production you proably want to separate the actual card fetching and the Discord bot. Maybe even render cards every time they're saved. This can be a little complicated to setup as you'll need a job queue and a setup to handle card image requests while their corresponding jobs are queued +- Fetching a card + - Currently the bot goes to youtube.com and uses a query selector, then takes a picture of that element + - To populate a card the best way to do this is to expose a route on the frontend that is just a card (with an id on the div) and have the bot go there + - If you don't want all of your cards to be public facing you could expose expose this as a service and send a payload to it, which is used as an escaped querystring to render the card (i.e. `mintr.io/card-preview?payload=${URLEncodedPayload}`). Here is a nice SO post on this https://stackoverflow.com/questions/3308846/serialize-object-to-query-string-in-javascript-jquery +- Memoization + - You probably want to upload these files to S3. For the Discord ".attachFile" method you can simply pass a URL string and that will be attached + - The best way to use this service "on demand" without having to rerender the same card multiple times is to simply name the file based on the record \_id and updatedAt timestamp. If this exists in your S3 bucket then send that over as an attachment instanly +- Linking cards to Discord accounts + - In the Discord bot management set up an OAuth integration + - Use something like Passport in your API to make a super simple route that links your internal users to Discord IDs + - `message.author.id of a message will include the users' Discord IDs, which you simply match to their Mintr account diff --git a/index.js b/index.js new file mode 100644 index 0000000..7fa6e9f --- /dev/null +++ b/index.js @@ -0,0 +1,344 @@ +const puppeteer = require('puppeteer') +const Discord = require('discord.js') +const client = new Discord.Client() +const fs = require('fs'); + +const grabPage3 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website) + const el = await page.$('.ThumbnailLayouts__ThumbnailGrid-sc-18xwycr-0') + const buffer = await el.screenshot({ path: "./screenshot.png" }) + + await browser.close() + return buffer +} +const grabPage1 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website1) + const buffer = await page.screenshot({ path: "./screenshot.png" }) + + await browser.close() + return buffer +} +const grabPage2 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website) + const buffer = await page.screenshot({ path: "./screenshot.png" }) + + await browser.close() + return buffer +} +client.on('ready', () => { + console.log('I am ready!') +}) +//Help Command +client.on('message', async message => { + if (message.content.includes('!help')) { + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle('Help And Commands') + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription(help) + //console.log('message sent') + // Send the embed to the same channel as the message + message.channel.send(embed) + } + }) +//Call Abbreviation +client.on('message', async message => { + if (message.content.includes('!u')) { + var messagec = message.content; + var message1 = messagec.replace("!u ",""); + var sender = message.author.username + '#'+ message.author.discriminator; + const fs = require('fs') + fs.readFile('./shortcuts.json', 'utf8', function (err,data1) { + if (err) { + return console.log(err); + } + try { + var data1 = data1 + "}" + const data2 = JSON.parse(data1) + //console.log(message2) + var sendercheck = data2[sender]; + website = data2[sender][message1] + //console.log(website) + async function myfunction() { + const grabPage2 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website) + const buffer = await page.screenshot({ path: "./screenshot.png", }) + + await browser.close() + return buffer + } + }; + + (async() => { + const buffer = await grabPage2(website); + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle('Here Is Your NBA Top Shot Stats For ' + message1 + '!') + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + .attachFile(buffer) + //console.log('message sent') + // Send the embed to the same channel as the message + message.channel.send(embed) + fs.unlink("./screenshot.png",(err => { + if (err) console.log(err)})); + })(); + } + + catch (err) { + console.log(err) + } + }) + } +}) +//ADD Abbreviation +client.on('message', async message => { + if (message.content.includes('!add')&& message.content.includes(',')) { + var messagec = message.content; + //!add BB, JAMES HARDEN Layup Base Set (Series 2) + // 1. write abbreviation to file under sender name + //2. fetch the link from file + //3. save abbreviation and link to new file + + var message1 = messagec.replace("!add ",""); + var messagev = message1.split(",") + var sender = message.author.username + '#'+ message.author.discriminator; + var abbrev = messagev[0] + var alink = messagev[1] + var slink1= alink.replace(/\s+/g, ''); + //console.log(mname,slink) + const fs = require('fs') + fs.readFile('./shortcuts.json', 'utf8', function (err,data1) { + if (err) { + return console.log(err); + } + try { + var data1 = data1 + "}" + const data2 = JSON.parse(data1) + //console.log(message2) + var sendercheck = data2[sender]; + //console.log(data2) + data2[sender][abbrev] = alink + var data3 = JSON.stringify(data2) + var data3 = data3.replace(/\}([^}]*)$/,'') + fs.writeFile("./shortcuts.json", data3, (err) => { + if (err) + console.log(err);}) + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle("Abbreviation Has Been Stored, You Can Now Use It") + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + // Send the embed to the same channel as the message + message.channel.send(embed); + fs.unlink("./screenshot.png",(err => { + if (err) console.log(err)})); + } + catch(err) { + console.log(err) + const fs = require('fs'); + + let moment =` + "${sender}": { + "${abbrev}": "${alink}" + }`; + const data5 = ","+"\n" +(moment); + //console.log(data1) + fs.appendFile('./shortcuts.json', data5, (err) => { + if (err) { + console.log(err); + } + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle("Abbreviation Has Been Stored, It Can Now Be Used!") + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + // Send the embed to the same channel as the message + message.channel.send(embed); + fs.unlink("./screenshot.png",(err => { + if (err) console.log(err)})); + }); + //console.log('hello1') + } + }) +} +}) +//Store Moments for !m +client.on('message', async message => { + if (message.content.includes('!s')&& message.content.includes(',')) { + var messagec = message.content; + var message1 = messagec.replace("!s ",""); + var messagev = message1.split(",") + var mname = messagev[0] + var slink = messagev[1] + var slink1= slink.replace(/\s+/g, ''); + //console.log(mname,slink) + + + const fs = require('fs'); + + let moment =` +"${mname}": { + "website": "${slink}" +}`; + const data1 = ","+"\n" +(moment); + //console.log(data1) + fs.appendFile('./moments.json', data1, (err) => { + if (err) { + console.log(err); + } + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + console.log('hello') + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle("Moment Has Been Stored, It Can Now Be Recalled Using The !m Function!") + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + // Send the embed to the same channel as the message + message.channel.send(embed); + fs.unlink("./screenshot.png",(err => { + if (err) console.log(err)})); + }); + //console.log('hello1') + } +}) +//GET Player Cards +client.on('message', async message => { + if (message.content.includes('!p')) { + var messagec = message.content; + var message1 = messagec.replace("!p ",""); + var message2 = message1.replace(/\s+/g, '-'); + var data = require("./playerlist.json") + var website1 = data[`${message2}`].link; + website = website1.replace(/\s+/g, '-'); + async function myfunction() { + const grabPage3 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website) + const buffer = await page.screenshot({ path: "./screenshot.png", }) + + await browser.close() + return buffer + } + }; + + (async() => { + const buffer = await grabPage3(website); + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle('Here Is Your NBA Top Shot Stats For ' + message1 + '!') + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + .attachFile(buffer) + //console.log('message sent') + // Send the embed to the same channel as the message + message.channel.send(embed) + fs.unlink("./screenshot.png",(err => { + if (err) console.log()})); + })(); +} +}) +//GET SPECIFIC MOMENT +client.on('message', async message => { + if (message.content.includes('!m')) { + var messagec = message.content; + var message1 = messagec.replace("!m ",""); + const fs = require('fs') + fs.readFile('./moments.json', 'utf8', function (err,data1) { + if (err) { + return console.log(err); + } + //console.log(data1); + var data = data1 +"}" + const message2 = JSON.parse(data) + //console.log(message2) + website1 = message2[message1].website; + console.log(website1) + async function myfunction() { + const grabPage1 = async () => { + const browser = await puppeteer.launch() + const page = await browser.newPage() + await page.goto(website1) + const buffer = await page.screenshot({ path: "./screenshot.png" }) + + await browser.close() + return buffer + } + }; + + // Here we wait for the myfunction to finish + // and then returns a promise that'll be waited for aswell + // It's useless to wait the myfunction to finish before to return + // we can simply returns a promise that will be resolved later + + // Call start + (async() => { + const buffer = await grabPage1(website1); + + // We can create embeds using the MessageEmbed constructor + // Read more about all that you can do with the constructor + // over at https://discord.js.org/#/docs/main/stable/class/RichEmbed + + const embed = new Discord.RichEmbed() + // Set the title of the field + .setTitle('Here Is Your NBA Top Shot Stats For ' + message1 + '!') + // Set the color of the embed + .setColor(0xff0000) + // Set the main content of the embed + .setDescription('Brought To You By The NBA Top Shot Pros') + .attachFile(buffer) + //console.log('message sent') + // Send the embed to the same channel as the message + message.channel.send(embed) + fs.unlink("./screenshot.png",(err => { + if (err) console.log(err)})); + })(); + }) + } +}); + + + +client.login('ODE3NTI5NzkxNzcwMDAxNDU4.YEK18w._oWxDlYeZHFN582JVl8x_ru5RyI') \ No newline at end of file diff --git a/moments.json b/moments.json new file mode 100644 index 0000000..513e32d --- /dev/null +++ b/moments.json @@ -0,0 +1,29 @@ +{ + +"MIKE CONLEY Jump Shot Base Set (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+22b96d87-4878-42a7-a77b-46ca78e6d8b7" +}, + +"BEN SIMMONS Dunk Base Set (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+10357d57-4fab-497b-b220-423b77847b87?serialNumber=14764" +}, + +"BRADLEY BEAL Layup Seeing Stars (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/122b048d-585e-4c63-8275-c23949576fd6+0445c38e-c13c-44b4-b3aa-e2c21eca7407?serialNumber=3733" +}, + +"THÉO MALEDON Jump Shot Rising Stars (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/f493db4a-a775-4d6e-be8a-56fae509a92d+f27b635c-c224-4e6a-b5cc-9e946a4a6f1e" +}, + +"JAMES HARDEN Layup Base Set (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+ce5b9ba2-d1dc-4b7f-a5d8-ccb1e02b068f" +}, + +"RUDY GAY Dunk Base Set (Series 1)": { + "website": " https://www.nbatopshot.com/moment/DillonMercz+4d8c971f-e1e8-4a26-8895-0fce748069ba" +}, + +"KYLE ANDERSON Dunk Base Set (Series 2)": { + "website": " https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+a3cd9d63-7ca6-41c6-b8ee-a10733d02a96" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3d07b08 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,365 @@ +{ + "name": "discord-puppet-master", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "discord.js": { + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.6.4.tgz", + "integrity": "sha512-cK6rH1PuGjSjpmEQbnpuTxq1Yv8B89SotyKUFcr4RhnsiZnfBfDOev7DD7v5vhtEyyj51NuMWFoRJzgy/m08Uw==", + "requires": { + "long": "^4.0.0", + "prism-media": "^0.0.4", + "snekfetch": "^3.6.4", + "tweetnacl": "^1.0.0", + "ws": "^6.0.0" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "prism-media": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.4.tgz", + "integrity": "sha512-dG2w7WtovUa4SiYTdWn9H8Bd4JNdei2djtkP/Bk9fXq81j5Q15ZPHYSwhUVvBRbp5zMkGtu0Yk62HuMcly0pRw==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "puppeteer": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", + "requires": { + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^2.2.1", + "mime": "^2.0.3", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "snekfetch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz", + "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yarn": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.10.tgz", + "integrity": "sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3222c65 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "discord-puppet-master", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "discord.js": "^11.4.2", + "fs": "0.0.1-security", + "puppeteer": "^1.9.0", + "yarn": "^1.22.10" + } +} diff --git a/playerlist.json b/playerlist.json new file mode 100644 index 0000000..ac362bb --- /dev/null +++ b/playerlist.json @@ -0,0 +1,1535 @@ + { + "precious-achiuwa": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630173" + }, + "jaylen-adams": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629121" + }, + "steven-adams": { + "link": "https://www.nbatopshot.com/search?byPlayers=203500" + }, + "bam-adebayo": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628389" + }, + "lamarcus-aldridge": { + "link": "https://www.nbatopshot.com/search?byPlayers=200746" + }, + "ty-shon-alexander": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630234" + }, + "nickeil-alexander-walker": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629638" + }, + "grayson-allen": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628960" + }, + "jarrett-allen": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628386" + }, + "al-farouq-aminu": { + "link": "https://www.nbatopshot.com/search?byPlayers=202329" + }, + "kyle-anderson": { + "link": "https://www.nbatopshot.com/search?byPlayers=203937" + }, + "giannis-antetokounmpo": { + "link": "https://www.nbatopshot.com/search?byPlayers=203507" + }, + "kostas-antetokounmpo": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628961" + }, + "thanasis-antetokounmpo": { + "link": "https://www.nbatopshot.com/search?byPlayers=203648" + }, + "carmelo-anthony": { + "link": "https://www.nbatopshot.com/search?byPlayers=2546" + }, + "cole-anthony": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630175" + }, + "og-anunoby": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628384" + }, + "ryan-arcidiacono": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627853" + }, + "trevor-ariza": { + "link": "https://www.nbatopshot.com/search?byPlayers=2772" + }, + "dj-augustin": { + "link": "https://www.nbatopshot.com/search?byPlayers=201571" + }, + "deni-avdija": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630166" + }, + "deandre-ayton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629028" + }, + "udoka-azubuike": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628962" + }, + "dwayne-bacon": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628407" + }, + "marvin-bagley-iii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628963" + }, + "lamelo-ball": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630163" + }, + "lonzo-ball": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628366" + }, + "mo-bamba": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628964" + }, + "desmond-bane": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630217" + }, + "harrison-barnes": { + "link": "https://www.nbatopshot.com/search?byPlayers=203084" + }, + "rj-barrett": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629628" + }, + "will-barton": { + "link": "https://www.nbatopshot.com/search?byPlayers=203115" + }, + "keita-bates-diop": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628966" + }, + "nicolas-batum": { + "link": "https://www.nbatopshot.com/search?byPlayers=201587" + }, + "aron-baynes": { + "link": "https://www.nbatopshot.com/search?byPlayers=203382" + }, + "kent-bazemore": { + "link": "https://www.nbatopshot.com/search?byPlayers=203145" + }, + "darius-bazley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629647" + }, + "bradley-beal": { + "link": "https://www.nbatopshot.com/search?byPlayers=203078" + }, + "malik-beasley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627736" + }, + "jordan-bell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628395" + }, + "deandre-bembry": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627761" + }, + "davis-bertans": { + "link": "https://www.nbatopshot.com/search?byPlayers=202722" + }, + "patrick-beverley": { + "link": "https://www.nbatopshot.com/search?byPlayers=201976" + }, + "saddiq-bey": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630180" + }, + "tyler-bey": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630189" + }, + "khem-birch": { + "link": "https://www.nbatopshot.com/search?byPlayers=203920" + }, + "goga-bitadze": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629048" + }, + "bismack-biyombo": { + "link": "https://www.nbatopshot.com/search?byPlayers=202687" + }, + "nemanja-bjelica": { + "link": "https://www.nbatopshot.com/search?byPlayers=202357" + }, + "eric-bledsoe": { + "link": "https://www.nbatopshot.com/search?byPlayers=202339" + }, + "keljin-blevins": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629833" + }, + "bogdan-bogdanovic": { + "link": "https://www.nbatopshot.com/search?byPlayers=203992" + }, + "bojan-bogdanovic": { + "link": "https://www.nbatopshot.com/search?byPlayers=202711" + }, + "bol-bol": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629626" + }, + "marques-bolden": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629716" + }, + "jordan-bone": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629648" + }, + "isaac-bonga": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629067" + }, + "devin-booker": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626164" + }, + "chris-boucher": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628449" + }, + "brian-bowen-ii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628968" + }, + "avery-bradley": { + "link": "https://www.nbatopshot.com/search?byPlayers=202340" + }, + "tony-bradley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628396" + }, + "jarrell-brantley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629714" + }, + "ignas-brazdeikis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629649" + }, + "mikal-bridges": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628969" + }, + "miles-bridges": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628970" + }, + "malcolm-brogdon": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627763" + }, + "dillon-brooks": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628415" + }, + "bruce-brown": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628971" + }, + "jaylen-brown": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627759" + }, + "moses-brown": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629650" + }, + "sterling-brown": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628425" + }, + "troy-brown-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628972" + }, + "jalen-brunson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628973" + }, + "thomas-bryant": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628418" + }, + "reggie-bullock": { + "link": "https://www.nbatopshot.com/search?byPlayers=203493" + }, + "trey-burke": { + "link": "https://www.nbatopshot.com/search?byPlayers=203504" + }, + "alec-burks": { + "link": "https://www.nbatopshot.com/search?byPlayers=202692" + }, + "jimmy-butler": { + "link": "https://www.nbatopshot.com/search?byPlayers=202710" + }, + "bruno-caboclo": { + "link": "https://www.nbatopshot.com/search?byPlayers=203998" + }, + "devontae-cacok": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629719" + }, + "kentavious-caldwell-pope": { + "link": "https://www.nbatopshot.com/search?byPlayers=203484" + }, + "facundo-campazzo": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630267" + }, + "vlatko-cancar": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628427" + }, + "clint-capela": { + "link": "https://www.nbatopshot.com/search?byPlayers=203991" + }, + "vernon-carey-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630176" + }, + "jevon-carter": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628975" + }, + "wendell-carter-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628976" + }, + "michael-carter-williams": { + "link": "https://www.nbatopshot.com/search?byPlayers=203487" + }, + "alex-caruso": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627936" + }, + "willie-cauley-stein": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626161" + }, + "chris-chiozza": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629185" + }, + "marquese-chriss": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627737" + }, + "gary-clark": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629109" + }, + "brandon-clarke": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629634" + }, + "jordan-clarkson": { + "link": "https://www.nbatopshot.com/search?byPlayers=203903" + }, + "nicolas-claxton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629651" + }, + "amir-coffey": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629599" + }, + "john-collins": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628381" + }, + "zach-collins": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628380" + }, + "mike-conley": { + "link": "https://www.nbatopshot.com/search?byPlayers=201144" + }, + "pat-connaughton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626192" + }, + "quinn-cook": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626188" + }, + "tyler-cook": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629076" + }, + "demarcus-cousins": { + "link": "https://www.nbatopshot.com/search?byPlayers=202326" + }, + "robert-covington": { + "link": "https://www.nbatopshot.com/search?byPlayers=203496" + }, + "torrey-craig": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628470" + }, + "jae-crowder": { + "link": "https://www.nbatopshot.com/search?byPlayers=203109" + }, + "jarrett-culver": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629633" + }, + "seth-curry": { + "link": "https://www.nbatopshot.com/search?byPlayers=203552" + }, + "stephen-curry": { + "link": "https://www.nbatopshot.com/search?byPlayers=201939" + }, + "nate-darling": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630268" + }, + "anthony-davis": { + "link": "https://www.nbatopshot.com/search?byPlayers=203076" + }, + "ed-davis": { + "link": "https://www.nbatopshot.com/search?byPlayers=202334" + }, + "terence-davis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629056" + }, + "demar-derozan": { + "link": "https://www.nbatopshot.com/search?byPlayers=201942" + }, + "matthew-dellavedova": { + "link": "https://www.nbatopshot.com/search?byPlayers=203521" + }, + "donte-divincenzo": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628978" + }, + "mamadi-diakite": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629603" + }, + "hamidou-diallo": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628977" + }, + "gorgui-dieng": { + "link": "https://www.nbatopshot.com/search?byPlayers=203476" + }, + "spencer-dinwiddie": { + "link": "https://www.nbatopshot.com/search?byPlayers=203915" + }, + "luka-doncic": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629029" + }, + "luguentz-dort": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629652" + }, + "damyean-dotson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628422" + }, + "devon-dotson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629653" + }, + "sekou-doumbouya": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629635" + }, + "pj-dozier": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628408" + }, + "goran-dragic": { + "link": "https://www.nbatopshot.com/search?byPlayers=201609" + }, + "andre-drummond": { + "link": "https://www.nbatopshot.com/search?byPlayers=203083" + }, + "jared-dudley": { + "link": "https://www.nbatopshot.com/search?byPlayers=201162" + }, + "kris-dunn": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627739" + }, + "kevin-durant": { + "link": "https://www.nbatopshot.com/search?byPlayers=201142" + }, + "anthony-edwards": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630162" + }, + "carsen-edwards": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629035" + }, + "cj-elleby": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629604" + }, + "wayne-ellington": { + "link": "https://www.nbatopshot.com/search?byPlayers=201961" + }, + "joel-embiid": { + "link": "https://www.nbatopshot.com/search?byPlayers=203954" + }, + "james-ennis-iii": { + "link": "https://www.nbatopshot.com/search?byPlayers=203516" + }, + "drew-eubanks": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629234" + }, + "dante-exum": { + "link": "https://www.nbatopshot.com/search?byPlayers=203957" + }, + "tacko-fall": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629605" + }, + "derrick-favors": { + "link": "https://www.nbatopshot.com/search?byPlayers=202324" + }, + "cristiano-felicio": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626245" + }, + "terrance-ferguson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628390" + }, + "bruno-fernando": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628981" + }, + "yogi-ferrell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627812" + }, + "dorian-finney-smith": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627827" + }, + "malachi-flynn": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630201" + }, + "bryn-forbes": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627854" + }, + "trent-forrest": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630235" + }, + "evan-fournier": { + "link": "https://www.nbatopshot.com/search?byPlayers=203095" + }, + "deaaron-fox": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628368" + }, + "tim-frazier": { + "link": "https://www.nbatopshot.com/search?byPlayers=204025" + }, + "markelle-fultz": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628365" + }, + "wenyen-gabriel": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629117" + }, + "daniel-gafford": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629655" + }, + "danilo-gallinari": { + "link": "https://www.nbatopshot.com/search?byPlayers=201568" + }, + "langston-galloway": { + "link": "https://www.nbatopshot.com/search?byPlayers=204038" + }, + "darius-garland": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629636" + }, + "marc-gasol": { + "link": "https://www.nbatopshot.com/search?byPlayers=201188" + }, + "rudy-gay": { + "link": "https://www.nbatopshot.com/search?byPlayers=200752" + }, + "paul-george": { + "link": "https://www.nbatopshot.com/search?byPlayers=202331" + }, + "taj-gibson": { + "link": "https://www.nbatopshot.com/search?byPlayers=201959" + }, + "harry-giles-iii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628385" + }, + "shai-gilgeous-alexander": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628983" + }, + "anthony-gill": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630264" + }, + "rudy-gobert": { + "link": "https://www.nbatopshot.com/search?byPlayers=203497" + }, + "brandon-goodwin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629164" + }, + "aaron-gordon": { + "link": "https://www.nbatopshot.com/search?byPlayers=203932" + }, + "eric-gordon": { + "link": "https://www.nbatopshot.com/search?byPlayers=201569" + }, + "devonte-graham": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628984" + }, + "jerami-grant": { + "link": "https://www.nbatopshot.com/search?byPlayers=203924" + }, + "danny-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=201980" + }, + "draymond-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=203110" + }, + "jamychal-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=203210" + }, + "javonte-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629750" + }, + "jeff-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=201145" + }, + "josh-green": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630182" + }, + "blake-griffin": { + "link": "https://www.nbatopshot.com/search?byPlayers=201933" + }, + "kyle-guy": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629657" + }, + "rui-hachimura": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629060" + }, + "ashton-hagans": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630204" + }, + "tyrese-haliburton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630169" + }, + "donta-hall": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629743" + }, + "josh-hall": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630221" + }, + "rj-hampton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630181" + }, + "tim-hardaway-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=203501" + }, + "james-harden": { + "link": "https://www.nbatopshot.com/search?byPlayers=201935" + }, + "maurice-harkless": { + "link": "https://www.nbatopshot.com/search?byPlayers=203090" + }, + "jared-harper": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629607" + }, + "montrezl-harrell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626149" + }, + "gary-harris": { + "link": "https://www.nbatopshot.com/search?byPlayers=203914" + }, + "jalen-harris": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630223" + }, + "joe-harris": { + "link": "https://www.nbatopshot.com/search?byPlayers=203925" + }, + "tobias-harris": { + "link": "https://www.nbatopshot.com/search?byPlayers=202699" + }, + "shaquille-harrison": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627885" + }, + "josh-hart": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628404" + }, + "isaiah-hartenstein": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628392" + }, + "udonis-haslem": { + "link": "https://www.nbatopshot.com/search?byPlayers=2617" + }, + "jaxson-hayes": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629637" + }, + "killian-hayes": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630165" + }, + "gordon-hayward": { + "link": "https://www.nbatopshot.com/search?byPlayers=202330" + }, + "juancho-hernangomez": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627823" + }, + "willy-hernangomez": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626195" + }, + "tyler-herro": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629639" + }, + "buddy-hield": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627741" + }, + "george-hill": { + "link": "https://www.nbatopshot.com/search?byPlayers=201588" + }, + "solomon-hill": { + "link": "https://www.nbatopshot.com/search?byPlayers=203524" + }, + "nate-hinton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630207" + }, + "aaron-holiday": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628988" + }, + "jrue-holiday": { + "link": "https://www.nbatopshot.com/search?byPlayers=201950" + }, + "justin-holiday": { + "link": "https://www.nbatopshot.com/search?byPlayers=203200" + }, + "richaun-holmes": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626158" + }, + "rodney-hood": { + "link": "https://www.nbatopshot.com/search?byPlayers=203918" + }, + "al-horford": { + "link": "https://www.nbatopshot.com/search?byPlayers=201143" + }, + "talen-horton-tucker": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629659" + }, + "danuel-house-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627863" + }, + "dwight-howard": { + "link": "https://www.nbatopshot.com/search?byPlayers=2730" + }, + "markus-howard": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630210" + }, + "kevin-huerter": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628989" + }, + "elijah-hughes": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630190" + }, + "deandre-hunter": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629631" + }, + "chandler-hutchison": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628990" + }, + "serge-ibaka": { + "link": "https://www.nbatopshot.com/search?byPlayers=201586" + }, + "andre-iguodala": { + "link": "https://www.nbatopshot.com/search?byPlayers=2738" + }, + "joe-ingles": { + "link": "https://www.nbatopshot.com/search?byPlayers=204060" + }, + "brandon-ingram": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627742" + }, + "kyrie-irving": { + "link": "https://www.nbatopshot.com/search?byPlayers=202681" + }, + "jonathan-isaac": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628371" + }, + "wes-iwundu": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628411" + }, + "frank-jackson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628402" + }, + "josh-jackson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628367" + }, + "justin-jackson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628382" + }, + "reggie-jackson": { + "link": "https://www.nbatopshot.com/search?byPlayers=202704" + }, + "jaren-jackson-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628991" + }, + "justin-james": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629713" + }, + "lebron-james": { + "link": "https://www.nbatopshot.com/search?byPlayers=2544" + }, + "daquan-jeffries": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629610" + }, + "ty-jerome": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629660" + }, + "isaiah-joe": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630198" + }, + "cameron-johnson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629661" + }, + "james-johnson": { + "link": "https://www.nbatopshot.com/search?byPlayers=201949" + }, + "keldon-johnson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629640" + }, + "stanley-johnson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626169" + }, + "tyler-johnson": { + "link": "https://www.nbatopshot.com/search?byPlayers=204020" + }, + "nikola-jokic": { + "link": "https://www.nbatopshot.com/search?byPlayers=203999" + }, + "damian-jones": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627745" + }, + "mason-jones": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630222" + }, + "tre-jones": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630200" + }, + "tyus-jones": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626145" + }, + "derrick-jones-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627884" + }, + "deandre-jordan": { + "link": "https://www.nbatopshot.com/search?byPlayers=201599" + }, + "cory-joseph": { + "link": "https://www.nbatopshot.com/search?byPlayers=202709" + }, + "mfiondu-kabengele": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629662" + }, + "frank-kaminsky": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626163" + }, + "enes-kanter": { + "link": "https://www.nbatopshot.com/search?byPlayers=202683" + }, + "luke-kennard": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628379" + }, + "maxi-kleber": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628467" + }, + "nathan-knight": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630233" + }, + "kevin-knox-ii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628995" + }, + "john-konchar": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629723" + }, + "furkan-korkmaz": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627788" + }, + "luke-kornet": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628436" + }, + "rodions-kurucs": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629066" + }, + "kyle-kuzma": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628398" + }, + "zach-lavine": { + "link": "https://www.nbatopshot.com/search?byPlayers=203897" + }, + "jeremy-lamb": { + "link": "https://www.nbatopshot.com/search?byPlayers=203087" + }, + "romeo-langford": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629641" + }, + "jake-layman": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627774" + }, + "caris-levert": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627747" + }, + "jalen-lecque": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629665" + }, + "damion-lee": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627814" + }, + "saben-lee": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630240" + }, + "alex-len": { + "link": "https://www.nbatopshot.com/search?byPlayers=203458" + }, + "kawhi-leonard": { + "link": "https://www.nbatopshot.com/search?byPlayers=202695" + }, + "meyers-leonard": { + "link": "https://www.nbatopshot.com/search?byPlayers=203086" + }, + "kira-lewis-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630184" + }, + "damian-lillard": { + "link": "https://www.nbatopshot.com/search?byPlayers=203081" + }, + "nassir-little": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629642" + }, + "kevon-looney": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626172" + }, + "brook-lopez": { + "link": "https://www.nbatopshot.com/search?byPlayers=201572" + }, + "robin-lopez": { + "link": "https://www.nbatopshot.com/search?byPlayers=201577" + }, + "kevin-love": { + "link": "https://www.nbatopshot.com/search?byPlayers=201567" + }, + "kyle-lowry": { + "link": "https://www.nbatopshot.com/search?byPlayers=200768" + }, + "timothe-luwawu-cabarrot": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627789" + }, + "trey-lyles": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626168" + }, + "will-magnay": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630266" + }, + "thon-maker": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627748" + }, + "theo-maledon": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630177" + }, + "karim-mane": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630211" + }, + "terance-mann": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629611" + }, + "nico-mannion": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630185" + }, + "boban-marjanovic": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626246" + }, + "lauri-markkanen": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628374" + }, + "naji-marshall": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630230" + }, + "caleb-martin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628997" + }, + "cody-martin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628998" + }, + "kelan-martin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629103" + }, + "kenyon-martin-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630231" + }, + "frank-mason": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628412" + }, + "garrison-mathews": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629726" + }, + "dakota-mathias": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629751" + }, + "wesley-matthews": { + "link": "https://www.nbatopshot.com/search?byPlayers=202083" + }, + "tyrese-maxey": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630178" + }, + "skylar-mays": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630219" + }, + "patrick-mccaw": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627775" + }, + "cj-mccollum": { + "link": "https://www.nbatopshot.com/search?byPlayers=203468" + }, + "tj-mcconnell": { + "link": "https://www.nbatopshot.com/search?byPlayers=204456" + }, + "jaden-mcdaniels": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630183" + }, + "jalen-mcdaniels": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629667" + }, + "doug-mcdermott": { + "link": "https://www.nbatopshot.com/search?byPlayers=203926" + }, + "sean-mcdermott": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630253" + }, + "javale-mcgee": { + "link": "https://www.nbatopshot.com/search?byPlayers=201580" + }, + "rodney-mcgruder": { + "link": "https://www.nbatopshot.com/search?byPlayers=203585" + }, + "alfonzo-mckinnie": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628035" + }, + "jordan-mclaughlin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629162" + }, + "ben-mclemore": { + "link": "https://www.nbatopshot.com/search?byPlayers=203463" + }, + "nicolo-melli": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629740" + }, + "deanthony-melton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629001" + }, + "sam-merrill": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630241" + }, + "chimezie-metu": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629002" + }, + "khris-middleton": { + "link": "https://www.nbatopshot.com/search?byPlayers=203114" + }, + "darius-miller": { + "link": "https://www.nbatopshot.com/search?byPlayers=203121" + }, + "patty-mills": { + "link": "https://www.nbatopshot.com/search?byPlayers=201988" + }, + "paul-millsap": { + "link": "https://www.nbatopshot.com/search?byPlayers=200794" + }, + "shake-milton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629003" + }, + "donovan-mitchell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628378" + }, + "adam-mokoka": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629690" + }, + "malik-monk": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628370" + }, + "etwaun-moore": { + "link": "https://www.nbatopshot.com/search?byPlayers=202734" + }, + "ja-morant": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629630" + }, + "juwan-morgan": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629752" + }, + "markieff-morris": { + "link": "https://www.nbatopshot.com/search?byPlayers=202693" + }, + "monte-morris": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628420" + }, + "marcus-morris-sr": { + "link": "https://www.nbatopshot.com/search?byPlayers=202694" + }, + "mychal-mulder": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628539" + }, + "dejounte-murray": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627749" + }, + "jamal-murray": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627750" + }, + "mike-muscala": { + "link": "https://www.nbatopshot.com/search?byPlayers=203488" + }, + "svi-mykhailiuk": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629004" + }, + "abdel-nader": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627846" + }, + "larry-nance-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626204" + }, + "aaron-nesmith": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630174" + }, + "raul-neto": { + "link": "https://www.nbatopshot.com/search?byPlayers=203526" + }, + "georges-niang": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627777" + }, + "zeke-nnaji": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630192" + }, + "nerlens-noel": { + "link": "https://www.nbatopshot.com/search?byPlayers=203457" + }, + "jaylen-nowell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629669" + }, + "frank-ntilikina": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628373" + }, + "kendrick-nunn": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629134" + }, + "jusuf-nurkic": { + "link": "https://www.nbatopshot.com/search?byPlayers=203994" + }, + "david-nwaba": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628021" + }, + "jordan-nwora": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629670" + }, + "royce-oneale": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626220" + }, + "semi-ojeleye": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628400" + }, + "jahlil-okafor": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626143" + }, + "chuma-okeke": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629643" + }, + "josh-okogie": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629006" + }, + "onyeka-okongwu": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630168" + }, + "isaac-okoro": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630171" + }, + "kz-okpala": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629644" + }, + "victor-oladipo": { + "link": "https://www.nbatopshot.com/search?byPlayers=203506" + }, + "kelly-olynyk": { + "link": "https://www.nbatopshot.com/search?byPlayers=203482" + }, + "miye-oni": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629671" + }, + "cedi-osman": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626224" + }, + "daniel-oturu": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630187" + }, + "kelly-oubre-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626162" + }, + "jabari-parker": { + "link": "https://www.nbatopshot.com/search?byPlayers=203953" + }, + "eric-paschall": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629672" + }, + "anzejs-pasecniks": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628394" + }, + "patrick-patterson": { + "link": "https://www.nbatopshot.com/search?byPlayers=202335" + }, + "justin-patton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628383" + }, + "chris-paul": { + "link": "https://www.nbatopshot.com/search?byPlayers=101108" + }, + "cameron-payne": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626166" + }, + "elfrid-payton": { + "link": "https://www.nbatopshot.com/search?byPlayers=203901" + }, + "norvel-pelle": { + "link": "https://www.nbatopshot.com/search?byPlayers=203658" + }, + "reggie-perry": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629617" + }, + "theo-pinson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629033" + }, + "mason-plumlee": { + "link": "https://www.nbatopshot.com/search?byPlayers=203486" + }, + "jakob-poeltl": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627751" + }, + "vincent-poirier": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629738" + }, + "aleksej-pokusevski": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630197" + }, + "jordan-poole": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629673" + }, + "jontay-porter": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629007" + }, + "kevin-porter-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629645" + }, + "michael-porter-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629008" + }, + "otto-porter-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=203490" + }, + "bobby-portis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626171" + }, + "kristaps-porzingis": { + "link": "https://www.nbatopshot.com/search?byPlayers=204001" + }, + "dwight-powell": { + "link": "https://www.nbatopshot.com/search?byPlayers=203939" + }, + "norman-powell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626181" + }, + "taurean-prince": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627752" + }, + "payton-pritchard": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630202" + }, + "immanuel-quickley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630193" + }, + "jahmius-ramsey": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630186" + }, + "chasson-randle": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626184" + }, + "julius-randle": { + "link": "https://www.nbatopshot.com/search?byPlayers=203944" + }, + "cam-reddish": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629629" + }, + "jj-redick": { + "link": "https://www.nbatopshot.com/search?byPlayers=200755" + }, + "paul-reed": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630194" + }, + "naz-reid": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629675" + }, + "nick-richards": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630208" + }, + "josh-richardson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626196" + }, + "grant-riller": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630203" + }, + "austin-rivers": { + "link": "https://www.nbatopshot.com/search?byPlayers=203085" + }, + "andre-roberson": { + "link": "https://www.nbatopshot.com/search?byPlayers=203460" + }, + "duncan-robinson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629130" + }, + "jerome-robinson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629010" + }, + "mitchell-robinson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629011" + }, + "glenn-robinson-iii": { + "link": "https://www.nbatopshot.com/search?byPlayers=203922" + }, + "isaiah-roby": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629676" + }, + "rajon-rondo": { + "link": "https://www.nbatopshot.com/search?byPlayers=200765" + }, + "derrick-rose": { + "link": "https://www.nbatopshot.com/search?byPlayers=201565" + }, + "terrence-ross": { + "link": "https://www.nbatopshot.com/search?byPlayers=203082" + }, + "terry-rozier": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626179" + }, + "ricky-rubio": { + "link": "https://www.nbatopshot.com/search?byPlayers=201937" + }, + "dangelo-russell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626156" + }, + "domantas-sabonis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627734" + }, + "luka-samanic": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629677" + }, + "jakarr-sampson": { + "link": "https://www.nbatopshot.com/search?byPlayers=203960" + }, + "dario-saric": { + "link": "https://www.nbatopshot.com/search?byPlayers=203967" + }, + "tomas-satoransky": { + "link": "https://www.nbatopshot.com/search?byPlayers=203107" + }, + "dennis-schroder": { + "link": "https://www.nbatopshot.com/search?byPlayers=203471" + }, + "mike-scott": { + "link": "https://www.nbatopshot.com/search?byPlayers=203118" + }, + "jay-scrubb": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630206" + }, + "collin-sexton": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629012" + }, + "landry-shamet": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629013" + }, + "iman-shumpert": { + "link": "https://www.nbatopshot.com/search?byPlayers=202697" + }, + "pascal-siakam": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627783" + }, + "chris-silva": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629735" + }, + "ben-simmons": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627732" + }, + "anfernee-simons": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629014" + }, + "deividas-sirvydis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629686" + }, + "alen-smailagic": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629346" + }, + "marcus-smart": { + "link": "https://www.nbatopshot.com/search?byPlayers=203935" + }, + "ish-smith": { + "link": "https://www.nbatopshot.com/search?byPlayers=202397" + }, + "jalen-smith": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630188" + }, + "dennis-smith-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628372" + }, + "tony-snell": { + "link": "https://www.nbatopshot.com/search?byPlayers=203503" + }, + "ray-spalding": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629034" + }, + "cassius-stanley": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630199" + }, + "lamar-stevens": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630205" + }, + "isaiah-stewart": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630191" + }, + "max-strus": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629622" + }, + "edmond-sumner": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628410" + }, + "jaesean-tate": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630256" + }, + "jayson-tatum": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628369" + }, + "jeff-teague": { + "link": "https://www.nbatopshot.com/search?byPlayers=201952" + }, + "garrett-temple": { + "link": "https://www.nbatopshot.com/search?byPlayers=202066" + }, + "tyrell-terry": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630179" + }, + "daniel-theis": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628464" + }, + "brodric-thomas": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630271" + }, + "matt-thomas": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629744" + }, + "klay-thompson": { + "link": "https://www.nbatopshot.com/search?byPlayers=202691" + }, + "tristan-thompson": { + "link": "https://www.nbatopshot.com/search?byPlayers=202684" + }, + "sindarius-thornwell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628414" + }, + "matisse-thybulle": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629680" + }, + "killian-tillie": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629681" + }, + "xavier-tillman": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630214" + }, + "obi-toppin": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630167" + }, + "juan-toscano-anderson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629308" + }, + "karl-anthony-towns": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626157" + }, + "gary-trent-jr": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629018" + }, + "pj-tucker": { + "link": "https://www.nbatopshot.com/search?byPlayers=200782" + }, + "rayjon-tucker": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629730" + }, + "myles-turner": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626167" + }, + "jonas-valanciunas": { + "link": "https://www.nbatopshot.com/search?byPlayers=202685" + }, + "denzel-valentine": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627756" + }, + "fred-vanvleet": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627832" + }, + "jarred-vanderbilt": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629020" + }, + "devin-vassell": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630170" + }, + "gabe-vincent": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629216" + }, + "noah-vonleh": { + "link": "https://www.nbatopshot.com/search?byPlayers=203943" + }, + "nikola-vucevic": { + "link": "https://www.nbatopshot.com/search?byPlayers=202696" + }, + "dean-wade": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629731" + }, + "moritz-wagner": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629021" + }, + "kemba-walker": { + "link": "https://www.nbatopshot.com/search?byPlayers=202689" + }, + "lonnie-walker-iv": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629022" + }, + "john-wall": { + "link": "https://www.nbatopshot.com/search?byPlayers=202322" + }, + "brad-wanamaker": { + "link": "https://www.nbatopshot.com/search?byPlayers=202954" + }, + "tj-warren": { + "link": "https://www.nbatopshot.com/search?byPlayers=203933" + }, + "pj-washington": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629023" + }, + "yuta-watanabe": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629139" + }, + "tremont-waters": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629682" + }, + "paul-watson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628778" + }, + "quinndary-weatherspoon": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629683" + }, + "russell-westbrook": { + "link": "https://www.nbatopshot.com/search?byPlayers=201566" + }, + "coby-white": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629632" + }, + "derrick-white": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628401" + }, + "hassan-whiteside": { + "link": "https://www.nbatopshot.com/search?byPlayers=202355" + }, + "greg-whittington": { + "link": "https://www.nbatopshot.com/search?byPlayers=204222" + }, + "andrew-wiggins": { + "link": "https://www.nbatopshot.com/search?byPlayers=203952" + }, + "grant-williams": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629684" + }, + "kenrich-williams": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629026" + }, + "lou-williams": { + "link": "https://www.nbatopshot.com/search?byPlayers=101150" + }, + "patrick-williams": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630172" + }, + "robert-williams-iii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629057" + }, + "zion-williamson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629627" + }, + "dj-wilson": { + "link": "https://www.nbatopshot.com/search?byPlayers=1628391" + }, + "dylan-windler": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629685" + }, + "justise-winslow": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626159" + }, + "cassius-winston": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630216" + }, + "james-wiseman": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630164" + }, + "christian-wood": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626174" + }, + "robert-woodard-ii": { + "link": "https://www.nbatopshot.com/search?byPlayers=1630218" + }, + "delon-wright": { + "link": "https://www.nbatopshot.com/search?byPlayers=1626153" + }, + "thaddeus-young": { + "link": "https://www.nbatopshot.com/search?byPlayers=201152" + }, + "trae-young": { + "link": "https://www.nbatopshot.com/search?byPlayers=1629027" + }, + "cody-zeller": { + "link": "https://www.nbatopshot.com/search?byPlayers=203469" + }, + "ivica-zubac": { + "link": "https://www.nbatopshot.com/search?byPlayers=1627826" + } + } \ No newline at end of file diff --git a/shortcuts.json b/shortcuts.json new file mode 100644 index 0000000..3fe5f3e --- /dev/null +++ b/shortcuts.json @@ -0,0 +1,5 @@ +{"Dillon_Marks#6810":{"BB":"https://www.nbatopshot.com/listings/p2p/122b048d-585e-4c63-8275-c23949576fd6+0445c38e-c13c-44b4-b3aa-e2c21eca7407?serialNumber=3733","RD":" https://www.nbatopshot.com/listings/p2p/7b797690-5b53-45a7-b972-bd2d5152654a+ffe420ae-a89c-4c21-b080-086172c5277d?serialNumber=1390","kyle":" https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+a3cd9d63-7ca6-41c6-b8ee-a10733d02a96","!p = Get The moments of a player. Player name all lower case. Ex: !p lebron james\n\n!s = Store a Specific Moment. Easiest is to just copy straight from the website. The moment name has to be seperated by a comma. EX: !s KYLE ANDERSON Dunk Base Set (Series 2)":" https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+a3cd9d63-7ca6-41c6-b8ee-a10733d02a96\n\n!m = recall the moment stored using !s command. EX: KYLE ANDERSON Dunk Base Set (Series 2)\n\n= Add an abbreviation for a moment","KA":" https://www.nbatopshot.com/listings/p2p/208ae30a-a4fe-42d4-9e51-e6fd1ad2a7a9+a3cd9d63-7ca6-41c6-b8ee-a10733d02a96"},"Misfitz_Love#5895":{"BS":" BEN SIMMONS Dunk Base Set (Series 2)","BBBBBBBB":" BEN SIMMONS Dunk Base Set (Series 2)"}, + + "BrennanClay#5549": { + "DJ": " https://www.nbatopshot.com/listings/p2p/7b797690-5b53-45a7-b972-bd2d5152654a+45e0e8c4-a281-40b1-91fd-c777300a29ed" + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..9c9ab2d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,271 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + dependencies: + es6-promisify "^5.0.0" + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + dependencies: + ms "^2.1.1" + +discord.js@^11.4.2: + version "11.4.2" + resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-11.4.2.tgz#54586981926521572051f2a30b984aad2b49786e" + dependencies: + long "^4.0.0" + prism-media "^0.0.3" + snekfetch "^3.6.4" + tweetnacl "^1.0.0" + ws "^4.0.0" + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +extract-zip@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + dependencies: + concat-stream "1.6.2" + debug "2.6.9" + mkdirp "0.5.1" + yauzl "2.4.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + +mime@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +prism-media@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-0.0.3.tgz#8842d4fae804f099d3b48a9a38e3c2bab6f4855b" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + +puppeteer@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.9.0.tgz#56dba79e7ea4faac807877bee3b23d63291fc59e" + dependencies: + debug "^3.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.0" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^5.1.1" + +readable-stream@^2.2.2: + version "2.3.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +snekfetch@^3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/snekfetch/-/snekfetch-3.6.4.tgz#d13e80a616d892f3d38daae4289f4d258a645120" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +tweetnacl@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.0.tgz#713d8b818da42068740bf68386d0479e66fc8a7b" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +ws@^4.0.0: + version "4.1.0" + resolved "http://registry.npmjs.org/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + dependencies: + async-limiter "~1.0.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1"