commit
2936e6820d
|
@ -0,0 +1,31 @@
|
|||
# This workflows will upload a Python Package using Twine when a release is created
|
||||
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
||||
|
||||
name: Upload Python Package
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install setuptools wheel twine
|
||||
- name: Build and publish
|
||||
env:
|
||||
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
|
||||
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
||||
run: |
|
||||
python setup.py sdist bdist_wheel
|
||||
twine upload dist/*
|
|
@ -0,0 +1,53 @@
|
|||
import scrython
|
||||
import requests
|
||||
import time
|
||||
|
||||
IMAGE_PATH = './' # You can replace this with whatever path
|
||||
|
||||
def get_set_code():
|
||||
all_sets = scrython.sets.Sets()
|
||||
for i, set_object in enumerate(all_sets.data()):
|
||||
print(i, all_sets.data(i, "name"))
|
||||
|
||||
choice = int(input("Select your set by number: "))
|
||||
|
||||
code = all_sets.data(choice, "code")
|
||||
|
||||
return code
|
||||
|
||||
def save_image(path, url, name):
|
||||
response = requests.get(url)
|
||||
|
||||
with open('{}{}.png'.format(path, name), 'wb') as f:
|
||||
f.write(response.content)
|
||||
|
||||
def get_all_pages(set_code):
|
||||
page_count = 1
|
||||
all_data = []
|
||||
while True:
|
||||
time.sleep(0.5)
|
||||
page = scrython.cards.Search(q='e:{}'.format(set_code), page=page_count)
|
||||
all_data = all_data + page.data()
|
||||
page_count += 1
|
||||
if not page.has_more():
|
||||
break
|
||||
|
||||
return all_data
|
||||
|
||||
def get_all_cards(card_array):
|
||||
card_list = []
|
||||
for card in card_array:
|
||||
time.sleep(0.5)
|
||||
id_ = card['id']
|
||||
card = scrython.cards.Id(id=id_)
|
||||
card_list.append(card)
|
||||
|
||||
return card_list
|
||||
|
||||
code = get_set_code()
|
||||
card_list = get_all_pages(code)
|
||||
card_list_objects = get_all_cards(card_list)
|
||||
|
||||
for card in card_list_objects:
|
||||
time.sleep(0.1)
|
||||
save_image(IMAGE_PATH, card.image_uris(0, 'normal'), card.name())
|
|
@ -0,0 +1,56 @@
|
|||
import scrython
|
||||
import time
|
||||
import json
|
||||
import os.path
|
||||
import re
|
||||
|
||||
# This file will parse a scryfall exported deck list and create a list of tokens
|
||||
# needed for that deck. To run this, make sure that your deck file is in the same folder
|
||||
# as this. You can then copy/paste the output file back into Scryfall to list all the
|
||||
# tokens.
|
||||
|
||||
def get_cards():
|
||||
with open('scryfall-deck.txt', 'r') as f:
|
||||
cards_from_file = f.read().splitlines()
|
||||
|
||||
list_of_cards = []
|
||||
for name in cards_from_file:
|
||||
true_name = re.findall(r'[^\d\s//].*', name)
|
||||
if true_name == ['Commander'] or len(true_name) == 0:
|
||||
continue
|
||||
else:
|
||||
true_name = true_name[0]
|
||||
|
||||
list_of_cards.append(true_name)
|
||||
|
||||
data = { 'data': [] }
|
||||
|
||||
for i, card in enumerate(list_of_cards, start=1):
|
||||
print('Fetching card: {} | {} of {}'.format(card, i, len(list_of_cards)))
|
||||
card = scrython.cards.Named(fuzzy=card)
|
||||
data['data'].append(card.scryfallJson)
|
||||
time.sleep(0.5)
|
||||
|
||||
with open('scryfall_data.json', 'w+') as f:
|
||||
f.write(json.dumps(data, sort_keys=True, indent=4))
|
||||
|
||||
def create_list():
|
||||
with open('scryfall_data.json', 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Parses through each card in the full json we collected from get_cards
|
||||
# If the card has the all_parts key, check if it's a token.
|
||||
# If it is, fetch that token and record it's name and set code
|
||||
with open('tokens_needed.txt', 'w') as f:
|
||||
for card in data['data']:
|
||||
if 'all_parts' in card:
|
||||
for part in card['all_parts']:
|
||||
if part['component'] == 'token':
|
||||
token = scrython.cards.Id(id=part['id'])
|
||||
time.sleep(0.1)
|
||||
f.write('{} | {}\n'.format(token.name(), token.set_code()))
|
||||
|
||||
if not os.path.isfile('./scryfall_data.json'):
|
||||
get_cards()
|
||||
|
||||
create_list()
|
|
@ -175,7 +175,8 @@ class CardsObject(FoundationObject):
|
|||
'emblem': lambda num: self.scryfallJson['image_uris'],
|
||||
'augment': lambda num: self.scryfallJson['image_uris'],
|
||||
'host': lambda num: self.scryfallJson['image_uris'],
|
||||
'adventure': lambda num: self.scryfallJson['image_uris']
|
||||
'adventure': lambda num: self.scryfallJson['image_uris'],
|
||||
'modal_dfc': lambda num: self.scryfallJson['card_faces'][num]['image_uris']
|
||||
}
|
||||
|
||||
image_types = {
|
||||
|
|
Loading…
Reference in New Issue