feat: xrisk and givewellopenphil backend platforms
This commit is contained in:
parent
49d8140784
commit
f9e8f320a0
|
@ -1,20 +0,0 @@
|
||||||
import fs from "fs";
|
|
||||||
|
|
||||||
import { databaseUpsert } from "../database/database-wrapper";
|
|
||||||
|
|
||||||
/* This is necessary for estimize, the database of x-risk estimates, and for the OpenPhil/GiveWell predictions. Unlike the others, I'm not fetching them constantly, but only once. */
|
|
||||||
|
|
||||||
let pushManualFiles = ["givewellopenphil"]; // ["estimize", "givewellopenphil", "xrisk"]
|
|
||||||
let suffixFiles = "-questions.json";
|
|
||||||
|
|
||||||
let main = async () => {
|
|
||||||
for (let file of pushManualFiles) {
|
|
||||||
let fileRaw = fs.readFileSync(`./input/${file + suffixFiles}`, {
|
|
||||||
encoding: "utf-8",
|
|
||||||
});
|
|
||||||
let fileContents = JSON.parse(fileRaw);
|
|
||||||
console.log(fileContents);
|
|
||||||
await databaseUpsert({ contents: fileContents, group: file });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
main();
|
|
|
@ -4,9 +4,10 @@ import fs from "fs";
|
||||||
|
|
||||||
import { databaseUpsert } from "../database/database-wrapper";
|
import { databaseUpsert } from "../database/database-wrapper";
|
||||||
import { calculateStars } from "../utils/stars";
|
import { calculateStars } from "../utils/stars";
|
||||||
|
import { Platform } from "./";
|
||||||
|
|
||||||
/* Support functions */
|
/* Support functions */
|
||||||
async function fetchPage(url) {
|
async function fetchPage(url: string) {
|
||||||
let response = await axios({
|
let response = await axios({
|
||||||
url: url,
|
url: url,
|
||||||
method: "GET",
|
method: "GET",
|
||||||
|
@ -14,7 +15,6 @@ async function fetchPage(url) {
|
||||||
"Content-Type": "text/html",
|
"Content-Type": "text/html",
|
||||||
},
|
},
|
||||||
}).then((res) => res.data);
|
}).then((res) => res.data);
|
||||||
//console.log(response)
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,17 +64,20 @@ async function main1() {
|
||||||
group: "givewell-questions-unprocessed",
|
group: "givewell-questions-unprocessed",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// main1()
|
|
||||||
|
|
||||||
async function main2() {
|
export const givewellopenphil: Platform = {
|
||||||
let rawdata = fs.readFileSync("./input/givewellopenphil-questions.json", {
|
name: "givewellopenphil",
|
||||||
|
async fetcher() {
|
||||||
|
// main1()
|
||||||
|
return; // not necessary to refill the DB every time
|
||||||
|
const rawdata = fs.readFileSync("./input/givewellopenphil-questions.json", {
|
||||||
encoding: "utf-8",
|
encoding: "utf-8",
|
||||||
});
|
});
|
||||||
let data = JSON.parse(rawdata);
|
const data = JSON.parse(rawdata);
|
||||||
let dataWithDate = data.map((datum) => ({
|
const dataWithDate = data.map((datum: any) => ({
|
||||||
...datum,
|
...datum,
|
||||||
timestamp: "2021-02-23",
|
timestamp: "2021-02-23",
|
||||||
}));
|
}));
|
||||||
await databaseUpsert({ group: "givewellopenphil", contents: dataWithDate });
|
return dataWithDate;
|
||||||
}
|
},
|
||||||
main2();
|
};
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { databaseUpsert } from "../database/database-wrapper";
|
||||||
import { betfair } from "./betfair";
|
import { betfair } from "./betfair";
|
||||||
import { fantasyscotus } from "./fantasyscotus";
|
import { fantasyscotus } from "./fantasyscotus";
|
||||||
import { foretold } from "./foretold";
|
import { foretold } from "./foretold";
|
||||||
|
import { givewellopenphil } from "./givewellopenphil";
|
||||||
import { goodjudgment } from "./goodjudgment";
|
import { goodjudgment } from "./goodjudgment";
|
||||||
import { goodjudmentopen } from "./goodjudmentopen";
|
import { goodjudmentopen } from "./goodjudmentopen";
|
||||||
import { infer } from "./infer";
|
import { infer } from "./infer";
|
||||||
|
@ -13,6 +14,7 @@ import { predictit } from "./predictit";
|
||||||
import { rootclaim } from "./rootclaim";
|
import { rootclaim } from "./rootclaim";
|
||||||
import { smarkets } from "./smarkets";
|
import { smarkets } from "./smarkets";
|
||||||
import { wildeford } from "./wildeford";
|
import { wildeford } from "./wildeford";
|
||||||
|
import { xrisk } from "./xrisk";
|
||||||
|
|
||||||
export interface Forecast {
|
export interface Forecast {
|
||||||
id: string;
|
id: string;
|
||||||
|
@ -31,7 +33,7 @@ export type PlatformFetcher = () => Promise<Forecast[] | null>;
|
||||||
|
|
||||||
export interface Platform {
|
export interface Platform {
|
||||||
name: string;
|
name: string;
|
||||||
fetcher: PlatformFetcher;
|
fetcher?: PlatformFetcher;
|
||||||
}
|
}
|
||||||
|
|
||||||
// draft for the future callback-based streaming/chunking API:
|
// draft for the future callback-based streaming/chunking API:
|
||||||
|
@ -53,6 +55,7 @@ export const platforms: Platform[] = [
|
||||||
betfair,
|
betfair,
|
||||||
fantasyscotus,
|
fantasyscotus,
|
||||||
foretold,
|
foretold,
|
||||||
|
givewellopenphil,
|
||||||
goodjudgment,
|
goodjudgment,
|
||||||
goodjudmentopen,
|
goodjudmentopen,
|
||||||
infer,
|
infer,
|
||||||
|
@ -64,9 +67,14 @@ export const platforms: Platform[] = [
|
||||||
rootclaim,
|
rootclaim,
|
||||||
smarkets,
|
smarkets,
|
||||||
wildeford,
|
wildeford,
|
||||||
|
xrisk,
|
||||||
];
|
];
|
||||||
|
|
||||||
export const processPlatform = async (platform: Platform) => {
|
export const processPlatform = async (platform: Platform) => {
|
||||||
|
if (!platform.fetcher) {
|
||||||
|
console.log(`Platform ${platform.name} doesn't have a fetcher, skipping`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
let results = await platform.fetcher();
|
let results = await platform.fetcher();
|
||||||
if (results && results.length) {
|
if (results && results.length) {
|
||||||
await databaseUpsert({ contents: results, group: platform.name });
|
await databaseUpsert({ contents: results, group: platform.name });
|
||||||
|
|
15
src/backend/platforms/xrisk.ts
Normal file
15
src/backend/platforms/xrisk.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import fs from "fs";
|
||||||
|
|
||||||
|
import { Platform } from "./";
|
||||||
|
|
||||||
|
export const xrisk: Platform = {
|
||||||
|
name: "xrisk",
|
||||||
|
async fetcher() {
|
||||||
|
return; // not necessary to refill the DB every time
|
||||||
|
let fileRaw = fs.readFileSync("./input/xrisk-questions.json", {
|
||||||
|
encoding: "utf-8",
|
||||||
|
});
|
||||||
|
const results = JSON.parse(fileRaw);
|
||||||
|
return results;
|
||||||
|
},
|
||||||
|
};
|
|
@ -5,10 +5,9 @@ import fs from "fs";
|
||||||
let locationData = "../../data/";
|
let locationData = "../../data/";
|
||||||
|
|
||||||
/* Body */
|
/* Body */
|
||||||
let rawdata = fs.readFileSync(
|
let rawdata = fs.readFileSync("./input/xrisk-questions.json", {
|
||||||
"/home/nuno/Documents/core/software/fresh/js/metaforecasts/metaforecasts-mongo/src/input/xrisk-questions.json",
|
encoding: "utf-8",
|
||||||
{ encoding: "utf-8" }
|
});
|
||||||
);
|
|
||||||
let data = JSON.parse(rawdata);
|
let data = JSON.parse(rawdata);
|
||||||
|
|
||||||
let results = [];
|
let results = [];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user