feat: separate fetchers from upserts
This commit is contained in:
parent
066eb0302a
commit
efae18600f
|
@ -1,6 +1,6 @@
|
|||
import pkg from "pg";
|
||||
|
||||
import { platformNames } from "../platforms/all/platformNames";
|
||||
import { platforms } from "../platforms";
|
||||
import { hash } from "../utils/hash";
|
||||
import { roughSizeOfObject } from "../utils/roughSize";
|
||||
|
||||
|
@ -18,7 +18,10 @@ const allowed_year_month_histories = [].concat(
|
|||
allowed_months.map((month) => `${year}_${month}`)
|
||||
)
|
||||
); // h2022_01
|
||||
const tableNamesWhitelistLatest = ["combined", ...platformNames];
|
||||
const tableNamesWhitelistLatest = [
|
||||
"combined",
|
||||
...platforms.map((platform) => platform.name),
|
||||
];
|
||||
const tableNamesWhiteListHistory = [
|
||||
...allowed_years,
|
||||
...allowed_year_month_histories,
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import { platformFetchers } from "../platforms/all-platforms";
|
||||
import { platforms, processPlatform } from "../platforms";
|
||||
import { rebuildAlgoliaDatabase } from "../utils/algolia";
|
||||
import { updateHistory } from "./history/updateHistory";
|
||||
import { mergeEverything } from "./mergeEverything";
|
||||
import { rebuildNetlifySiteWithNewData } from "./rebuildNetliftySiteWithNewData";
|
||||
|
||||
/* Do everything */
|
||||
function sleep(ms) {
|
||||
function sleep(ms: number) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ export async function tryCatchTryAgain(fun) {
|
|||
|
||||
export async function doEverything() {
|
||||
let functions = [
|
||||
...platformFetchers,
|
||||
...platforms.map((platform) => () => processPlatform(platform)),
|
||||
mergeEverything,
|
||||
rebuildAlgoliaDatabase,
|
||||
updateHistory,
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
import { databaseRead, databaseUpsert } from "../database/database-wrapper";
|
||||
import { platformNames } from "../platforms/all-platforms";
|
||||
import { platforms } from "../platforms";
|
||||
|
||||
/* Merge everything */
|
||||
|
||||
export async function mergeEverythingInner() {
|
||||
let merged = [];
|
||||
for (let platformName of platformNames) {
|
||||
for (let platform of platforms) {
|
||||
const platformName = platform.name;
|
||||
let json = await databaseRead({ group: platformName });
|
||||
console.log(`${platformName} has ${json.length} questions\n`);
|
||||
merged = merged.concat(json);
|
||||
|
|
|
@ -9,12 +9,12 @@ import { updateHistory } from "./flow/history/updateHistory";
|
|||
import { mergeEverything } from "./flow/mergeEverything";
|
||||
import { rebuildNetlifySiteWithNewData } from "./flow/rebuildNetliftySiteWithNewData";
|
||||
import { rebuildFrontpage } from "./frontpage";
|
||||
import { platformFetchers } from "./platforms/all-platforms";
|
||||
import { platforms, processPlatform } from "./platforms";
|
||||
import { rebuildAlgoliaDatabase } from "./utils/algolia";
|
||||
|
||||
/* Support functions */
|
||||
let functions = [
|
||||
...platformFetchers,
|
||||
...platforms.map((platform) => () => processPlatform(platform)),
|
||||
mergeEverything,
|
||||
rebuildAlgoliaDatabase,
|
||||
updateHistory,
|
||||
|
@ -25,9 +25,9 @@ let functions = [
|
|||
];
|
||||
|
||||
let generateWhatToDoMessage = () => {
|
||||
let l = platformFetchers.length;
|
||||
let messagesForFetchers = platformFetchers.map(
|
||||
(fun, i) => `[${i}]: Download predictions from ${fun.name}`
|
||||
let l = platforms.length;
|
||||
let messagesForFetchers = platforms.map(
|
||||
(platform, i) => `[${i}]: Download predictions from ${platform.name}`
|
||||
);
|
||||
let otherMessages = [
|
||||
"Merge tables into one big table (and push the result to a pg database)",
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
export { platformFetchers } from "./all/platformFetchers";
|
||||
export { platformNames } from "./all/platformNames";
|
|
@ -1,42 +0,0 @@
|
|||
import { betfair } from "../betfair-fetch";
|
||||
import { fantasyscotus } from "../fantasyscotus-fetch";
|
||||
import { foretold } from "../foretold-fetch";
|
||||
import { goodjudgment } from "../goodjudgment-fetch";
|
||||
import { goodjudgmentopen } from "../goodjudmentopen-fetch";
|
||||
import { infer } from "../infer-fetch";
|
||||
import { kalshi } from "../kalshi-fetch";
|
||||
import { manifoldmarkets } from "../manifoldmarkets-fetch";
|
||||
import { metaculus } from "../metaculus-fetch";
|
||||
import { polymarket } from "../polymarket-fetch";
|
||||
import { predictit } from "../predictit-fetch";
|
||||
import { rootclaim } from "../rootclaim-fetch";
|
||||
import { smarkets } from "../smarkets-fetch";
|
||||
import { wildeford } from "../wildeford-fetch";
|
||||
|
||||
/* Deprecated
|
||||
import { astralcodexten } from "../platforms/astralcodexten-fetch"
|
||||
import { coupcast } from "../platforms/coupcast-fetch"
|
||||
import { csetforetell } from "../platforms/csetforetell-fetch"
|
||||
import { elicit } from "../platforms/elicit-fetch"
|
||||
import { estimize } from "../platforms/estimize-fetch"
|
||||
import { hypermind } from "../platforms/hypermind-fetch"
|
||||
import { ladbrokes } from "../platforms/ladbrokes-fetch";
|
||||
import { williamhill } from "../platforms/williamhill-fetch";
|
||||
*/
|
||||
|
||||
export const platformFetchers = [
|
||||
betfair,
|
||||
fantasyscotus,
|
||||
foretold,
|
||||
goodjudgment,
|
||||
goodjudgmentopen,
|
||||
infer,
|
||||
kalshi,
|
||||
manifoldmarkets,
|
||||
metaculus,
|
||||
polymarket,
|
||||
predictit,
|
||||
rootclaim,
|
||||
smarkets,
|
||||
wildeford,
|
||||
];
|
|
@ -1,20 +0,0 @@
|
|||
// This needs to be its own file to avoid cyclical dependencies.
|
||||
export const platformNames = [
|
||||
"betfair",
|
||||
"fantasyscotus",
|
||||
"foretold",
|
||||
"givewellopenphil",
|
||||
"goodjudgment",
|
||||
"goodjudmentopen",
|
||||
"infer",
|
||||
"kalshi",
|
||||
"manifoldmarkets",
|
||||
"metaculus",
|
||||
"polymarket",
|
||||
"predictit",
|
||||
"rootclaim",
|
||||
"smarkets",
|
||||
"wildeford",
|
||||
"xrisk",
|
||||
];
|
||||
// deprecated: "astralcodexten", "csetforetell", "coupcast", "elicit", "estimize", "hypermind", "ladbrokes", "omen", "williamhill", etc
|
|
@ -1,8 +1,9 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import https from "https";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { Forecast, PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let endpoint = process.env.SECRET_BETFAIR_ENDPOINT;
|
||||
|
@ -77,7 +78,7 @@ async function whipIntoShape(data) {
|
|||
async function processPredictions(data) {
|
||||
let predictions = await whipIntoShape(data);
|
||||
// console.log(JSON.stringify(predictions, null, 4))
|
||||
let results = predictions.map((prediction) => {
|
||||
let results: Forecast[] = predictions.map((prediction) => {
|
||||
/* if(Math.floor(Math.random() * 10) % 20 ==0){
|
||||
console.log(JSON.stringify(prediction, null, 4))
|
||||
} */
|
||||
|
@ -136,12 +137,9 @@ async function processPredictions(data) {
|
|||
|
||||
/* Body */
|
||||
|
||||
export async function betfair() {
|
||||
let data = await fetchPredictions();
|
||||
let results = await processPredictions(data); // somehow needed
|
||||
// console.log(results.map(result => ({title: result.title, description: result.description})))
|
||||
// let string = JSON.stringify(results, null, 2)
|
||||
await databaseUpsert({ contents: results, group: "betfair" });
|
||||
console.log("Done");
|
||||
}
|
||||
export const betfair: PlatformFetcher = async function () {
|
||||
const data = await fetchPredictions();
|
||||
const results = await processPredictions(data); // somehow needed
|
||||
return results;
|
||||
};
|
||||
// betfair()
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let unixtime = new Date().getTime();
|
||||
|
@ -111,10 +111,9 @@ async function processData(data) {
|
|||
}
|
||||
|
||||
/* Body */
|
||||
export async function fantasyscotus() {
|
||||
export const fantasyscotus: PlatformFetcher = async function () {
|
||||
let rawData = await fetchData();
|
||||
let results = await processData(rawData);
|
||||
await databaseUpsert({ contents: results, group: "fantasyscotus" });
|
||||
console.log("Done");
|
||||
}
|
||||
return results;
|
||||
};
|
||||
//fantasyscotus()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
|
||||
/* Definitions */
|
||||
|
@ -98,8 +98,6 @@ export async function foretold() {
|
|||
results.push(result);
|
||||
});
|
||||
}
|
||||
await databaseUpsert({ contents: results, group: "foretold" });
|
||||
|
||||
console.log("Done");
|
||||
return results;
|
||||
}
|
||||
// foretold()
|
||||
|
|
|
@ -3,9 +3,9 @@ import axios from "axios";
|
|||
import { Tabletojson } from "tabletojson";
|
||||
import tunnel from "tunnel";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { hash } from "../utils/hash";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let endpoint = "https://goodjudgment.io/superforecasts/";
|
||||
|
@ -17,7 +17,7 @@ String.prototype.replaceAll = function replaceAll(search, replace) {
|
|||
/* Support functions */
|
||||
|
||||
/* Body */
|
||||
export async function goodjudgment() {
|
||||
export const goodjudgment: PlatformFetcher = async function () {
|
||||
// Proxy fuckery
|
||||
let proxy;
|
||||
/*
|
||||
|
@ -116,14 +116,11 @@ export async function goodjudgment() {
|
|||
results.push(standardObj);
|
||||
}
|
||||
}
|
||||
// console.log(results.slice(0,10))
|
||||
let string = JSON.stringify(results, null, 2);
|
||||
console.log(results);
|
||||
await databaseUpsert({ contents: results, group: "goodjudgment" });
|
||||
|
||||
console.log(
|
||||
"Failing is not unexpected; see utils/pullSuperforecastsManually.sh/js"
|
||||
);
|
||||
console.log("Done");
|
||||
}
|
||||
|
||||
return results;
|
||||
};
|
||||
// goodjudgment()
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
import axios from "axios";
|
||||
import { Tabletojson } from "tabletojson";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { applyIfSecretExists } from "../utils/getSecrets";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import toMarkdown from "../utils/toMarkdown";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let htmlEndPoint = "https://www.gjopen.com/questions?page=";
|
||||
|
@ -150,7 +150,7 @@ function isEnd(html) {
|
|||
return isEndBool;
|
||||
}
|
||||
|
||||
function sleep(ms) {
|
||||
function sleep(ms: number) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
|
@ -221,11 +221,10 @@ async function goodjudgmentopen_inner(cookie) {
|
|||
);
|
||||
}
|
||||
}
|
||||
console.log(results);
|
||||
if (results.length > 0) {
|
||||
await databaseUpsert({ contents: results, group: "goodjudmentopen" });
|
||||
} else {
|
||||
|
||||
if (results.length === 0) {
|
||||
console.log("Not updating results, as process was not signed in");
|
||||
return;
|
||||
}
|
||||
|
||||
let end = Date.now();
|
||||
|
@ -233,9 +232,11 @@ async function goodjudgmentopen_inner(cookie) {
|
|||
console.log(
|
||||
`Took ${difference / 1000} seconds, or ${difference / (1000 * 60)} minutes.`
|
||||
);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
export async function goodjudgmentopen() {
|
||||
export const goodjudgmentopen: PlatformFetcher = async function () {
|
||||
let cookie = process.env.GOODJUDGMENTOPENCOOKIE;
|
||||
await applyIfSecretExists(cookie, goodjudgmentopen_inner);
|
||||
}
|
||||
return await applyIfSecretExists(cookie, goodjudgmentopen_inner);
|
||||
};
|
||||
|
|
61
src/backend/platforms/index.ts
Normal file
61
src/backend/platforms/index.ts
Normal file
|
@ -0,0 +1,61 @@
|
|||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { betfair } from "./betfair-fetch";
|
||||
import { fantasyscotus } from "./fantasyscotus-fetch";
|
||||
import { foretold } from "./foretold-fetch";
|
||||
import { goodjudgment } from "./goodjudgment-fetch";
|
||||
import { goodjudgmentopen } from "./goodjudmentopen-fetch";
|
||||
import { infer } from "./infer-fetch";
|
||||
import { kalshi } from "./kalshi-fetch";
|
||||
import { manifoldmarkets } from "./manifoldmarkets-fetch";
|
||||
import { metaculus } from "./metaculus-fetch";
|
||||
import { polymarket } from "./polymarket-fetch";
|
||||
import { predictit } from "./predictit-fetch";
|
||||
import { rootclaim } from "./rootclaim-fetch";
|
||||
import { smarkets } from "./smarkets-fetch";
|
||||
import { wildeford } from "./wildeford-fetch";
|
||||
|
||||
export interface Forecast {
|
||||
id: string;
|
||||
title: string;
|
||||
url: string;
|
||||
description: string;
|
||||
platform: string;
|
||||
options: any[];
|
||||
timestamp: string;
|
||||
qualityindicators: any;
|
||||
extra?: any;
|
||||
}
|
||||
|
||||
export type PlatformFetcher = () => Promise<Forecast[] | null>;
|
||||
|
||||
interface Platform {
|
||||
name: string;
|
||||
fetcher: PlatformFetcher;
|
||||
}
|
||||
|
||||
export const platforms: Platform[] = [
|
||||
betfair,
|
||||
fantasyscotus,
|
||||
foretold,
|
||||
goodjudgment,
|
||||
goodjudgmentopen,
|
||||
infer,
|
||||
kalshi,
|
||||
manifoldmarkets,
|
||||
metaculus,
|
||||
polymarket,
|
||||
predictit,
|
||||
rootclaim,
|
||||
smarkets,
|
||||
wildeford,
|
||||
].map((fun) => ({ name: fun.name, fetcher: fun }));
|
||||
|
||||
export const processPlatform = async (platform: Platform) => {
|
||||
let results = await platform.fetcher();
|
||||
if (results && results.length) {
|
||||
await databaseUpsert({ contents: results, group: platform.name });
|
||||
console.log("Done");
|
||||
} else {
|
||||
console.log(`Platform ${platform.name} didn't return any results`);
|
||||
}
|
||||
};
|
|
@ -2,10 +2,10 @@
|
|||
import axios from "axios";
|
||||
import { Tabletojson } from "tabletojson";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { applyIfSecretExists } from "../utils/getSecrets";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import toMarkdown from "../utils/toMarkdown";
|
||||
import { Forecast, PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let htmlEndPoint = "https://www.infer-pub.com/questions";
|
||||
|
@ -182,7 +182,7 @@ function sleep(ms) {
|
|||
async function infer_inner(cookie) {
|
||||
let i = 1;
|
||||
let response = await fetchPage(i, cookie);
|
||||
let results = [];
|
||||
let results: Forecast[] = [];
|
||||
let init = Date.now();
|
||||
// console.log("Downloading... This might take a couple of minutes. Results will be shown.")
|
||||
while (!isEnd(response) && isSignedIn(response)) {
|
||||
|
@ -263,20 +263,21 @@ async function infer_inner(cookie) {
|
|||
);
|
||||
}
|
||||
}
|
||||
if (results.length > 0) {
|
||||
await databaseUpsert({ contents: results, group: "infer" });
|
||||
} else {
|
||||
console.log("Not updating results, as process was not signed in");
|
||||
}
|
||||
|
||||
let end = Date.now();
|
||||
let difference = end - init;
|
||||
console.log(
|
||||
`Took ${difference / 1000} seconds, or ${difference / (1000 * 60)} minutes.`
|
||||
);
|
||||
|
||||
if (results.length === 0) {
|
||||
console.log("Not updating results, as process was not signed in");
|
||||
return;
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
export async function infer() {
|
||||
export const infer: PlatformFetcher = async function () {
|
||||
let cookie = process.env.INFER_COOKIE;
|
||||
await applyIfSecretExists(cookie, infer_inner);
|
||||
}
|
||||
return await applyIfSecretExists(cookie, infer_inner);
|
||||
};
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let jsonEndpoint = "https://trading-api.kalshi.com/v1/cached/markets/"; //"https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket"//"https://subgraph-backup.poly.market/subgraphs/name/TokenUnion/polymarket"//'https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket3'
|
||||
|
@ -69,11 +70,8 @@ async function processMarkets(markets) {
|
|||
}
|
||||
|
||||
/* Body */
|
||||
export async function kalshi() {
|
||||
export const kalshi: PlatformFetcher = async function () {
|
||||
let markets = await fetchAllMarkets();
|
||||
let results = await processMarkets(markets); // somehow needed
|
||||
await databaseUpsert({ contents: results, group: "kalshi" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
return await processMarkets(markets);
|
||||
};
|
||||
// kalshi()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
|
||||
/* Definitions */
|
||||
|
@ -89,12 +89,10 @@ async function processPredictions(predictions) {
|
|||
|
||||
/* Body */
|
||||
|
||||
export async function manifoldmarkets() {
|
||||
export const manifoldmarkets = async function () {
|
||||
let data = await fetchData();
|
||||
let results = await processPredictions(data); // somehow needed
|
||||
showStatistics(results);
|
||||
await databaseUpsert({ contents: results, group: "manifoldmarkets" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
return results;
|
||||
};
|
||||
// manifoldmarkets()
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import toMarkdown from "../utils/toMarkdown";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let jsonEndPoint = "https://www.metaculus.com/api2/questions/?page=";
|
||||
|
@ -94,7 +95,7 @@ async function fetchMetaculusQuestionDescription(slug) {
|
|||
|
||||
/* Body */
|
||||
|
||||
export async function metaculus() {
|
||||
export const metaculus: PlatformFetcher = async function () {
|
||||
// let metaculusQuestionsInit = await fetchMetaculusQuestions(1)
|
||||
// let numQueries = Math.round(Number(metaculusQuestionsInit.count) / 20)
|
||||
// console.log(`Downloading... This might take a while. Total number of queries: ${numQueries}`)
|
||||
|
@ -189,8 +190,6 @@ export async function metaculus() {
|
|||
i = i + 1;
|
||||
}
|
||||
|
||||
await databaseUpsert({ contents: all_questions, group: "metaculus" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
return all_questions;
|
||||
};
|
||||
//metaculus()
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { Forecast, PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let graphQLendpoint =
|
||||
"https://api.thegraph.com/subgraphs/name/polymarket/matic-markets-5"; // "https://api.thegraph.com/subgraphs/name/polymarket/matic-markets-4"// "https://api.thegraph.com/subgraphs/name/tokenunion/polymarket-matic"//"https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket"//"https://subgraph-backup.poly.market/subgraphs/name/TokenUnion/polymarket"//'https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket3'
|
||||
"https://api.thegraph.com/subgraphs/name/polymarket/matic-markets-5";
|
||||
let units = 10 ** 6;
|
||||
|
||||
async function fetchAllContractInfo() {
|
||||
|
@ -55,19 +56,24 @@ async function fetchAllContractData() {
|
|||
})
|
||||
.then((res) => res.data)
|
||||
.then((res) => res.data.fixedProductMarketMakers);
|
||||
// console.log(response)
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
async function fetch_all() {
|
||||
export const polymarket: PlatformFetcher = async function () {
|
||||
let allData = await fetchAllContractData();
|
||||
let allInfo = await fetchAllContractInfo();
|
||||
|
||||
let used = process.memoryUsage().heapUsed / 1024 / 1024;
|
||||
console.log(
|
||||
`The script uses approximately ${Math.round(used * 100) / 100} MB`
|
||||
);
|
||||
|
||||
let infos = {};
|
||||
for (let info of allInfo) {
|
||||
let address = info.marketMakerAddress;
|
||||
let addressLowerCase = address.toLowerCase();
|
||||
//delete info.history
|
||||
|
||||
if (info.outcomes[0] != "Long" || info.outcomes[1] != "Long")
|
||||
infos[addressLowerCase] = {
|
||||
title: info.question,
|
||||
|
@ -83,9 +89,8 @@ async function fetch_all() {
|
|||
let results = [];
|
||||
for (let data of allData) {
|
||||
let addressLowerCase = data.id;
|
||||
// console.log(data)
|
||||
|
||||
if (infos[addressLowerCase] != undefined) {
|
||||
// console.log(addressLowerCase)
|
||||
let id = `polymarket-${addressLowerCase.slice(0, 10)}`;
|
||||
let info = infos[addressLowerCase];
|
||||
let numforecasts = Number(data.tradesQuantity);
|
||||
|
@ -105,7 +110,7 @@ async function fetch_all() {
|
|||
});
|
||||
}
|
||||
|
||||
let result = {
|
||||
let result: Forecast = {
|
||||
id: id,
|
||||
title: info.title,
|
||||
url: info.url,
|
||||
|
@ -126,23 +131,12 @@ async function fetch_all() {
|
|||
extra: {
|
||||
address: info.address,
|
||||
},
|
||||
/*
|
||||
*/
|
||||
};
|
||||
if (info.category != "Sports") {
|
||||
// console.log(result)
|
||||
results.push(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
return results; //resultsProcessed
|
||||
}
|
||||
|
||||
/* Body */
|
||||
export async function polymarket() {
|
||||
let results = await fetch_all();
|
||||
await databaseUpsert({ contents: results, group: "polymarket" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
// polymarket()
|
||||
return results;
|
||||
};
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import toMarkdown from "../utils/toMarkdown";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Support functions */
|
||||
async function fetchmarkets() {
|
||||
|
@ -37,7 +38,7 @@ function sleep(ms) {
|
|||
}
|
||||
|
||||
/* Body */
|
||||
export async function predictit() {
|
||||
export const predictit: PlatformFetcher = async function () {
|
||||
let markets = await fetchmarkets();
|
||||
let marketVolumes = await fetchmarketvolumes();
|
||||
|
||||
|
@ -106,7 +107,6 @@ export async function predictit() {
|
|||
// console.log(obj)
|
||||
results.push(obj);
|
||||
}
|
||||
await databaseUpsert({ contents: results, group: "predictit" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import toMarkdown from "../utils/toMarkdown";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let jsonEndpoint =
|
||||
|
@ -22,7 +23,7 @@ async function fetchAllRootclaims() {
|
|||
return response;
|
||||
}
|
||||
|
||||
async function fetchAndProcessData() {
|
||||
export const rootclaim: PlatformFetcher = async function () {
|
||||
let claims = await fetchAllRootclaims();
|
||||
let results = [];
|
||||
for (let claim of claims) {
|
||||
|
@ -53,13 +54,4 @@ async function fetchAndProcessData() {
|
|||
results.push(obj);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/* Body */
|
||||
export async function rootclaim() {
|
||||
let results = await fetchAndProcessData();
|
||||
await databaseUpsert({ contents: results, group: "rootclaim" });
|
||||
|
||||
console.log("Done");
|
||||
}
|
||||
//rootclaim()
|
||||
};
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* Imports */
|
||||
import axios from "axios";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
let htmlEndPointEntrance = "https://api.smarkets.com/v3/events/";
|
||||
|
@ -61,7 +61,7 @@ async function fetchPrices(marketid) {
|
|||
|
||||
/* Body */
|
||||
|
||||
export async function smarkets() {
|
||||
export const smarkets: PlatformFetcher = async function () {
|
||||
let htmlPath =
|
||||
"?state=new&state=upcoming&state=live&type_domain=politics&type_scope=single_event&with_new_type=true&sort=id&limit=50";
|
||||
|
||||
|
@ -172,9 +172,6 @@ export async function smarkets() {
|
|||
results.push(result);
|
||||
}
|
||||
VERBOSE ? console.log(results) : empty();
|
||||
|
||||
await databaseUpsert({ contents: results, group: "smarkets" });
|
||||
VERBOSE ? console.log(JSON.stringify(results, null, 4)) : empty();
|
||||
VERBOSE ? console.dir(results, { depth: null }) : empty();
|
||||
}
|
||||
return results;
|
||||
};
|
||||
//smarkets()
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
// import axios from "axios"
|
||||
import { GoogleSpreadsheet } from "google-spreadsheet";
|
||||
|
||||
import { databaseUpsert } from "../database/database-wrapper";
|
||||
import { applyIfSecretExists } from "../utils/getSecrets";
|
||||
import { hash } from "../utils/hash";
|
||||
import { calculateStars } from "../utils/stars";
|
||||
import { PlatformFetcher } from "./";
|
||||
|
||||
/* Definitions */
|
||||
const SHEET_ID = "1xcgYF7Q0D95TPHLLSgwhWBHFrWZUGJn7yTyAhDR4vi0"; // spreadsheet key is the long id in the sheets URL
|
||||
|
@ -120,15 +120,11 @@ async function processPredictions(predictions) {
|
|||
/* 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.sort((a,b) => (a.title > b.title)))
|
||||
await databaseUpsert({ contents: results, group: "wildeford" });
|
||||
|
||||
console.log("Done");
|
||||
return await processPredictions(predictions);
|
||||
}
|
||||
//example()
|
||||
|
||||
export async function wildeford() {
|
||||
export const wildeford: PlatformFetcher = async function () {
|
||||
const GOOGLE_API_KEY = process.env.GOOGLE_API_KEY; // See: https://developers.google.com/sheets/api/guides/authorizing#APIKey
|
||||
await applyIfSecretExists(GOOGLE_API_KEY, wildeford_inner);
|
||||
}
|
||||
return await applyIfSecretExists(GOOGLE_API_KEY, wildeford_inner);
|
||||
};
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
export async function applyIfSecretExists(cookie, fun) {
|
||||
export async function applyIfSecretExists<T>(
|
||||
cookie,
|
||||
fun: (...args: any[]) => T
|
||||
) {
|
||||
if (cookie) {
|
||||
await fun(cookie);
|
||||
return await fun(cookie);
|
||||
} else if (!cookie) {
|
||||
console.log(
|
||||
`Cannot proceed with ${fun.name} because cookie does not exist`
|
||||
|
|
Loading…
Reference in New Issue
Block a user