add commander category (#861)

* fix https

* add beasts

* Remove extra file

* Prettier-ify code

* Prettier-ify

* add basic land guesser

also added fetcher to filter all cards instead of only unique art

* default to original

makes basic better

* added set symbol to basics

added set symbol to the basics game mode. Changed name to "How Basic"

* cleanup

* changed some pixels

* only load set data if needed

* hacked fix for removing image from name

* removed check from original

* remove check from original

* sort names by set instead of by set symbol

* include battlebond

* update cards for categories

update for dominaria united

* added commander category

commander category

* update basic land art

* can use double feature

* removing racist cards upstream

this way we don't have to store the cards in the json

Co-authored-by: Austin Chen <akrolsmir@gmail.com>
This commit is contained in:
marsteralex 2022-09-08 18:38:48 -07:00 committed by GitHub
parent b9ae919fda
commit 8aeb544f7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 73 additions and 21 deletions

View File

@ -64,6 +64,8 @@ function putIntoMapAndFetch(data) {
document.getElementById('guess-type').innerText = 'Finding Fantastic Beasts' document.getElementById('guess-type').innerText = 'Finding Fantastic Beasts'
} else if (whichGuesser === 'basic') { } else if (whichGuesser === 'basic') {
document.getElementById('guess-type').innerText = 'How Basic' document.getElementById('guess-type').innerText = 'How Basic'
} else if (whichGuesser === 'commander') {
document.getElementById('guess-type').innerText = 'General Knowledge'
} }
setUpNewGame() setUpNewGame()
} }
@ -156,8 +158,8 @@ function determineIfSkip(card) {
if (card.flavor_name) { if (card.flavor_name) {
return true return true
} }
// don't include racist cards
return card.content_warning return false
} }
function putIntoMap(data) { function putIntoMap(data) {

View File

@ -3,7 +3,7 @@ import requests
import json import json
# add category name here # add category name here
allCategories = ['counterspell', 'beast', 'burn'] #, 'terror', 'wrath'] allCategories = ['counterspell', 'beast', 'burn', 'commander'] #, 'terror', 'wrath']
specialCategories = ['set', 'basic'] specialCategories = ['set', 'basic']
@ -23,10 +23,12 @@ def generate_initial_query(category):
'%2Fcontroller%28%5C.%7C+%29%2F%29+or+o%3A%2F~+deals+%28.%7C..%29+damage+to+%28any+target%7C' \ '%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' \ '.*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' '+%28type%3Ainstant+or+type%3Asorcery%29+not%3Aadventure'
elif category == 'commander':
string_query += '-banned%3Acommander+is%3Acommander'
# add category string query here # 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' \ 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' \ '<%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' \ '%29+-name%3A%2F%5EA-%2F+not%3Adfc+not%3Asplit+-set%3Acmb2+-set%3Acmb1+-set%3Aplist' \
'+language%3Aenglish&order=released&dir=asc&unique=prints&page=' '+language%3Aenglish&order=released&dir=asc&unique=prints&page='
print(string_query) print(string_query)
return string_query return string_query
@ -51,7 +53,7 @@ def fetch_and_write_all(category, query):
response = fetch(query, count) response = fetch(query, count)
will_repeat = response['has_more'] will_repeat = response['has_more']
count+=1 count+=1
to_compact_write_form(all_cards, art_names, response, category) to_compact_write_form(all_cards, art_names, response)
with open('jsons/' + category + '.json', 'w') as f: with open('jsons/' + category + '.json', 'w') as f:
json.dump(all_cards, f) json.dump(all_cards, f)
@ -88,12 +90,14 @@ def fetch_special(query):
return response return response
def to_compact_write_form(smallJson, art_names, response, category): def to_compact_write_form(smallJson, art_names, response):
fieldsInCard = ['name', 'image_uris', 'content_warning', 'flavor_name', 'reprint', 'frame_effects', 'digital', fieldsInCard = ['name', 'image_uris', 'flavor_name', 'reprint', 'frame_effects', 'digital', 'set_type']
'set_type']
data = [] data = []
# write all fields needed in card # write all fields needed in card
for card in response['data']: for card in response['data']:
# do not include racist cards
if 'content_warning' in card and card['content_warning'] == True:
continue
# do not repeat art # do not repeat art
if 'illustration_id' not in card or card['illustration_id'] in art_names: if 'illustration_id' not in card or card['illustration_id'] in art_names:
continue continue
@ -152,9 +156,9 @@ def write_image_uris(card_image_uris):
if __name__ == "__main__": if __name__ == "__main__":
# for category in allCategories: for category in allCategories:
# print(category) print(category)
# fetch_and_write_all(category, generate_initial_query(category)) fetch_and_write_all(category, generate_initial_query(category))
for category in specialCategories: for category in specialCategories:
print(category) print(category)
fetch_and_write_all_special(category, generate_initial_special_query(category)) fetch_and_write_all_special(category, generate_initial_special_query(category))

View File

@ -17,6 +17,14 @@
f.parentNode.insertBefore(j, f) f.parentNode.insertBefore(j, f)
})(window, document, 'script', 'dataLayer', 'GTM-M3MBVGG') })(window, document, 'script', 'dataLayer', 'GTM-M3MBVGG')
</script> </script>
<script>
function updateSettingDefault(digital, un, original) {
window.console.log(digital, un, original)
document.getElementById('digital').checked = digital
document.getElementById('un').checked = un
document.getElementById('original').checked = original
}
</script>
<!-- End Google Tag Manager --> <!-- End Google Tag Manager -->
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<style type="text/css"> <style type="text/css">
@ -132,7 +140,11 @@
value="counterspell" value="counterspell"
checked checked
/> />
<label class="radio-label" for="counterspell"> <label
class="radio-label"
for="counterspell"
onchange="updateSettingDefault(true, true, false)"
>
<img <img
class="thumbnail" class="thumbnail"
src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/7/1/71cfcba5-1571-48b8-a3db-55dca135506e.jpg?1562843855" src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/7/1/71cfcba5-1571-48b8-a3db-55dca135506e.jpg?1562843855"
@ -140,7 +152,13 @@
<h3>Counterspell Guesser</h3></label <h3>Counterspell Guesser</h3></label
><br /> ><br />
<input type="radio" id="burn" name="whichguesser" value="burn" /> <input
type="radio"
id="burn"
name="whichguesser"
value="burn"
onchange="updateSettingDefault(true, true, false)"
/>
<label class="radio-label" for="burn"> <label class="radio-label" for="burn">
<img <img
class="thumbnail" class="thumbnail"
@ -149,7 +167,13 @@
<h3>Match With Hot Singles</h3></label <h3>Match With Hot Singles</h3></label
><br /> ><br />
<input type="radio" id="beast" name="whichguesser" value="beast" /> <input
type="radio"
id="beast"
name="whichguesser"
value="beast"
onchange="updateSettingDefault(true, true, false)"
/>
<label class="radio-label" for="beast"> <label class="radio-label" for="beast">
<img <img
class="thumbnail" class="thumbnail"
@ -159,16 +183,37 @@
> >
<br /> <br />
<input type="radio" id="basic" name="whichguesser" value="basic" /> <input
type="radio"
id="basic"
name="whichguesser"
value="basic"
onchange="updateSettingDefault(true, true, true)"
/>
<label class="radio-label" for="basic"> <label class="radio-label" for="basic">
<img <img
class="thumbnail" class="thumbnail"
src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/0/3/03683fbb-9843-4c14-bb95-387150e97c90.jpg?1642161346" src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/e/5/e52ed647-bd30-40a5-b648-0b98d1a3fd4a.jpg?1562949575"
/> />
<h3>How Basic</h3></label <h3>How Basic</h3></label
> >
<br /> <br />
<input
type="radio"
id="commander"
name="whichguesser"
value="commander"
onchange="updateSettingDefault(false, false, false)"
/>
<label class="radio-label" for="commander">
<img
class="thumbnail"
src="https://c1.scryfall.com/file/scryfall-cards/art_crop/front/d/9/d9631cb2-d53b-4401-b53b-29d27bdefc44.jpg?1562770627"
/>
<h3>General Knowledge</h3></label
><br />
<details id="addl-options"> <details id="addl-options">
<summary> <summary>
<img <img

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long