add basic land guesser
also added fetcher to filter all cards instead of only unique art
This commit is contained in:
		
							parent
							
								
									b98a6caee3
								
							
						
					
					
						commit
						1194c1ac6f
					
				|  | @ -32,39 +32,32 @@ document.location.search.split('&').forEach((pair) => { | |||
|   } | ||||
| }) | ||||
| 
 | ||||
| let firstFetch = fetch('jsons/' + whichGuesser + page + '.json') | ||||
| let firstFetch = fetch('jsons/' + whichGuesser + '.json') | ||||
| fetchToResponse(firstFetch) | ||||
| 
 | ||||
| function putIntoMapAndFetch(data) { | ||||
|   putIntoMap(data.data) | ||||
|   if (data.has_more) { | ||||
|     page += 1 | ||||
|     window.setTimeout(() => | ||||
|       fetchToResponse(fetch('jsons/' + whichGuesser + page + '.json')) | ||||
|   for (const [key, value] of Object.entries(allData)) { | ||||
|     nameList.push(key) | ||||
|     probList.push( | ||||
|       value.length + (probList.length === 0 ? 0 : probList[probList.length - 1]) | ||||
|     ) | ||||
|   } else { | ||||
|     for (const [key, value] of Object.entries(allData)) { | ||||
|       nameList.push(key) | ||||
|       probList.push( | ||||
|         value.length + | ||||
|           (probList.length === 0 ? 0 : probList[probList.length - 1]) | ||||
|       ) | ||||
|       unseenTotal = total | ||||
|     } | ||||
|     window.console.log(allData) | ||||
|     window.console.log(total) | ||||
|     window.console.log(probList) | ||||
|     window.console.log(nameList) | ||||
|     if (whichGuesser === 'counterspell') { | ||||
|       document.getElementById('guess-type').innerText = 'Counterspell Guesser' | ||||
|     } else if (whichGuesser === 'burn') { | ||||
|       document.getElementById('guess-type').innerText = 'Match With Hot Singles' | ||||
|     } else if (whichGuesser === 'beast') { | ||||
|       document.getElementById('guess-type').innerText = | ||||
|         'Finding Fantastic Beasts' | ||||
|     } | ||||
|     setUpNewGame() | ||||
|     unseenTotal = total | ||||
|   } | ||||
|   window.console.log(allData) | ||||
|   window.console.log(total) | ||||
|   window.console.log(probList) | ||||
|   window.console.log(nameList) | ||||
|   if (whichGuesser === 'counterspell') { | ||||
|     document.getElementById('guess-type').innerText = 'Counterspell Guesser' | ||||
|   } else if (whichGuesser === 'burn') { | ||||
|     document.getElementById('guess-type').innerText = 'Match With Hot Singles' | ||||
|   } else if (whichGuesser === 'beast') { | ||||
|     document.getElementById('guess-type').innerText = 'Finding Fantastic Beasts' | ||||
|   } else if (whichGuesser === 'basic') { | ||||
|     document.getElementById('guess-type').innerText = 'Basic B****' | ||||
|   } | ||||
|   setUpNewGame() | ||||
| } | ||||
| 
 | ||||
| function getKSamples() { | ||||
|  | @ -134,11 +127,17 @@ function determineIfSkip(card) { | |||
|     } | ||||
|   } | ||||
|   if (firstPrint) { | ||||
|     if ( | ||||
|       card.reprint === true || | ||||
|       (card.frame_effects && card.frame_effects.includes('showcase')) | ||||
|     ) { | ||||
|       return true | ||||
|     if (whichGuesser == 'basic') { | ||||
|       if (card.set_type !== 'expansion') { | ||||
|         return true | ||||
|       } | ||||
|     } else { | ||||
|       if ( | ||||
|         card.reprint === true || | ||||
|         (card.frame_effects && card.frame_effects.includes('showcase')) | ||||
|       ) { | ||||
|         return true | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   // reskinned card names show in art crop
 | ||||
|  | @ -163,10 +162,6 @@ function putIntoMap(data) { | |||
|     let normalImg = '' | ||||
|     if (card.image_uris.normal) { | ||||
|       normalImg = card.image_uris.normal | ||||
|     } else if (card.image_uris.large) { | ||||
|       normalImg = card.image_uris.large | ||||
|     } else if (card.image_uris.small) { | ||||
|       normalImg = card.image_uris.small | ||||
|     } else { | ||||
|       continue | ||||
|     } | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import requests | |||
| import json | ||||
| 
 | ||||
| # add category name here | ||||
| allCategories = ['counterspell', 'beast', 'terror', 'wrath', 'burn'] | ||||
| allCategories = ['counterspell', 'beast', 'basic', 'burn'] #, 'terror', 'wrath'] | ||||
| 
 | ||||
| 
 | ||||
| def generate_initial_query(category): | ||||
|  | @ -12,21 +12,24 @@ def generate_initial_query(category): | |||
|         string_query += 'otag%3Acounterspell+t%3Ainstant+not%3Aadventure' | ||||
|     elif category == 'beast': | ||||
|         string_query += '-type%3Alegendary+type%3Abeast+-type%3Atoken' | ||||
|     elif category == 'terror': | ||||
|         string_query += 'otag%3Acreature-removal+o%3A%2Fdestroy+target.%2A+%28creature%7Cpermanent%29%2F+%28t' \ | ||||
|                         '%3Ainstant+or+t%3Asorcery%29+o%3Atarget+not%3Aadventure' | ||||
|     elif category == 'wrath': | ||||
|         string_query += 'otag%3Asweeper-creature+%28t%3Ainstant+or+t%3Asorcery%29+not%3Aadventure' | ||||
|     # elif category == 'terror': | ||||
|     #     string_query += 'otag%3Acreature-removal+o%3A%2Fdestroy+target.%2A+%28creature%7Cpermanent%29%2F+%28t' \ | ||||
|     #                     '%3Ainstant+or+t%3Asorcery%29+o%3Atarget+not%3Aadventure' | ||||
|     # elif category == 'wrath': | ||||
|     #     string_query += 'otag%3Asweeper-creature+%28t%3Ainstant+or+t%3Asorcery%29+not%3Aadventure' | ||||
|     elif category == 'burn': | ||||
|         string_query += '%28c>%3Dr+or+mana>%3Dr%29+%28o%3A%2Fdamage+to+them%2F+or+%28o%3Adeals+o%3Adamage+o%3A' \ | ||||
|                         '%2Fcontroller%28%5C.%7C+%29%2F%29+or+o%3A%2F~+deals+%28.%7C..%29+damage+to+%28any+target%7C' \ | ||||
|                         '.*player%28%5C.%7C+or+planeswalker%29%7C.*opponent%28%5C.%7C+or+planeswalker%29%29%2F%29' \ | ||||
|                         '+%28type%3Ainstant+or+type%3Asorcery%29+not%3Aadventure' | ||||
|     elif category == 'basic': | ||||
|         string_query += 't%3Abasic&order=released&dir=asc&unique=prints&page=' | ||||
|     # add category string query here | ||||
|     string_query += '+-%28set%3Asld+%28%28cn>%3D231+cn<%3D233%29+or+%28cn>%3D321+cn<%3D324%29+or+%28cn>%3D185+cn' \ | ||||
|     if category != 'basic': | ||||
|         string_query += '+-%28set%3Asld+%28%28cn>%3D231+cn<%3D233%29+or+%28cn>%3D321+cn<%3D324%29+or+%28cn>%3D185+cn' \ | ||||
|                     '<%3D189%29+or+%28cn>%3D138+cn<%3D142%29+or+%28cn>%3D364+cn<%3D368%29+or+cn%3A669+or+cn%3A670%29' \ | ||||
|                     '%29+-name%3A%2F%5EA-%2F+not%3Adfc+not%3Asplit+-set%3Acmb2+-set%3Acmb1+-set%3Aplist+-set%3Adbl' \ | ||||
|                     '+-frame%3Aextendedart+language%3Aenglish&unique=art&page=' | ||||
|                     '+-frame%3Aextendedart+language%3Aenglish&order=released&dir=asc&unique=prints&page=' | ||||
|     print(string_query) | ||||
|     return string_query | ||||
| 
 | ||||
|  | @ -34,42 +37,58 @@ def generate_initial_query(category): | |||
| def fetch_and_write_all(category, query): | ||||
|     count = 1 | ||||
|     will_repeat = True | ||||
|     all_cards = {'data' : []} | ||||
|     art_names = set() | ||||
|     while will_repeat: | ||||
|         will_repeat = fetch_and_write(category, query, count) | ||||
|         count += 1 | ||||
|         response = fetch(query, count) | ||||
|         will_repeat = response['has_more'] | ||||
|         count+=1 | ||||
|         to_compact_write_form(all_cards, art_names, response, category) | ||||
|      | ||||
|     with open('jsons/' + category + '.json', 'w') as f: | ||||
|         json.dump(all_cards, f) | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
| def fetch_and_write(category, query, count): | ||||
| def fetch(query, count): | ||||
|     query += str(count) | ||||
|     response = requests.get(f"{query}").json() | ||||
|     time.sleep(0.1) | ||||
|     with open('jsons/' + category + str(count) + '.json', 'w') as f: | ||||
|         json.dump(to_compact_write_form(response), f) | ||||
|     return response['has_more'] | ||||
|     return response | ||||
| 
 | ||||
| 
 | ||||
| def to_compact_write_form(response): | ||||
|     fieldsToUse = ['has_more'] | ||||
| def to_compact_write_form(smallJson, art_names, response, category): | ||||
|     fieldsInCard = ['name', 'image_uris', 'content_warning', 'flavor_name', 'reprint', 'frame_effects', 'digital', | ||||
|                     'set_type'] | ||||
|     smallJson = dict() | ||||
|     fieldsInBasic = ['image_uris', 'set_name', 'set_type', 'digital'] | ||||
|     data = [] | ||||
|     # write all fields needed in response | ||||
|     for field in fieldsToUse: | ||||
|         smallJson[field] = response[field] | ||||
|     # write all fields needed in card | ||||
|     for card in response['data']: | ||||
|         # do not repeat art | ||||
|         if 'illustration_id' not in card or card['illustration_id'] in art_names: | ||||
|             continue | ||||
|         else: | ||||
|             art_names.add(card['illustration_id']) | ||||
| 
 | ||||
|         write_card = dict() | ||||
|         for field in fieldsInCard: | ||||
|             if field == 'name' and 'card_faces' in card: | ||||
|                 write_card['name'] = card['card_faces'][0]['name'] | ||||
|             elif field == 'image_uris': | ||||
|                 write_card['image_uris'] = write_image_uris(card['image_uris']) | ||||
|             elif field in card: | ||||
|                 write_card[field] = card[field] | ||||
|         if category == 'basic': | ||||
|             for field in fieldsInBasic: | ||||
|                 if field == 'image_uris': | ||||
|                     write_card['image_uris'] = write_image_uris(card['image_uris']) | ||||
|                 elif field == 'set_name': | ||||
|                     write_card['name'] = card['set_name'] | ||||
|                 elif field in card: | ||||
|                     write_card[field] = card[field] | ||||
|         else: | ||||
|             for field in fieldsInCard: | ||||
|                 if field == 'name' and 'card_faces' in card: | ||||
|                     write_card['name'] = card['card_faces'][0]['name'] | ||||
|                 elif field == 'image_uris': | ||||
|                     write_card['image_uris'] = write_image_uris(card['image_uris']) | ||||
|                 elif field in card: | ||||
|                     write_card[field] = card[field] | ||||
|         data.append(write_card) | ||||
|     smallJson['data'] = data | ||||
|     return smallJson | ||||
|     smallJson['data'] += data | ||||
| 
 | ||||
| 
 | ||||
| # only write images needed | ||||
|  |  | |||
|  | @ -159,6 +159,16 @@ | |||
|         > | ||||
|         <br /> | ||||
| 
 | ||||
|         <input type="radio" id="basic" name="whichguesser" value="basic" /> | ||||
|         <label class="radio-label" for="basic"> | ||||
|           <img | ||||
|             class="thumbnail" | ||||
|             src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/0/3/03683fbb-9843-4c14-bb95-387150e97c90.jpg?1642161346" | ||||
|           /> | ||||
|           <h3>Basic B****round</h3></label | ||||
|         > | ||||
|         <br /> | ||||
| 
 | ||||
|         <details id="addl-options"> | ||||
|           <summary> | ||||
|             <img | ||||
|  | @ -174,7 +184,7 @@ | |||
|           <label for="un">include un-cards</label> | ||||
|           <br /> | ||||
|           <input type="checkbox" name="original" id="original" /> | ||||
|           <label for="original">restrict to only original printing</label> | ||||
|           <label for="original">only original set printing</label> | ||||
|         </details> | ||||
|         <input type="submit" id="submit" value="Play" /> | ||||
|       </form> | ||||
|  |  | |||
							
								
								
									
										1
									
								
								web/public/mtg/jsons/basic.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								web/public/mtg/jsons/basic.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								web/public/mtg/jsons/beast.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								web/public/mtg/jsons/beast.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								web/public/mtg/jsons/burn.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								web/public/mtg/jsons/burn.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								web/public/mtg/jsons/counterspell.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								web/public/mtg/jsons/counterspell.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user