A simple hearthstone deck tool created for quickly comparing two decks. Eventually, a bunch of other functionalities were added. Check below for full options.
Cards database is created automatically on the first execution.
HSReplay collection can be imported and used to show a collection summary and to calculate dust cost to craft a deck and show the missing cards.
Multiple languages are supported, just use the '-l' switch. See examples below and the main usage help for a list of supported languages.
Show deck example:
$ hsdecks show AAECAZ8FBpwC9gf8uAOEwQOT0APD0QMM+wGVpgPKuAP9uAPquQPruQPsuQPKwQOVzQOezQOfzQPA0QMA CLASS: PALADIN TYPE: STANDARD +------+-----------+-----+---------------------+---------------------+ | MANA | RARITY | QTY | NAME | SET | +------+-----------+-----+---------------------+---------------------+ | 0 | COMMON | 2 | First Day of School | Scholomance Academy | | 1 | COMMON | 2 | Aldor Attendant | Ashes of Outland | | 1 | COMMON | 2 | Animated Broomstick | Scholomance Academy | | 1 | COMMON | 2 | Pen Flinger | Scholomance Academy | | 2 | FREE | 1 | Novice Engineer | Basic | | 2 | RARE | 1 | Wild Pyromancer | Classic | | 2 | LEGENDARY | 1 | Murgur Murgurgle | Ashes of Outland | | 2 | COMMON | 2 | Loot Hoarder | Classic | | 2 | RARE | 2 | Libram of Wisdom | Ashes of Outland | | 2 | COMMON | 2 | Hand of A'dal | Ashes of Outland | | 3 | LEGENDARY | 1 | Lord Barov | Scholomance Academy | | 3 | RARE | 2 | Salhet's Pride | Saviors of Uldum | | 4 | LEGENDARY | 1 | High Abbess Alura | Scholomance Academy | | 5 | COMMON | 2 | Libram of Justice | Ashes of Outland | | 5 | RARE | 2 | Aldor Truthseeker | Ashes of Outland | | 6 | EPIC | 2 | Devout Pupil | Scholomance Academy | | 7 | LEGENDARY | 1 | Lady Liadrin | Ashes of Outland | | 9 | EPIC | 2 | Libram of Hope | Ashes of Outland | +------+-----------+-----+---------------------+---------------------+ DUST: 9260
Compare decks example:
$ hsdecks comp AAECAa0GBJACha0DjrEDyL4DDZcC9gfTCoGxA5i2A5O6A5u6A6+6A97MA8vNA9fOA+PRA/7RAwA= AAECAa0GBIWtA46xA8i+A8jAAw2QAvYHsJED2qwDgbEDmLYDk7oDr7oD3swDy80D184D49ED/tEDAA== DECK DIFFERENCES ---------------- DECK 1 ------ CLASS: PRIEST TYPE: STANDARD +------+--------+-----+---------------------+------------------+ | MANA | RARITY | QTY | NAME | SET | +------+--------+-----+---------------------+------------------+ | 1 | FREE | 2 | Holy Smite | Basic | | 2 | EPIC | 2 | Sethekk Veilweaver | Ashes of Outland | | 2 | FREE | 2 | Shadow Word: Death | Basic | | 6 | EPIC | 1 | Cabal Shadow Priest | Classic | +------+--------+-----+---------------------+------------------+ DECK 2 ------ CLASS: PRIEST TYPE: STANDARD +------+-----------+-----+----------------------------+--------------------+ | MANA | RARITY | QTY | NAME | SET | +------+-----------+-----+----------------------------+--------------------+ | 0 | EPIC | 2 | Lazul's Scheme | Rise of Shadows | | 1 | COMMON | 2 | Disciple of Galakrond | Descent of Dragons | | 6 | EPIC | 2 | Cabal Shadow Priest | Classic | | 7 | LEGENDARY | 1 | Galakrond, the Unspeakable | Descent of Dragons | +------+-----------+-----+----------------------------+--------------------+
Show deck in ptBR:
$ hsdecks -l ptbr show AAECAa0GBJACha0DjrEDyL4DDZcC9gfTCoGxA5i2A5O6A5u6A6+6A97MA8vNA9fOA+PRA/7RAwA= CLASS: PRIEST TYPE: STANDARD +------+-----------+-----+------------------------+-----------------------+ | MANA | RARITY | QTY | NAME | SET | +------+-----------+-----+------------------------+-----------------------+ | 0 | COMMON | 2 | Reviver Morto | Scholomance Academy | | 1 | FREE | 2 | Punição Sagrada | Basic | | 1 | RARE | 2 | Clériga das Escamas | Galakrond's Awakening | | 1 | COMMON | 2 | Renovar | Ashes of Outland | | 1 | COMMON | 2 | Estudos Dragônicos | Scholomance Academy | | 1 | COMMON | 2 | Onda de Apatia | Scholomance Academy | | 2 | RARE | 2 | Piromante Selvagem | Classic | | 2 | FREE | 2 | Palavra Sombria: Morte | Basic | | 2 | EPIC | 2 | Trança-Véus Sethekk | Ashes of Outland | | 2 | COMMON | 2 | Artesã de Varinhas | Scholomance Academy | | 3 | LEGENDARY | 1 | Rasgamentes Kaahrj | Descent of Dragons | | 3 | COMMON | 2 | Apoteose | Ashes of Outland | | 4 | EPIC | 2 | Acólito do Conluio | Scholomance Academy | | 5 | RARE | 2 | Encantante Cobalto | Descent of Dragons | | 6 | EPIC | 1 | Sacerdotisa do Conluio | Classic | | 7 | LEGENDARY | 1 | Espelho da Alma | Ashes of Outland | | 8 | LEGENDARY | 1 | Murozond, o Infinito | Descent of Dragons | +------+-----------+-----+------------------------+-----------------------+ DUST: 7880
Import a collection from hsreplay:
$ hsdecks col import IMPORT COLLECTION ----------------- HSReplay public collection URL: https://hsreplay.net/collection/.../ Collection name: myuser Importing collection... Done!
After that, you can check for missing cards and dust cost to craft a deck:
$ hsdecks craft myuser AAECAea5AwTMugPDvAONvQPaxgMN+a4Di7oDvbsD17sDxLwD4LwDusYDx8YD2cYD18gD98gD+cgD/sgDAA== MISSING CARDS ------------- CLASS: DEMONHUNTER TYPE: STANDARD +------+-----------+-----+------------------------+------------------+ | MANA | RARITY | QTY | NAME | SET | +------+-----------+-----+------------------------+------------------+ | 4 | LEGENDARY | 1 | Kayn Sunfury | Ashes of Outland | | 5 | LEGENDARY | 1 | Metamorphosis | Ashes of Outland | | 6 | EPIC | 2 | Warglaives of Azzinoth | Ashes of Outland | +------+-----------+-----+------------------------+------------------+ DUST TO CRAFT: 4000
Also, you can get a collection summary:
$ hsdecks col show myuser Myuser COLLECTION ----------------- BASIC ----- +--------+-----------+--------+---------+------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +--------+-----------+--------+---------+------+---------------+ | | | | | | | | FREE | 286 / 286 | 100.00 | 0 | 0.00 | 0 | +--------+-----------+--------+---------+------+---------------+ CLASSIC ------- +-----------+-----------+--------+---------+-------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+-----------+--------+---------+-------+---------------+ | COMMON | 184 / 184 | 100.00 | 0 | 0.00 | 0 | | RARE | 92 / 160 | 57.50 | 68 | 42.50 | 6800 | | EPIC | 19 / 72 | 26.39 | 53 | 73.61 | 21200 | | LEGENDARY | 5 / 32 | 15.62 | 27 | 84.38 | 43200 | | | | | | | | | TOTAL | 300 / 448 | 66.96 | 148 | 33.04 | 71200 | +-----------+-----------+--------+---------+-------+---------------+ HALL OF FAME ------------ +-----------+--------+-------+---------+--------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+--------+-------+---------+--------+---------------+ | COMMON | 6 / 22 | 27.27 | 16 | 72.73 | 640 | | RARE | 3 / 16 | 18.75 | 13 | 81.25 | 1300 | | EPIC | 0 / 14 | 0.00 | 14 | 100.00 | 5600 | | LEGENDARY | 0 / 9 | 0.00 | 9 | 100.00 | 14400 | | | | | | | | | TOTAL | 9 / 61 | 14.75 | 52 | 85.25 | 21940 | +-----------+--------+-------+---------+--------+---------------+ RISE OF SHADOWS --------------- +-----------+-----------+--------+---------+-------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+-----------+--------+---------+-------+---------------+ | COMMON | 98 / 98 | 100.00 | 0 | 0.00 | 0 | | RARE | 50 / 74 | 67.57 | 24 | 32.43 | 2400 | | EPIC | 12 / 52 | 23.08 | 40 | 76.92 | 16000 | | LEGENDARY | 6 / 24 | 25.00 | 18 | 75.00 | 28800 | | | | | | | | | TOTAL | 166 / 248 | 66.94 | 82 | 33.06 | 47200 | +-----------+-----------+--------+---------+-------+---------------+ SAVIORS OF ULDUM ---------------- +-----------+-----------+-------+---------+-------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+-----------+-------+---------+-------+---------------+ | COMMON | 93 / 98 | 94.90 | 5 | 5.10 | 200 | | RARE | 53 / 72 | 73.61 | 19 | 26.39 | 1900 | | EPIC | 12 / 54 | 22.22 | 42 | 77.78 | 16800 | | LEGENDARY | 4 / 23 | 17.39 | 19 | 82.61 | 30400 | | | | | | | | | TOTAL | 162 / 247 | 65.59 | 85 | 34.41 | 49300 | +-----------+-----------+-------+---------+-------+---------------+ DESCENT OF DRAGONS ------------------ +-----------+-----------+--------+---------+-------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+-----------+--------+---------+-------+---------------+ | COMMON | 98 / 98 | 100.00 | 0 | 0.00 | 0 | | RARE | 64 / 72 | 88.89 | 8 | 11.11 | 800 | | EPIC | 21 / 54 | 38.89 | 33 | 61.11 | 13200 | | LEGENDARY | 14 / 28 | 50.00 | 14 | 50.00 | 22400 | | | | | | | | | TOTAL | 197 / 252 | 78.17 | 55 | 21.83 | 36400 | +-----------+-----------+--------+---------+-------+---------------+ ASHES OF OUTLAND ---------------- +-----------+-----------+--------+---------+-------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+-----------+--------+---------+-------+---------------+ | COMMON | 104 / 104 | 100.00 | 0 | 0.00 | 0 | | RARE | 70 / 70 | 100.00 | 0 | 0.00 | 0 | | EPIC | 14 / 46 | 30.43 | 32 | 69.57 | 12800 | | LEGENDARY | 8 / 25 | 32.00 | 17 | 68.00 | 27200 | | | | | | | | | TOTAL | 196 / 245 | 80.00 | 49 | 20.00 | 40000 | +-----------+-----------+--------+---------+-------+---------------+ DEMON HUNTER INITIATE --------------------- +-----------+---------+--------+---------+------+---------------+ | RARITY | OWNED | % | MISSING | % | DUST TO CRAFT | +-----------+---------+--------+---------+------+---------------+ | COMMON | 16 / 16 | 100.00 | 0 | 0.00 | 0 | | RARE | 12 / 12 | 100.00 | 0 | 0.00 | 0 | | EPIC | 8 / 8 | 100.00 | 0 | 0.00 | 0 | | LEGENDARY | 2 / 2 | 100.00 | 0 | 0.00 | 0 | | | | | | | | | TOTAL | 38 / 38 | 100.00 | 0 | 0.00 | 0 | +-----------+---------+--------+---------+------+---------------+
It is possible to add multiple collections. To see collections help:
$ hsdecks col -h usage: hsdecks col [-h] {import,show,list,delete} [collection] positional arguments: {import,show,list,delete} import - import hearthstone collection from hsreplay; show - show collection summary; list - list imported collections; delete - delete a collection from database; collection collection name, only used for show and delete actions optional arguments: -h, --help show this help message and exit
Similarly, a few database operations are available:
$ hsdecks db -h usage: hsdecks db [-h] {update,recreate,clear} positional arguments: {update,recreate,clear} update - check online for cards definitions and update database if needed; recreate - download cards definitions and recreate database; clear - clear database, removing all cards definitions and collections; optional arguments: -h, --help show this help message and exit
The db update is particularly useful when a new expansion comes out.
Like col and db, the show, comp, and craft commands have a simple dedicated help page.
- Works on Python 3
- Tested on Linux and Windows but should work on all platforms
Install using pip:
pip install hsdecks
usage: hsdecks [-h] [-l LANG] [-v] {show,comp,col,craft,db} ... hearthstone deck tool optional arguments: -h, --help show this help message and exit -l LANG, --lang LANG language of the card name: deDE, enUS, esES, esMX, frFR, itIT, jaJP, koKR, plPL, ptBR, ruRU, thTH, zhCN or zhTW (default: enUS) -v, --version show program's version number and exit commands: {show,comp,col,craft,db} show Show deck comp Compare decks col Collection operations craft Show cost to craft deck and missing cards db Database operations
- HearthSim python-hearthstone for the deckstring parser code
- HearthstoneJSON for the cards definitions