tweak: Consolidate the extra field as distinct from the quality indicators field. Replace tabs with spaces.
This commit is contained in:
parent
884cfb2463
commit
9159af7ece
|
@ -22,7 +22,7 @@ async function fetchAllCommunityQuestions(communityId) {
|
|||
states: OPEN,
|
||||
first: 500
|
||||
){
|
||||
total
|
||||
total
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
|
|
|
@ -22,7 +22,7 @@ async function fetchAllCommunityQuestions(communityId) {
|
|||
states: OPEN,
|
||||
first: 500
|
||||
){
|
||||
total
|
||||
total
|
||||
edges{
|
||||
node{
|
||||
id
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(`<div class="content" ng-bind-html-compile="qctrl.question.description_html">`)[1] //.split(`<div class="question__content">`)[1]
|
||||
let descriptionprocessed1 = descriptionraw.split("</div>")[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,
|
||||
|
|
|
@ -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"){
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user