diff --git a/.gitignore b/.gitignore index 4c49bd7..59e32fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .env +*.json \ No newline at end of file diff --git a/README.md b/README.md index 7d14c30..7ae4554 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,35 @@ This repository contains scripts to search for Magic: The Gathering cards by image contents. -## generate-card-captions.js +#### generate-card-captions.js This script takes a JSON file from scryfall.com containing card data. It generates a JSON file containing card names, IDs, and captions for each card. The captions are generated using Azure Cognitive Services Computer Vision API. -## search-cards.js +#### search-cards.js This script takes the output of generate-card-captions.js and searches the card captions for keywords provided and outputs another JSON file containing the results. + +## Requirements + +- Node.js +- Azure Cognitive Services Computer Vision API key and endpoint + +## Usage + +1. Clone the repository. +2. Run `npm install` to install dependencies. +3. Obtain card data as JSON from [scryfall](https://scryfall.com/docs/api/bulk-data). Data should be an array of card objects as defined by the [scryfall API docs](https://scryfall.com/docs/api/cards) +4. Create a `.env` file in the root directory with the following contents: + +``` +AZURE_VISION_RESOURCE_URL=https://.cognitiveservices.azure.com/ +AZURE_VISION_SUBSCRIPTION_KEY= +``` + +5. Run `node generate-card-captions.js -i ` to generate card captions. + + 1. Add `-o ` to specify an output file. + 2. Add `-a ` to specify the Azure Cognitive Services API version. + 3. Add `-m ` to specify the Azure Cognitive Services model version. + +6. If you want to search generated captions, currently you must modify `search-cards.js` to include the keywords you want to search for. Then run `node search-cards.js` to search the captions. Maybe I'll add command line arguments for this in the future, idk. Alternatively, check out the [MTG Visual Search Web App](http://nuc2:3000/henry/mtg-visual-search) for a clean interface to search for cards. diff --git a/generate-card-captions.js b/generate-card-captions.js index 101e73a..1852a60 100644 --- a/generate-card-captions.js +++ b/generate-card-captions.js @@ -43,6 +43,8 @@ let simpleCardArray = largeImages.map((card) => { id: card.id, oracleId: card.oracle_id, url: card.scryfall_uri, + mediumImageUrl: + card.image_uris.normal || card.image_uris.small || card.image_uris.large, caption: null, } })