nyxfall


Namenyxfall JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA command-line Magic: the Gathering card search
upload_time2025-03-03 04:34:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12.3
licenseNone
keywords mtg cards magic gathering scyfall
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # nyxfall, a command-line Magic: the Gathering card search
![demo](https://github.com/user-attachments/assets/2bc7256a-cf40-47d5-b980-a3a5aabe01ae)

## Installation

### From source (requires Python 3.12.3 or greater)

(optional) Start a virtual environment

```console
$ python -m venv venv
$ source venv/bin/activate
```

Install the project with pip
```console
$ python -m pip install .
```

## Usage

```console
$ nyxfall -h
usage: nyxfall [-h] [-e] [-r] [-a] [query]

positional arguments:
  query         query to run against Scryfall

options:
  -h, --help    show this help message and exit
  -e, --exact   try and match the query with an exact card name
  -r, --random  fetch a random card
  -a, --ascii   renders the card frame using only basic ASCII characters
```

### Searching for a set of cards
If more than one card is returned from your search, use the arrow keys + enter to select which one to display
```console
$ nyxfall llanowar

  Llanowar Elite
> Llanowar Elves
  Llanowar Empath
  Llanowar Envoy
  Llanowar Greenwidow
  Llanowar Knight
  Llanowar Loamspeaker

Page 2/4

┌──────────────────────────────────┐
│┌────────────────────────────────┐│
││Llanowar Elves               {G}││
│└┬──────────────────────────────┬┘│
│ │                              │ │
│┌┴──────────────────────────────┴┐│
││Creature — Elf Druid            ││
│└┬──────────────────────────────┬┘│
│ │{T}: Add {G}.                 │ │
│ │ ──────────────────────────── │ │
│ │The elves of the Llanowar     │ │
│ │forest have defended it for   │ │
│ │generations. It is their      │ │
│ │sacred duty to keep outside   │ │
│ │influences from corrupting    │ │
│ │their ancestral home.         │ │
│ │                       ┌─────┐│ │
│ └───────────────────────┤ 1/1 ├┘ │
│ FDN                     └─────┘  │
└──────────────────────────────────┘
```

### Searching for an exact card
```console
$ nyxfall -e "force of negation"

┌──────────────────────────────────┐
│┌────────────────────────────────┐│
││Force of Negation      {1}{U}{U}││
│└┬──────────────────────────────┬┘│
│ │                              │ │
│┌┴──────────────────────────────┴┐│
││Instant                         ││
│└┬──────────────────────────────┬┘│
│ │If it's not your turn, you may│ │
│ │exile a blue card from your   │ │
│ │hand rather than pay this     │ │
│ │spell's mana cost.            │ │
│ │Counter target noncreature    │ │
│ │spell. If that spell is       │ │
│ │countered this way, exile it  │ │
│ │instead of putting it into its│ │
│ │owner's graveyard.            │ │
│ │ ──────────────────────────── │ │
│ │"Try, if you must."           │ │
│ └──────────────────────────────┘ │
│ 2X2                              │
└──────────────────────────────────┘
```

### Searching for a random card
```console
$ nyxfall -r

┌──────────────────────────────────┐
│┌────────────────────────────────┐│
││Helpful Hunter            {1}{W}││
│└┬──────────────────────────────┬┘│
│ │                              │ │
│┌┴──────────────────────────────┴┐│
││Creature — Cat                  ││
│└┬──────────────────────────────┬┘│
│ │When this creature enters,    │ │
│ │draw a card.                  │ │
│ │ ──────────────────────────── │ │
│ │"Ah, the conquering hero      │ │
│ │returns! What trials did you  │ │
│ │face, little one?"            │ │
│ │—Basri Ket                    │ │
│ │                       ┌─────┐│ │
│ └───────────────────────┤ 1/1 ├┘ │
│ FDN                     └─────┘  │
└──────────────────────────────────┘
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "nyxfall",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12.3",
    "maintainer_email": null,
    "keywords": "mtg, cards, magic, gathering, scyfall",
    "author": null,
    "author_email": "Avery Abrahams-Whitehead <averywhthead@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/40/b9/e13b65221b894e46dddb752fb84965dbe37dffee1409f1cbbbb9eb0f7b41/nyxfall-0.1.0.tar.gz",
    "platform": null,
    "description": "# nyxfall, a command-line Magic: the Gathering card search\n![demo](https://github.com/user-attachments/assets/2bc7256a-cf40-47d5-b980-a3a5aabe01ae)\n\n## Installation\n\n### From source (requires Python 3.12.3 or greater)\n\n(optional) Start a virtual environment\n\n```console\n$ python -m venv venv\n$ source venv/bin/activate\n```\n\nInstall the project with pip\n```console\n$ python -m pip install .\n```\n\n## Usage\n\n```console\n$ nyxfall -h\nusage: nyxfall [-h] [-e] [-r] [-a] [query]\n\npositional arguments:\n  query         query to run against Scryfall\n\noptions:\n  -h, --help    show this help message and exit\n  -e, --exact   try and match the query with an exact card name\n  -r, --random  fetch a random card\n  -a, --ascii   renders the card frame using only basic ASCII characters\n```\n\n### Searching for a set of cards\nIf more than one card is returned from your search, use the arrow keys + enter to select which one to display\n```console\n$ nyxfall llanowar\n\n  Llanowar Elite\n> Llanowar Elves\n  Llanowar Empath\n  Llanowar Envoy\n  Llanowar Greenwidow\n  Llanowar Knight\n  Llanowar Loamspeaker\n\nPage 2/4\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\n\u2502\u2502Llanowar Elves               {G}\u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502                              \u2502 \u2502\n\u2502\u250c\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2510\u2502\n\u2502\u2502Creature \u2014 Elf Druid            \u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502{T}: Add {G}.                 \u2502 \u2502\n\u2502 \u2502 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2502 \u2502\n\u2502 \u2502The elves of the Llanowar     \u2502 \u2502\n\u2502 \u2502forest have defended it for   \u2502 \u2502\n\u2502 \u2502generations. It is their      \u2502 \u2502\n\u2502 \u2502sacred duty to keep outside   \u2502 \u2502\n\u2502 \u2502influences from corrupting    \u2502 \u2502\n\u2502 \u2502their ancestral home.         \u2502 \u2502\n\u2502 \u2502                       \u250c\u2500\u2500\u2500\u2500\u2500\u2510\u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 1/1 \u251c\u2518 \u2502\n\u2502 FDN                     \u2514\u2500\u2500\u2500\u2500\u2500\u2518  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### Searching for an exact card\n```console\n$ nyxfall -e \"force of negation\"\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\n\u2502\u2502Force of Negation      {1}{U}{U}\u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502                              \u2502 \u2502\n\u2502\u250c\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2510\u2502\n\u2502\u2502Instant                         \u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502If it's not your turn, you may\u2502 \u2502\n\u2502 \u2502exile a blue card from your   \u2502 \u2502\n\u2502 \u2502hand rather than pay this     \u2502 \u2502\n\u2502 \u2502spell's mana cost.            \u2502 \u2502\n\u2502 \u2502Counter target noncreature    \u2502 \u2502\n\u2502 \u2502spell. If that spell is       \u2502 \u2502\n\u2502 \u2502countered this way, exile it  \u2502 \u2502\n\u2502 \u2502instead of putting it into its\u2502 \u2502\n\u2502 \u2502owner's graveyard.            \u2502 \u2502\n\u2502 \u2502 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2502 \u2502\n\u2502 \u2502\"Try, if you must.\"           \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 2X2                              \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### Searching for a random card\n```console\n$ nyxfall -r\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\n\u2502\u2502Helpful Hunter            {1}{W}\u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502                              \u2502 \u2502\n\u2502\u250c\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2510\u2502\n\u2502\u2502Creature \u2014 Cat                  \u2502\u2502\n\u2502\u2514\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2518\u2502\n\u2502 \u2502When this creature enters,    \u2502 \u2502\n\u2502 \u2502draw a card.                  \u2502 \u2502\n\u2502 \u2502 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2502 \u2502\n\u2502 \u2502\"Ah, the conquering hero      \u2502 \u2502\n\u2502 \u2502returns! What trials did you  \u2502 \u2502\n\u2502 \u2502face, little one?\"            \u2502 \u2502\n\u2502 \u2502\u2014Basri Ket                    \u2502 \u2502\n\u2502 \u2502                       \u250c\u2500\u2500\u2500\u2500\u2500\u2510\u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 1/1 \u251c\u2518 \u2502\n\u2502 FDN                     \u2514\u2500\u2500\u2500\u2500\u2500\u2518  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A command-line Magic: the Gathering card search",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/avery-whitehead/nyxfall",
        "Issues": "https://github.com/avery-whitehead/nyxfall/issues"
    },
    "split_keywords": [
        "mtg",
        " cards",
        " magic",
        " gathering",
        " scyfall"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ca750dd69f1e2874026775fddd2f75d7707bff810622b3142c462ffa6a632f67",
                "md5": "ebc65fdc3abdfdf24036ecaa966b6f06",
                "sha256": "375f14a4c05fb39f67ea44c8a7cbe18d7590ecd762ee17df8be774242731c876"
            },
            "downloads": -1,
            "filename": "nyxfall-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ebc65fdc3abdfdf24036ecaa966b6f06",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12.3",
            "size": 7988,
            "upload_time": "2025-03-03T04:34:29",
            "upload_time_iso_8601": "2025-03-03T04:34:29.777487Z",
            "url": "https://files.pythonhosted.org/packages/ca/75/0dd69f1e2874026775fddd2f75d7707bff810622b3142c462ffa6a632f67/nyxfall-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "40b9e13b65221b894e46dddb752fb84965dbe37dffee1409f1cbbbb9eb0f7b41",
                "md5": "0ddb12ca89602b0b6f4d0ccdeebeadf6",
                "sha256": "d1552cab50fe72896262b48aea3f6cb8bbc5f49add7366639e49e623538302de"
            },
            "downloads": -1,
            "filename": "nyxfall-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0ddb12ca89602b0b6f4d0ccdeebeadf6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12.3",
            "size": 10374,
            "upload_time": "2025-03-03T04:34:32",
            "upload_time_iso_8601": "2025-03-03T04:34:32.536639Z",
            "url": "https://files.pythonhosted.org/packages/40/b9/e13b65221b894e46dddb752fb84965dbe37dffee1409f1cbbbb9eb0f7b41/nyxfall-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-03-03 04:34:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "avery-whitehead",
    "github_project": "nyxfall",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "nyxfall"
}
        
Elapsed time: 0.85392s