From 9159af7ece15bc5e5718a5d0a54ba98a85320b14 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Wed, 12 Jan 2022 14:03:31 +0100 Subject: [PATCH] tweak: Consolidate the extra field as distinct from the quality indicators field. Replace tabs with spaces. --- src/platforms/astralcodexten-fetch.js | 2 +- src/platforms/foretold-fetch.js | 2 +- src/platforms/manifoldmarkets-fetch.js | 4 +- src/platforms/metaculus-fetch.js | 8 +- src/platforms/polymarket-fetch.js | 4 +- src/platforms/wildeford-fetch.js | 164 ++++++++++++------------- 6 files changed, 95 insertions(+), 89 deletions(-) diff --git a/src/platforms/astralcodexten-fetch.js b/src/platforms/astralcodexten-fetch.js index 8dfa1f8..4cf27f3 100644 --- a/src/platforms/astralcodexten-fetch.js +++ b/src/platforms/astralcodexten-fetch.js @@ -22,7 +22,7 @@ async function fetchAllCommunityQuestions(communityId) { states: OPEN, first: 500 ){ - total + total edges{ node{ id diff --git a/src/platforms/foretold-fetch.js b/src/platforms/foretold-fetch.js index 4fea6c6..b86afe2 100644 --- a/src/platforms/foretold-fetch.js +++ b/src/platforms/foretold-fetch.js @@ -22,7 +22,7 @@ async function fetchAllCommunityQuestions(communityId) { states: OPEN, first: 500 ){ - total + total edges{ node{ id diff --git a/src/platforms/manifoldmarkets-fetch.js b/src/platforms/manifoldmarkets-fetch.js index 44db4ef..fbc60d2 100644 --- a/src/platforms/manifoldmarkets-fetch.js +++ b/src/platforms/manifoldmarkets-fetch.js @@ -54,7 +54,9 @@ async function processPredictions(predictions) { "volume7Days": prediction.volume7Days, "volume24Hours": prediction.volume24Hours, "pool": prediction.pool, // normally liquidity, but I don't actually want to show it. - "isResolved": prediction.isResolved + }, + "extra": { + "isResolved": prediction.isResolved } }) return result diff --git a/src/platforms/metaculus-fetch.js b/src/platforms/metaculus-fetch.js index 450e1b7..54c5e8a 100644 --- a/src/platforms/metaculus-fetch.js +++ b/src/platforms/metaculus-fetch.js @@ -82,7 +82,7 @@ export async function metaculus() { await sleep(5000) let questionPage = await fetchMetaculusQuestionDescription(result.page_url) if(!questionPage.includes("A public prediction by")){ - // console.log(questionPage) + // console.log(questionPage) let descriptionraw = questionPage.split(`
`)[1] //.split(`
`)[1] let descriptionprocessed1 = descriptionraw.split("
")[0] let descriptionprocessed2 = toMarkdown(descriptionprocessed1) @@ -114,13 +114,15 @@ export async function metaculus() { "timestamp": new Date().toISOString(), "qualityindicators": { "numforecasts": Number(result.number_of_predictions), + "stars": calculateStars("Metaculus", ({ numforecasts: result.number_of_predictions })) + }, + "extra": { "resolution_data": { "publish_time": result.publish_time, "resolution": result.resolution, "close_time": result.close_time, "resolve_time": result.resolve_time - }, - "stars": calculateStars("Metaculus", ({ numforecasts: result.number_of_predictions })) + } } //"status": result.status, //"publish_time": result.publish_time, diff --git a/src/platforms/polymarket-fetch.js b/src/platforms/polymarket-fetch.js index d9ed173..8519f4c 100644 --- a/src/platforms/polymarket-fetch.js +++ b/src/platforms/polymarket-fetch.js @@ -117,9 +117,11 @@ async function fetch_all() { "liquidity": liquidity.toFixed(2), "tradevolume": tradevolume.toFixed(2), "stars": calculateStars("Polymarket", ({ liquidity, option: options[0], volume: tradevolume})) + }, + "extra": { + "address": info.address } /* - address: info.address */ }) if(info.category != "Sports"){ diff --git a/src/platforms/wildeford-fetch.js b/src/platforms/wildeford-fetch.js index 30abb0c..01fe09d 100644 --- a/src/platforms/wildeford-fetch.js +++ b/src/platforms/wildeford-fetch.js @@ -15,107 +15,107 @@ const endpoint = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/edit#gid=0` /* Support functions */ const formatRow = row => { - let colNames = ["Prediction Date", "Prediction", "Odds", "Actual", "Resolution Date", "Prediction Right?", "Brier Score", "Notes"] - let result = ({}) - row.forEach((col,i) => { - result[colNames[i]] = col - }) - return result + let colNames = ["Prediction Date", "Prediction", "Odds", "Actual", "Resolution Date", "Prediction Right?", "Brier Score", "Notes"] + let result = ({}) + row.forEach((col,i) => { + result[colNames[i]] = col + }) + return result } async function fetchGoogleDoc(google_api_key){ - // https://gist.github.com/micalevisk/9bc831bd4b3e5a3f62b9810330129c59 - let results = [] - const doc = new GoogleSpreadsheet(SHEET_ID) - doc.useApiKey(google_api_key) + // https://gist.github.com/micalevisk/9bc831bd4b3e5a3f62b9810330129c59 + let results = [] + const doc = new GoogleSpreadsheet(SHEET_ID) + doc.useApiKey(google_api_key) - await doc.loadInfo() // loads document properties and worksheets - console.log('>>', doc.title) + await doc.loadInfo() // loads document properties and worksheets + console.log('>>', doc.title) - const sheet = doc.sheetsByIndex[0] - const rows = await sheet.getRows({ offset:0, }) + const sheet = doc.sheetsByIndex[0] + const rows = await sheet.getRows({ offset:0, }) - console.log('# ' + - rows[0]._sheet.headerValues.join(',') - ) - let isEnd = false; - for (let i in rows) { - let data = rows[i]._rawData - if(data.length == 0) isEnd = true; - if(!isEnd){ - let result = ({...formatRow(data), "url": endpoint + `&range=A${(Number(i) + 2)}`}) - // +2: +1 for the header row, +1 for starting at 1 and not at 0. - // console.log(result) - results.push(result) + console.log('# ' + + rows[0]._sheet.headerValues.join(',') + ) + let isEnd = false; + for (let i in rows) { + let data = rows[i]._rawData + if(data.length == 0) isEnd = true; + if(!isEnd){ + let result = ({...formatRow(data), "url": endpoint + `&range=A${(Number(i) + 2)}`}) + // +2: +1 for the header row, +1 for starting at 1 and not at 0. + // console.log(result) + results.push(result) - // console.log(rows[i]) - // console.log(rows[i]._rawData) - // console.log(rows[i]["Prediction"]) - } - // console.log(row._rawData.join(',')) - // console.log(row._rawData.join(',')) - } - // console.log(results) - return(results) + // console.log(rows[i]) + // console.log(rows[i]._rawData) + // console.log(rows[i]["Prediction"]) + } + // console.log(row._rawData.join(',')) + // console.log(row._rawData.join(',')) + } + // console.log(results) + return(results) } async function processPredictions(predictions){ - let currentPredictions = predictions.filter(prediction => prediction["Actual"] == "Unknown" ) - let results = currentPredictions.map(prediction => { - let probability = Number(prediction["Odds"].replace("%", ""))/100 - let options = [ - { - "name": "Yes", - "probability": probability, - "type": "PROBABILITY" - }, - { - "name": "No", - "probability": 1 - probability, - "type": "PROBABILITY" - } - ] - let result = ({ - "title": prediction["Prediction"], - "url": prediction["url"], - "platform": "Peter Wildeford", - "description": prediction["Notes"] || "", - "options": options, - "timestamp": new Date(Date.parse(prediction["Prediction Date"] + "Z")).toISOString(), - "qualityindicators": { - "stars": calculateStars("Peter Wildeford"), - } - }) - return result - }) - results = results.map(result => ({...result, title: result.title.replace(" [update]", "")})).reverse() + let currentPredictions = predictions.filter(prediction => prediction["Actual"] == "Unknown" ) + let results = currentPredictions.map(prediction => { + let probability = Number(prediction["Odds"].replace("%", ""))/100 + let options = [ + { + "name": "Yes", + "probability": probability, + "type": "PROBABILITY" + }, + { + "name": "No", + "probability": 1 - probability, + "type": "PROBABILITY" + } + ] + let result = ({ + "title": prediction["Prediction"], + "url": prediction["url"], + "platform": "Peter Wildeford", + "description": prediction["Notes"] || "", + "options": options, + "timestamp": new Date(Date.parse(prediction["Prediction Date"] + "Z")).toISOString(), + "qualityindicators": { + "stars": calculateStars("Peter Wildeford"), + } + }) + return result + }) + results = results.map(result => ({...result, title: result.title.replace(" [update]", "")})).reverse() - let uniqueTitles = [] - let uniqueResults = [] - results.forEach(result => { - if(!uniqueTitles.includes(result.title)) uniqueResults.push(result) - uniqueTitles.push(result.title) - }) - return(uniqueResults) - // console.log(results) - // console.log(results.map(result => result.options)) + let uniqueTitles = [] + let uniqueResults = [] + results.forEach(result => { + if(!uniqueTitles.includes(result.title)) uniqueResults.push(result) + uniqueTitles.push(result.title) + }) + return(uniqueResults) + // console.log(results) + // console.log(results.map(result => result.options)) } // processPredictions() /* Body */ export async function wildeford_inner(google_api_key) { - let predictions = await fetchGoogleDoc(google_api_key) - let results = await processPredictions(predictions) // somehow needed - // console.log(results) - // let string = JSON.stringify(results, null, 2) - // fs.writeFileSync('polyprediction-questions.json', string); - await upsert(results, "wildeford-questions") - console.log("Done") + let predictions = await fetchGoogleDoc(google_api_key) + let results = await processPredictions(predictions) // somehow needed + // console.log(results) + // let string = JSON.stringify(results, null, 2) + // fs.writeFileSync('polyprediction-questions.json', string); + await upsert(results, "wildeford-questions") + console.log("Done") } //example() export async function wildeford(){ - const GOOGLE_API_KEY = process.env.GOOGLE_API_KEY || getCookie("google-api") // See: https://developers.google.com/sheets/api/guides/authorizing#APIKey - await applyIfCookieExists(GOOGLE_API_KEY, wildeford_inner) + const GOOGLE_API_KEY = process.env.GOOGLE_API_KEY || getCookie("google-api") // See: https://developers.google.com/sheets/api/guides/authorizing#APIKey + await applyIfCookieExists(GOOGLE_API_KEY, wildeford_inner) }