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 */ | ||||
| let htmlEndPointEntrance = "https://api.smarkets.com/v3/events/"; | ||||
| 
 | ||||
| let VERBOSE = false; | ||||
| let empty = (x) => x; | ||||
| /* Support functions */ | ||||
| 
 | ||||
| async function fetchEvents(url) { | ||||
|  | @ -18,7 +19,7 @@ async function fetchEvents(url) { | |||
|       "Content-Type": "text/html", | ||||
|     }, | ||||
|   }).then((res) => res.data); | ||||
|   // console.log(response)
 | ||||
|   VERBOSE ? console.log(response) : empty(); | ||||
|   return response; | ||||
| } | ||||
| 
 | ||||
|  | @ -43,7 +44,7 @@ async function fetchContracts(marketid) { | |||
|       "Content-Type": "text/html", | ||||
|     }, | ||||
|   }).then((res) => res.data); | ||||
|   // console.log(response)
 | ||||
|   VERBOSE ? console.log(response) : empty(); | ||||
|   return response; | ||||
| } | ||||
| 
 | ||||
|  | @ -55,7 +56,7 @@ async function fetchPrices(marketid) { | |||
|       "Content-Type": "text/html", | ||||
|     }, | ||||
|   }).then((res) => res.data); | ||||
|   // console.log(response)
 | ||||
|   VERBOSE ? console.log(response) : empty(); | ||||
|   return response; | ||||
| } | ||||
| 
 | ||||
|  | @ -71,36 +72,37 @@ export async function smarkets() { | |||
|     events.push(...data.events); | ||||
|     htmlPath = data.pagination.next_page; | ||||
|   } | ||||
|   // console.log(events)
 | ||||
| 
 | ||||
|   VERBOSE ? console.log(events) : empty(); | ||||
|   let markets = []; | ||||
|   for (let event of events) { | ||||
|     // console.log(Date.now())
 | ||||
|     // console.log(event.name)
 | ||||
|     VERBOSE ? console.log(Date.now()) : empty(); | ||||
|     VERBOSE ? console.log(event.name) : empty(); | ||||
|     let eventMarkets = await fetchMarkets(event.id); | ||||
|     eventMarkets = eventMarkets.map((market) => ({ | ||||
|       ...market, | ||||
|       slug: event.full_slug, | ||||
|     })); | ||||
|     // console.log("Markets fetched")
 | ||||
|     // console.log(event.id)
 | ||||
|     // console.log(market)
 | ||||
|     VERBOSE ? console.log("Markets fetched") : empty(); | ||||
|     VERBOSE ? console.log(event.id) : empty(); | ||||
|     VERBOSE ? console.log(market) : empty(); | ||||
|     markets.push(...eventMarkets); | ||||
|     //let lastPrices = await fetchPrices(market.id)
 | ||||
|   } | ||||
|   // console.log(markets)
 | ||||
|   VERBOSE ? console.log(markets) : empty(); | ||||
| 
 | ||||
|   let results = []; | ||||
|   for (let market of markets) { | ||||
|     // console.log("================")
 | ||||
|     // console.log("Market: ", market)
 | ||||
|     VERBOSE ? console.log("================") : empty(); | ||||
|     VERBOSE ? console.log("Market: ", market) : empty(); | ||||
|     let id = `smarkets-${market.id}`; | ||||
|     let name = market.name; | ||||
| 
 | ||||
|     let contracts = await fetchContracts(market.id); | ||||
|     // console.log("Contracts: ", contracts)
 | ||||
|     VERBOSE ? console.log("Contracts: ", contracts) : empty(); | ||||
|     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 = {}; | ||||
|     for (let contract of contracts["contracts"]) { | ||||
|  | @ -109,11 +111,33 @@ export async function smarkets() { | |||
|     for (let price of prices["last_executed_prices"][market.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", | ||||
|       }; | ||||
|     } | ||||
|     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 | ||||
|       .map((element) => Number(element.probability)) | ||||
|       .reduce((a, b) => a + b, 0); | ||||
|  | @ -122,8 +146,7 @@ export async function smarkets() { | |||
|       ...element, | ||||
|       probability: Number(element.probability) / totalValue, | ||||
|     })); | ||||
| 
 | ||||
|     // console.log(options)
 | ||||
|     VERBOSE ? console.log(options) : empty(); | ||||
| 
 | ||||
|     /* | ||||
|     if(contracts["contracts"].length == 2){ | ||||
|  | @ -146,14 +169,15 @@ export async function smarkets() { | |||
|         stars: calculateStars("Smarkets", {}), | ||||
|       }, | ||||
|     }; | ||||
|     // console.log(result)
 | ||||
|     VERBOSE ? console.log(result) : empty(); | ||||
|     results.push(result); | ||||
|   } | ||||
|   // console.log(results)
 | ||||
|   VERBOSE ? console.log(results) : empty(); | ||||
| 
 | ||||
|   // let string = JSON.stringify(results, null, 2)
 | ||||
|   // fs.writeFileSync('./data/smarkets-questions.json', string);
 | ||||
|   await databaseUpsert({ contents: results, group: "smarkets" }); | ||||
| 
 | ||||
|   VERBOSE ? console.log(JSON.stringify(results, null, 4)) : empty(); | ||||
|   VERBOSE ? console.dir(results, { depth: null }) : empty(); | ||||
| } | ||||
| //smarkets()
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user