fix: smarkets bug-ish
This commit is contained in:
		
							parent
							
								
									2138c0c642
								
							
						
					
					
						commit
						1e2562ba3f
					
				|  | @ -7,7 +7,8 @@ import { databaseUpsert } from "../database/database-wrapper.js"; | ||||||
| 
 | 
 | ||||||
| /* Definitions */ | /* Definitions */ | ||||||
| let htmlEndPointEntrance = "https://api.smarkets.com/v3/events/"; | let htmlEndPointEntrance = "https://api.smarkets.com/v3/events/"; | ||||||
| 
 | let VERBOSE = false; | ||||||
|  | let empty = (x) => x; | ||||||
| /* Support functions */ | /* Support functions */ | ||||||
| 
 | 
 | ||||||
| async function fetchEvents(url) { | async function fetchEvents(url) { | ||||||
|  | @ -18,7 +19,7 @@ async function fetchEvents(url) { | ||||||
|       "Content-Type": "text/html", |       "Content-Type": "text/html", | ||||||
|     }, |     }, | ||||||
|   }).then((res) => res.data); |   }).then((res) => res.data); | ||||||
|   // console.log(response)
 |   VERBOSE ? console.log(response) : empty(); | ||||||
|   return response; |   return response; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +44,7 @@ async function fetchContracts(marketid) { | ||||||
|       "Content-Type": "text/html", |       "Content-Type": "text/html", | ||||||
|     }, |     }, | ||||||
|   }).then((res) => res.data); |   }).then((res) => res.data); | ||||||
|   // console.log(response)
 |   VERBOSE ? console.log(response) : empty(); | ||||||
|   return response; |   return response; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +56,7 @@ async function fetchPrices(marketid) { | ||||||
|       "Content-Type": "text/html", |       "Content-Type": "text/html", | ||||||
|     }, |     }, | ||||||
|   }).then((res) => res.data); |   }).then((res) => res.data); | ||||||
|   // console.log(response)
 |   VERBOSE ? console.log(response) : empty(); | ||||||
|   return response; |   return response; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -71,36 +72,37 @@ export async function smarkets() { | ||||||
|     events.push(...data.events); |     events.push(...data.events); | ||||||
|     htmlPath = data.pagination.next_page; |     htmlPath = data.pagination.next_page; | ||||||
|   } |   } | ||||||
|   // console.log(events)
 |   VERBOSE ? console.log(events) : empty(); | ||||||
| 
 |  | ||||||
|   let markets = []; |   let markets = []; | ||||||
|   for (let event of events) { |   for (let event of events) { | ||||||
|     // console.log(Date.now())
 |     VERBOSE ? console.log(Date.now()) : empty(); | ||||||
|     // console.log(event.name)
 |     VERBOSE ? console.log(event.name) : empty(); | ||||||
|     let eventMarkets = await fetchMarkets(event.id); |     let eventMarkets = await fetchMarkets(event.id); | ||||||
|     eventMarkets = eventMarkets.map((market) => ({ |     eventMarkets = eventMarkets.map((market) => ({ | ||||||
|       ...market, |       ...market, | ||||||
|       slug: event.full_slug, |       slug: event.full_slug, | ||||||
|     })); |     })); | ||||||
|     // console.log("Markets fetched")
 |     VERBOSE ? console.log("Markets fetched") : empty(); | ||||||
|     // console.log(event.id)
 |     VERBOSE ? console.log(event.id) : empty(); | ||||||
|     // console.log(market)
 |     VERBOSE ? console.log(market) : empty(); | ||||||
|     markets.push(...eventMarkets); |     markets.push(...eventMarkets); | ||||||
|     //let lastPrices = await fetchPrices(market.id)
 |     //let lastPrices = await fetchPrices(market.id)
 | ||||||
|   } |   } | ||||||
|   // console.log(markets)
 |   VERBOSE ? console.log(markets) : empty(); | ||||||
| 
 | 
 | ||||||
|   let results = []; |   let results = []; | ||||||
|   for (let market of markets) { |   for (let market of markets) { | ||||||
|     // console.log("================")
 |     VERBOSE ? console.log("================") : empty(); | ||||||
|     // console.log("Market: ", market)
 |     VERBOSE ? console.log("Market: ", market) : empty(); | ||||||
|     let id = `smarkets-${market.id}`; |     let id = `smarkets-${market.id}`; | ||||||
|     let name = market.name; |     let name = market.name; | ||||||
| 
 | 
 | ||||||
|     let contracts = await fetchContracts(market.id); |     let contracts = await fetchContracts(market.id); | ||||||
|     // console.log("Contracts: ", contracts)
 |     VERBOSE ? console.log("Contracts: ", contracts) : empty(); | ||||||
|     let prices = await fetchPrices(market.id); |     let prices = await fetchPrices(market.id); | ||||||
|     // console.log("Prices: ", prices["last_executed_prices"][market.id])
 |     VERBOSE | ||||||
|  |       ? console.log("Prices: ", prices["last_executed_prices"][market.id]) | ||||||
|  |       : empty(); | ||||||
| 
 | 
 | ||||||
|     let options = {}; |     let options = {}; | ||||||
|     for (let contract of contracts["contracts"]) { |     for (let contract of contracts["contracts"]) { | ||||||
|  | @ -109,11 +111,33 @@ export async function smarkets() { | ||||||
|     for (let price of prices["last_executed_prices"][market.id]) { |     for (let price of prices["last_executed_prices"][market.id]) { | ||||||
|       options[price.contract_id] = { |       options[price.contract_id] = { | ||||||
|         ...options[price.contract_id], |         ...options[price.contract_id], | ||||||
|         probability: Number(price.last_executed_price), |         probability: price.last_executed_price | ||||||
|  |           ? Number(price.last_executed_price) | ||||||
|  |           : null, | ||||||
|         type: "PROBABILITY", |         type: "PROBABILITY", | ||||||
|       }; |       }; | ||||||
|     } |     } | ||||||
|     options = Object.values(options); |     options = Object.values(options); | ||||||
|  |     // monkey patch the case where there are only two options and only one has traded.
 | ||||||
|  |     if ( | ||||||
|  |       options.length == 2 && | ||||||
|  |       options.map((option) => option.probability).includes(null) | ||||||
|  |     ) { | ||||||
|  |       let nonNullPrice = | ||||||
|  |         option[0].probability == null | ||||||
|  |           ? option[1].probability | ||||||
|  |           : option[0].probability; | ||||||
|  |       options = options.map((option) => { | ||||||
|  |         let probability = option.probability; | ||||||
|  |         return { | ||||||
|  |           ...option, | ||||||
|  |           probability: probability == null ? 100 - nonNullPrice : probability, | ||||||
|  |           // yes, 100, because prices are not yet normalized.
 | ||||||
|  |         }; | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Normalize normally
 | ||||||
|     let totalValue = options |     let totalValue = options | ||||||
|       .map((element) => Number(element.probability)) |       .map((element) => Number(element.probability)) | ||||||
|       .reduce((a, b) => a + b, 0); |       .reduce((a, b) => a + b, 0); | ||||||
|  | @ -122,8 +146,7 @@ export async function smarkets() { | ||||||
|       ...element, |       ...element, | ||||||
|       probability: Number(element.probability) / totalValue, |       probability: Number(element.probability) / totalValue, | ||||||
|     })); |     })); | ||||||
| 
 |     VERBOSE ? console.log(options) : empty(); | ||||||
|     // console.log(options)
 |  | ||||||
| 
 | 
 | ||||||
|     /* |     /* | ||||||
|     if(contracts["contracts"].length == 2){ |     if(contracts["contracts"].length == 2){ | ||||||
|  | @ -146,14 +169,15 @@ export async function smarkets() { | ||||||
|         stars: calculateStars("Smarkets", {}), |         stars: calculateStars("Smarkets", {}), | ||||||
|       }, |       }, | ||||||
|     }; |     }; | ||||||
|     // console.log(result)
 |     VERBOSE ? console.log(result) : empty(); | ||||||
|     results.push(result); |     results.push(result); | ||||||
|   } |   } | ||||||
|   // console.log(results)
 |   VERBOSE ? console.log(results) : empty(); | ||||||
| 
 | 
 | ||||||
|   // let string = JSON.stringify(results, null, 2)
 |   // let string = JSON.stringify(results, null, 2)
 | ||||||
|   // fs.writeFileSync('./data/smarkets-questions.json', string);
 |   // fs.writeFileSync('./data/smarkets-questions.json', string);
 | ||||||
|   await databaseUpsert({ contents: results, group: "smarkets" }); |   await databaseUpsert({ contents: results, group: "smarkets" }); | ||||||
| 
 |   VERBOSE ? console.log(JSON.stringify(results, null, 4)) : empty(); | ||||||
|  |   VERBOSE ? console.dir(results, { depth: null }) : empty(); | ||||||
| } | } | ||||||
| //smarkets()
 | //smarkets()
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user