{"id":18887478,"url":"https://github.com/pdrb/hsdecks","last_synced_at":"2025-06-28T11:32:39.781Z","repository":{"id":57437617,"uuid":"260076408","full_name":"pdrb/hsdecks","owner":"pdrb","description":"Hearthstone deck tool.","archived":false,"fork":false,"pushed_at":"2020-12-05T00:03:47.000Z","size":39,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-31T11:44:05.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pdrb.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-30T00:27:35.000Z","updated_at":"2024-10-28T00:53:03.000Z","dependencies_parsed_at":"2022-09-15T11:20:18.953Z","dependency_job_id":null,"html_url":"https://github.com/pdrb/hsdecks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pdrb/hsdecks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdrb%2Fhsdecks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdrb%2Fhsdecks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdrb%2Fhsdecks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdrb%2Fhsdecks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pdrb","download_url":"https://codeload.github.com/pdrb/hsdecks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdrb%2Fhsdecks/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262376650,"owners_count":23301381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T07:37:59.547Z","updated_at":"2025-06-28T11:32:39.758Z","avatar_url":"https://github.com/pdrb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"|Version| |Downloads| |Black| |License|\n\nhsdecks\n=======\n\nA simple hearthstone deck tool created for quickly comparing two decks. Eventually, a bunch\nof other functionalities were added. Check below for full options.\n\nCards database is created automatically on the first execution.\n\nHSReplay collection can be imported and used to show a collection summary and to calculate\ndust cost to craft a deck and show the missing cards.\n\nMultiple languages are supported, just use the '-l' switch. See examples below and the main usage\nhelp for a list of supported languages.\n\nShow deck example::\n\n    $ hsdecks show AAECAZ8FBpwC9gf8uAOEwQOT0APD0QMM+wGVpgPKuAP9uAPquQPruQPsuQPKwQOVzQOezQOfzQPA0QMA\n\n    CLASS: PALADIN\n    TYPE: STANDARD\n\n    +------+-----------+-----+---------------------+---------------------+\n    | MANA |  RARITY   | QTY |        NAME         |         SET         |\n    +------+-----------+-----+---------------------+---------------------+\n    |  0   |  COMMON   |  2  | First Day of School | Scholomance Academy |\n    |  1   |  COMMON   |  2  |   Aldor Attendant   |  Ashes of Outland   |\n    |  1   |  COMMON   |  2  | Animated Broomstick | Scholomance Academy |\n    |  1   |  COMMON   |  2  |     Pen Flinger     | Scholomance Academy |\n    |  2   |   FREE    |  1  |   Novice Engineer   |        Basic        |\n    |  2   |   RARE    |  1  |   Wild Pyromancer   |       Classic       |\n    |  2   | LEGENDARY |  1  |  Murgur Murgurgle   |  Ashes of Outland   |\n    |  2   |  COMMON   |  2  |    Loot Hoarder     |       Classic       |\n    |  2   |   RARE    |  2  |  Libram of Wisdom   |  Ashes of Outland   |\n    |  2   |  COMMON   |  2  |    Hand of A'dal    |  Ashes of Outland   |\n    |  3   | LEGENDARY |  1  |     Lord Barov      | Scholomance Academy |\n    |  3   |   RARE    |  2  |   Salhet's Pride    |  Saviors of Uldum   |\n    |  4   | LEGENDARY |  1  |  High Abbess Alura  | Scholomance Academy |\n    |  5   |  COMMON   |  2  |  Libram of Justice  |  Ashes of Outland   |\n    |  5   |   RARE    |  2  |  Aldor Truthseeker  |  Ashes of Outland   |\n    |  6   |   EPIC    |  2  |    Devout Pupil     | Scholomance Academy |\n    |  7   | LEGENDARY |  1  |    Lady Liadrin     |  Ashes of Outland   |\n    |  9   |   EPIC    |  2  |   Libram of Hope    |  Ashes of Outland   |\n    +------+-----------+-----+---------------------+---------------------+\n\n    DUST: 9260\n\nCompare decks example::\n\n    $ hsdecks comp AAECAa0GBJACha0DjrEDyL4DDZcC9gfTCoGxA5i2A5O6A5u6A6+6A97MA8vNA9fOA+PRA/7RAwA= AAECAa0GBIWtA46xA8i+A8jAAw2QAvYHsJED2qwDgbEDmLYDk7oDr7oD3swDy80D184D49ED/tEDAA==\n\n    DECK DIFFERENCES\n    ----------------\n\n    DECK 1\n    ------\n\n    CLASS: PRIEST\n    TYPE: STANDARD\n\n    +------+--------+-----+---------------------+------------------+\n    | MANA | RARITY | QTY |        NAME         |       SET        |\n    +------+--------+-----+---------------------+------------------+\n    |  1   |  FREE  |  2  |     Holy Smite      |      Basic       |\n    |  2   |  EPIC  |  2  | Sethekk Veilweaver  | Ashes of Outland |\n    |  2   |  FREE  |  2  | Shadow Word: Death  |      Basic       |\n    |  6   |  EPIC  |  1  | Cabal Shadow Priest |     Classic      |\n    +------+--------+-----+---------------------+------------------+\n\n    DECK 2\n    ------\n\n    CLASS: PRIEST\n    TYPE: STANDARD\n\n    +------+-----------+-----+----------------------------+--------------------+\n    | MANA |  RARITY   | QTY |            NAME            |        SET         |\n    +------+-----------+-----+----------------------------+--------------------+\n    |  0   |   EPIC    |  2  |       Lazul's Scheme       |  Rise of Shadows   |\n    |  1   |  COMMON   |  2  |   Disciple of Galakrond    | Descent of Dragons |\n    |  6   |   EPIC    |  2  |    Cabal Shadow Priest     |      Classic       |\n    |  7   | LEGENDARY |  1  | Galakrond, the Unspeakable | Descent of Dragons |\n    +------+-----------+-----+----------------------------+--------------------+\n\nShow deck in ptBR::\n\n    $ hsdecks -l ptbr show AAECAa0GBJACha0DjrEDyL4DDZcC9gfTCoGxA5i2A5O6A5u6A6+6A97MA8vNA9fOA+PRA/7RAwA=\n\n    CLASS: PRIEST\n    TYPE: STANDARD\n\n    +------+-----------+-----+------------------------+-----------------------+\n    | MANA |  RARITY   | QTY |          NAME          |          SET          |\n    +------+-----------+-----+------------------------+-----------------------+\n    |  0   |  COMMON   |  2  |     Reviver Morto      |  Scholomance Academy  |\n    |  1   |   FREE    |  2  |    Punição Sagrada     |         Basic         |\n    |  1   |   RARE    |  2  |  Clériga das Escamas   | Galakrond's Awakening |\n    |  1   |  COMMON   |  2  |        Renovar         |   Ashes of Outland    |\n    |  1   |  COMMON   |  2  |   Estudos Dragônicos   |  Scholomance Academy  |\n    |  1   |  COMMON   |  2  |     Onda de Apatia     |  Scholomance Academy  |\n    |  2   |   RARE    |  2  |   Piromante Selvagem   |        Classic        |\n    |  2   |   FREE    |  2  | Palavra Sombria: Morte |         Basic         |\n    |  2   |   EPIC    |  2  |  Trança-Véus Sethekk   |   Ashes of Outland    |\n    |  2   |  COMMON   |  2  |   Artesã de Varinhas   |  Scholomance Academy  |\n    |  3   | LEGENDARY |  1  |   Rasgamentes Kaahrj   |  Descent of Dragons   |\n    |  3   |  COMMON   |  2  |        Apoteose        |   Ashes of Outland    |\n    |  4   |   EPIC    |  2  |   Acólito do Conluio   |  Scholomance Academy  |\n    |  5   |   RARE    |  2  |   Encantante Cobalto   |  Descent of Dragons   |\n    |  6   |   EPIC    |  1  | Sacerdotisa do Conluio |        Classic        |\n    |  7   | LEGENDARY |  1  |    Espelho da Alma     |   Ashes of Outland    |\n    |  8   | LEGENDARY |  1  |  Murozond, o Infinito  |  Descent of Dragons   |\n    +------+-----------+-----+------------------------+-----------------------+\n\n    DUST: 7880\n\nImport a collection from hsreplay::\n\n    $ hsdecks col import\n\n    IMPORT COLLECTION\n    -----------------\n\n    HSReplay public collection URL: https://hsreplay.net/collection/.../\n    Collection name: myuser\n\n    Importing collection...\n     Done!\n\nAfter that, you can check for missing cards and dust cost to craft a deck::\n\n    $ hsdecks craft myuser AAECAea5AwTMugPDvAONvQPaxgMN+a4Di7oDvbsD17sDxLwD4LwDusYDx8YD2cYD18gD98gD+cgD/sgDAA==\n\n    MISSING CARDS\n    -------------\n\n    CLASS: DEMONHUNTER\n    TYPE: STANDARD\n\n    +------+-----------+-----+------------------------+------------------+\n    | MANA |  RARITY   | QTY |          NAME          |       SET        |\n    +------+-----------+-----+------------------------+------------------+\n    |  4   | LEGENDARY |  1  |      Kayn Sunfury      | Ashes of Outland |\n    |  5   | LEGENDARY |  1  |     Metamorphosis      | Ashes of Outland |\n    |  6   |   EPIC    |  2  | Warglaives of Azzinoth | Ashes of Outland |\n    +------+-----------+-----+------------------------+------------------+\n\n    DUST TO CRAFT: 4000\n\nAlso, you can get a collection summary::\n\n    $ hsdecks col show myuser\n\n    Myuser COLLECTION\n    -----------------\n\n    BASIC\n    -----\n\n    +--------+-----------+--------+---------+------+---------------+\n    | RARITY |   OWNED   |   %    | MISSING |  %   | DUST TO CRAFT |\n    +--------+-----------+--------+---------+------+---------------+\n    |        |           |        |         |      |               |\n    |  FREE  | 286 / 286 | 100.00 |    0    | 0.00 |       0       |\n    +--------+-----------+--------+---------+------+---------------+\n\n    CLASSIC\n    -------\n\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  RARITY   |   OWNED   |   %    | MISSING |   %   | DUST TO CRAFT |\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  COMMON   | 184 / 184 | 100.00 |    0    | 0.00  |       0       |\n    |   RARE    | 92 / 160  | 57.50  |   68    | 42.50 |     6800      |\n    |   EPIC    |  19 / 72  | 26.39  |   53    | 73.61 |     21200     |\n    | LEGENDARY |  5 / 32   | 15.62  |   27    | 84.38 |     43200     |\n    |           |           |        |         |       |               |\n    |   TOTAL   | 300 / 448 | 66.96  |   148   | 33.04 |     71200     |\n    +-----------+-----------+--------+---------+-------+---------------+\n\n    HALL OF FAME\n    ------------\n\n    +-----------+--------+-------+---------+--------+---------------+\n    |  RARITY   | OWNED  |   %   | MISSING |   %    | DUST TO CRAFT |\n    +-----------+--------+-------+---------+--------+---------------+\n    |  COMMON   | 6 / 22 | 27.27 |   16    | 72.73  |      640      |\n    |   RARE    | 3 / 16 | 18.75 |   13    | 81.25  |     1300      |\n    |   EPIC    | 0 / 14 | 0.00  |   14    | 100.00 |     5600      |\n    | LEGENDARY | 0 / 9  | 0.00  |    9    | 100.00 |     14400     |\n    |           |        |       |         |        |               |\n    |   TOTAL   | 9 / 61 | 14.75 |   52    | 85.25  |     21940     |\n    +-----------+--------+-------+---------+--------+---------------+\n\n    RISE OF SHADOWS\n    ---------------\n\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  RARITY   |   OWNED   |   %    | MISSING |   %   | DUST TO CRAFT |\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  COMMON   |  98 / 98  | 100.00 |    0    | 0.00  |       0       |\n    |   RARE    |  50 / 74  | 67.57  |   24    | 32.43 |     2400      |\n    |   EPIC    |  12 / 52  | 23.08  |   40    | 76.92 |     16000     |\n    | LEGENDARY |  6 / 24   | 25.00  |   18    | 75.00 |     28800     |\n    |           |           |        |         |       |               |\n    |   TOTAL   | 166 / 248 | 66.94  |   82    | 33.06 |     47200     |\n    +-----------+-----------+--------+---------+-------+---------------+\n\n    SAVIORS OF ULDUM\n    ----------------\n\n    +-----------+-----------+-------+---------+-------+---------------+\n    |  RARITY   |   OWNED   |   %   | MISSING |   %   | DUST TO CRAFT |\n    +-----------+-----------+-------+---------+-------+---------------+\n    |  COMMON   |  93 / 98  | 94.90 |    5    | 5.10  |      200      |\n    |   RARE    |  53 / 72  | 73.61 |   19    | 26.39 |     1900      |\n    |   EPIC    |  12 / 54  | 22.22 |   42    | 77.78 |     16800     |\n    | LEGENDARY |  4 / 23   | 17.39 |   19    | 82.61 |     30400     |\n    |           |           |       |         |       |               |\n    |   TOTAL   | 162 / 247 | 65.59 |   85    | 34.41 |     49300     |\n    +-----------+-----------+-------+---------+-------+---------------+\n\n    DESCENT OF DRAGONS\n    ------------------\n\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  RARITY   |   OWNED   |   %    | MISSING |   %   | DUST TO CRAFT |\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  COMMON   |  98 / 98  | 100.00 |    0    | 0.00  |       0       |\n    |   RARE    |  64 / 72  | 88.89  |    8    | 11.11 |      800      |\n    |   EPIC    |  21 / 54  | 38.89  |   33    | 61.11 |     13200     |\n    | LEGENDARY |  14 / 28  | 50.00  |   14    | 50.00 |     22400     |\n    |           |           |        |         |       |               |\n    |   TOTAL   | 197 / 252 | 78.17  |   55    | 21.83 |     36400     |\n    +-----------+-----------+--------+---------+-------+---------------+\n\n    ASHES OF OUTLAND\n    ----------------\n\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  RARITY   |   OWNED   |   %    | MISSING |   %   | DUST TO CRAFT |\n    +-----------+-----------+--------+---------+-------+---------------+\n    |  COMMON   | 104 / 104 | 100.00 |    0    | 0.00  |       0       |\n    |   RARE    |  70 / 70  | 100.00 |    0    | 0.00  |       0       |\n    |   EPIC    |  14 / 46  | 30.43  |   32    | 69.57 |     12800     |\n    | LEGENDARY |  8 / 25   | 32.00  |   17    | 68.00 |     27200     |\n    |           |           |        |         |       |               |\n    |   TOTAL   | 196 / 245 | 80.00  |   49    | 20.00 |     40000     |\n    +-----------+-----------+--------+---------+-------+---------------+\n\n    DEMON HUNTER INITIATE\n    ---------------------\n\n    +-----------+---------+--------+---------+------+---------------+\n    |  RARITY   |  OWNED  |   %    | MISSING |  %   | DUST TO CRAFT |\n    +-----------+---------+--------+---------+------+---------------+\n    |  COMMON   | 16 / 16 | 100.00 |    0    | 0.00 |       0       |\n    |   RARE    | 12 / 12 | 100.00 |    0    | 0.00 |       0       |\n    |   EPIC    |  8 / 8  | 100.00 |    0    | 0.00 |       0       |\n    | LEGENDARY |  2 / 2  | 100.00 |    0    | 0.00 |       0       |\n    |           |         |        |         |      |               |\n    |   TOTAL   | 38 / 38 | 100.00 |    0    | 0.00 |       0       |\n    +-----------+---------+--------+---------+------+---------------+\n\nIt is possible to add multiple collections. To see collections help::\n\n    $ hsdecks col -h\n\n    usage: hsdecks col [-h] {import,show,list,delete} [collection]\n\n    positional arguments:\n      {import,show,list,delete}\n                            import - import hearthstone collection from hsreplay;\n                            show - show collection summary;\n                            list - list imported collections;\n                            delete - delete a collection from database;\n      collection            collection name, only used for show and delete actions\n\n    optional arguments:\n      -h, --help            show this help message and exit\n\nSimilarly, a few database operations are available::\n\n    $ hsdecks db -h\n\n    usage: hsdecks db [-h] {update,recreate,clear}\n\n    positional arguments:\n      {update,recreate,clear}\n                            update - check online for cards definitions\n                            and update database if needed;\n                            recreate - download cards definitions and recreate\n                            database;\n                            clear - clear database, removing all cards definitions\n                            and collections;\n\n      optional arguments:\n        -h, --help            show this help message and exit\n\nThe db update is particularly useful when a new expansion comes out.\n\nLike col and db, the show, comp, and craft commands have a simple dedicated help page.\n\nNotes\n=====\n\n- Works on Python 3\n- Tested on Linux and Windows but should work on all platforms\n\n\nInstall\n=======\n\nInstall using pip::\n\n    pip install hsdecks\n\n\nUsage\n=====\n\n::\n\n    usage: hsdecks [-h] [-l LANG] [-v] {show,comp,col,craft,db} ...\n\n    hearthstone deck tool\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -l LANG, --lang LANG  language of the card name: deDE, enUS, esES, esMX,\n                            frFR, itIT, jaJP, koKR, plPL, ptBR, ruRU, thTH, zhCN\n                            or zhTW (default: enUS)\n      -v, --version         show program's version number and exit\n\n    commands:\n      {show,comp,col,craft,db}\n        show                Show deck\n        comp                Compare decks\n        col                 Collection operations\n        craft               Show cost to craft deck and missing cards\n        db                  Database operations\n\n\nThanks to\n=========\n\n- `HearthSim \u003chttps://hearthsim.info/\u003e`_ `python-hearthstone \u003chttps://github.com/HearthSim/python-hearthstone\u003e`_ for the deckstring parser code\n- `HearthstoneJSON \u003chttps://hearthstonejson.com/\u003e`_ for the cards definitions\n\n\n.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/psf/black\n\n.. |Version| image:: https://badge.fury.io/py/hsdecks.svg\n    :target: https://pypi.org/project/hsdecks/\n\n.. |Downloads| image:: https://pepy.tech/badge/hsdecks\n     :target: https://pepy.tech/project/hsdecks\n\n.. |License| image:: https://img.shields.io/pypi/l/hsdecks.svg\n    :target: https://github.com/pdrb/hsdecks/blob/master/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdrb%2Fhsdecks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpdrb%2Fhsdecks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdrb%2Fhsdecks/lists"}