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 = { | ||||
|  | @ -747,4 +748,4 @@ class CardsObject(FoundationObject): | |||
|         if key in self.scryfallJson['preview']: | ||||
|             return self.scryfallJson['preview'][key] | ||||
| 
 | ||||
|         return self.scryfallJson['preview'] | ||||
|         return self.scryfallJson['preview'] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue