Git Product home page Git Product logo

inkfathom's Introduction

Inkfathom Proxy

banner

Inkfathom Proxy is a webapp to format and display a mtg deck to create proxies. Try it Online!

Motive

MTG is a great game. A great but expensive game. I can't afford to pay for a card I wont like after two or three games. Sometimes we have to try to make our mind. Beside, proxies allow to play with spoilers!

Proxies are acceptable in most casual game, so lets go to the printer and brrrr. Since I couldn't find a proxy maker suiting my need, I made my own. I don't want to keep copy/paste image in a document editor (Libre Office, Microsoft Word, or whatever).

mtgpress.net is down, but alternatives include proxymtg, MTG Proxy Generator and https://mtgprint.cardtrader.com/. If you are looking for a windows app, you may like Tolarian Copyshop too. I create a comparaison table, feel free to open an issue if I missed anything:

inkfathom mtgprint proxymtg tolarian copyshop MTG Proxy Generator
is free ✔️ ✔️ ✔️ ✔️ ✔️
is ad-free ✔️ ✔️ ✔️ ✔️ ✔️
is privacy friendly1 ✔️ ✔️ ✔️
is open source ✔️ ✔️ ✔️
is online ✔️ ✔️ ✔️ ✔️
is cross plateform ✔️ ✔️ ✔️ ✔️
is responsive ✔️ ✔️ ✔️ ✔️
is community-driven2 ✔️ ✔️
support text-only ✔️ 🚧 WIP
support token ✔️ ✔️ ✔️ ? ✔️
support emblems ✔️ ? ? ? ✔️
support flip card ✔️ ✔️ 🚧 WIP
support custom card ✔️ ?
support different card size ✔️ ✔️ ?
support different paper size ✔️ ✔️ ?
can specify a set ✔️ ✔️ ? ✔️ ✔️
can specify a language ✔️ ? ? ? ?
can skip basic land ✔️ ✔️ ? ?
can print decklist ✔️ ✔️ ?
  1. ublock origin wont block anything on the page.
  2. Anyone can contribute, participate, submit issue, etc. as long as you follow our code of conduct.

Changelog

2021-04-16

  • Handle emblems

Try it here

2020-11-02

  • Can specify a language #53
  • Add a permalink button #44

Try it here

2020-10-26

  • Handle tokens from URL #29
  • Resize custom artwork before printing #31
  • Add a printer friendly mode #17

2020-10-09

  • Manage doubled-faced cards #10
  • Handle direct url as cards #12

Showcase payload:

2 Nicol Bolas, the Ravager // Nicol Bolas, the Arisen
2 https://preview.redd.it/o24hrebvwrr51.png?width=497&auto=webp&s=7040a065ffd8aff38c661b31f7196d4a8b72863b
1 https://external-preview.redd.it/8a6muxHWVtH8ygmy7ktGcsKE-p20WWJfyPoO5Zg5-cg.jpg?width=375&auto=webp&s=5e644fe3065893dcac903f4e1641cf1fb79019aa
1 Riverglide Pathway // Lavaglide Pathway

2019-06-25

  • Get cards from scryfall's api

2017-05-10

  • Get cards from deckbrew's api
  • Build the first parser

Stack

All the code can run on any decent browser. Everything works client-side. Bare old vanillaJS and HTML/CSS. No more no less.

Picture rendering come from Scryfall.

Legal

  • All informations presented through this website about Magic: The Gathering is copyrighted by Wizards of the Coast.
  • This website are not produced, endorsed, supported, or affiliated with Wizards of the Coast.

inkfathom's People

Contributors

aloisdg avatar birdmod avatar kainmorgen avatar kimclarisse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

inkfathom's Issues

Add a printer friendly mode

Some proxies seen on Spelltable are just paper with the title of the card. Lets add a mode to do that quickly:

example:

example proxy

mockup:

rect815

The card's name should be as big as possible though. The title should be centered horizontally but I am not sure that we should centered it vertically too.

Clicking "print" will only print one page

Hello,

To reproduce, use any deck larger than 9 then click on print.

image

Deck tested:

2 Vampire of the Dire Moon
1 Tajic, Legion's Edge
1 Riverglide Pathway // Lavaglide Pathway
1 https://i.imgur.com/x2bOOjY.jpg
13 Ashiok, Nightmare Muse

Cheers,

Fix parser to handle transform card

  1. Open diab
  2. Write 4 Legion's Landing // Adanto, the First Fort
  3. Search

Expected : 4 Legion's Landing and 4 Adanto, the First Fort cards.

Actual: nothing and a "boo" in console.

Solution: if name contains " // ", split it into two cards and flatten both into the list of card, then multiply each by the multiplier (i.e. 4).

Bonus solution: Since Adanto, the First Fort is legendary, should we optimize the output by only adding one to the print ? So the expected would be 4 Legion's Landing and 1 Adanto, the First Fort cards only because the back card is legendary.

Add an option to print in black and white

Hello,

If most printers can convert to black and white themselves, I think it would be nice to handle it our-self.
There are three steps:

  • Add an option to select between colors and Black & White. Colors should be the first and default options.
  • Add a CSS filter to switch the palette of each card in deck.
  • Add a function to transform the card in the canvas before printing.

Have fun

New print definition are really bad.

Expected behavior
We should come back to the version without any quality loss.

Screenshots
Previous version from 1/11/2020
image

Current version from 17/11/2020
image

The image displayed in the browser looks fine:

image

The quality loss is during the construction of the pdf.

Add support for data:image

Like custom url it would be cool to add data:image

You can generate some with https://aloisdegouvello.gitlab.io/paste64/

data:image/... ``` data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnYAAANwCAYAAACieidQAAAcaUlEQVR4nO3du3Li2qJA0fv/H+CIjIyMiIyMrP+JG5yii/aWQAKBzPQIRtU527aWAFWt2UsP/u/Pnz9nAAA+3/+tvQMAACxD2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCjl/vcDicd7vdebPZnL++vs5fX1/nzWZz3m635/1+fz4ej4uPeTqd/hn3Mvblf1/GPp1OL3vdp9PpvN/vz9vt9p/xt9vtebfbvXTs3+be573b7c6Hw+Fl7/na4zve4H2EHb/SZZK5jrlbttvtIoF3Op3Ou91u0phLj/3IPphwlznO5nzeS77na4/veIP3E3b8OqfTaXLQfXc4HB4e93g8PjTmxX6/f/q1H4/Hh177K1Yt6x59r5c41n7C+I43WIew41d5drJ7NLAOh8NTY16vaDz62p/dhyUm+t9iqc/70Zhfe3zHG6xH2PFrnE6nRSa7uSsKS4776GS71D44Tfb+z3vu6tXa4zveYF3Cjl/j1krdbrc7H4/HvxPJ5WLz7XY7+PubzWbyuGPbGBv3eDzevS5q7oR363VcXzR/ed1j79V2u139c/zpxt67zWbz92ac75/3vWvQ5nzea4/veIN1CTt+hbGJa7PZ3F2RGIusKaeKxq6r22w2dyfL0+k0OkHOOSU7tv/3tjH2njlFNm7s9OOUz+vW5z11lXbt8R1vsD5hR94zcXUxNOlMWbUb+7s5KyBjk+3UbQythkxdCRkae85q5W8z9F7PvS7ymc977fEdb7A+YUfe2ErA3GuHhiasW9sYu85o7grEM9sZW8GZOkmPje2uxf8a+wfE3NOYj37ea4/veIOfQdiRNjZRPHJ36dApplunqIYmuUdXH4bidMprGFoBmXvzxdDrdu3TtPfp0buYH/m81x7f8QY/g7AjbWy17pG77YZWRG5NOI9OjkMeicSxqJ079th23LH4r6GoeXSlaejzvhc3a4/veIOfQdiRtsQ1R9fmTFxDE+2jF4IPTXb3wu6Ryfkdr6Vq6Fh7NEYe+bzXHt/xBj+DsCPrFdfrDE04Y5Pn0qsOc1dDhlYMH50chybtZwJ57n5PCYs5n9nX1zLf5HFtKKye2d7cz3vt8T/1eIMaYUfW2GMX3jX+0mN/2grOo2493HZuKNy6I/onf96PnNZce/xPPd6gRtiRNbRS866LsJeemOZu7xUT45IT9z1jUT73NYyt1r3iLsu1w2bN8T/9eIMSYUfW0IS+9Om3MafT6bzZbP7xzKmkuTduzP39KZa8OH+KsW8jePZhva+K+yWvC1vq5ol3jV843qBC2JFUex7W0PVLcx+18mzUDq2ivfKC9ltfIv/ow3pfeQwsuUI8tK17/zBYc/zC8QYVwo6kpR7W+hM8EqmvmBTnPsdvCY/e+PDMV2s9amzMuSE5duze286a41eONygQdiQNTQpj1/wcDofzdrv9e8r08rvb7fa83+9Xj8FHvmZpyTsUr9+nd4bSnz/jkXEv0sdW6175WY4F+JyvkLucwh/azk8ev3K8QYGwI2loovl+WmrsAv0h2+327YF360vZ702ar7g+6RXXUT36Wd6a5Mc+13es9tx6VMu94+d4PD59XeFa45eON/h0wo6kW9cb3Qqme14dB6fT6Xw8Hm9G55RVi1fcUbjWIyhuPf7k+2u6tWq15rF3/dkdj8e/+335vMeC7JGYWWP80vEGn07YkXTr4u+xVYmpljwddOtU4zNj1ybasdCdugr7zovub53OnGvOadQ1x68db/DJhB1JQxPNfr+/uTIxx1Ird3PCbk6c1CbaW7FyOeU3tlq31um7Z4+1Z0//v3P82vEGn0zYkTQ00Yydoho7PbXf72+ufCzx2Iw5YTdn9Wbo75d4X1+13SnuPZduLGTWesTN3NXYoePyU8YvHm/wqYQdSVNORU1ZkTidTot/d+m1RybfKauF1Yn21sX9r4ijR825MefZY/QnjF893uATCTuSll4NGYu7Z6/denRV5V7cVSfaue/XGo+qefTGnDFLfY3aK8evHm/wiYQdSUtOlBfv+O7ZqaeBv75un2IsT7RTw2WNh9neuq5ts9mc9/v9Q6f9p/5DZK3xy8cbfBphR9KjQXTLGt9mcetrtW5FZfli9imrdj9tv3a73aT3/9Yp1HvH7Zrjl483+DTCjqSx1YdnJ4ah7b76URqPfPtCfaK9d8fnGt8p+ujXn3137yaRnzh+/XiDTyLsSHr2Cf5jhlY03nGB/txvU6hPtLceWvyTVusePTbGwnXsM1x7/PrxBp9E2JF075lnj1rza46GXtPYxF3/iqefFnZj4f1o3Iy9vrGVyLXHrx9v8EmEHUljp6U+eRVhaPIem+jqX8r+007FDu3Ps+/NlO87/snjl443+CTCjqSxiX+Jba8VdkMrGGNjD0XgsxPt0DbXuPP0J948MfQPiVeEzVhYrT1++XiDTyPsSBo7NbXEtqds93g8/sez446dHhv63aFJ+RXXF/6kmxTWjIBXXGM2J+TXHr98vMGnEXYkjd3Z945TsWMBtsRjUaaG3SuuT3rFdVRLfa5j3vWA4nfdPDD2ea89fvV4g08k7Eh61TPnpl5jNzT2EpPS1BWUV1wL+Ip4WGIfNpvN6Kn3d12TNTWAXrXdtcevHm/wiYQdWUOT0ruuOxqalJ4Nu7mT55IT40949MTYat1+v795l+w7VnleFSFT3/O1xy8eb/CphB1ZQ6dyXnGn4NA2h8Z+9pqjuae7lrxTce07FE+n0+hq3eV3xq6rfMcjMt51KnTstaw9fu14g08m7Mh6xQ0UU7954hUPMp57l+CcuxrvecVdl0t8lt/34VXPL1zj/RkK+TnPLXzn+LXjDT6ZsCNr7kNW75lzQ8acOwqnmjvZLXUTxytvBnlm/KH3c+wzevVpvDnPGHxmm3MeUPzO8UvHG3w6YUfa2ArOI5PE0LZuTZ5Lrhw9ejPIEqeEXxENc4zdGDEWGWOf+StXfF5xs86c06trj1863uDTCTvSbq3gzJn0xp6ddisWhv5myVNTU7b17GNfll71nGssWG6twK21ajc05qOf99BruLf/a49fON6gQNiRN7aCs9ls7q6gnU6n0ai7N9GNRcncSWpsxWrq6t/clcZrQ6/9nXcnPhLUt/7ulQ8tHrsOcO6Yj8bN2uMXjjcoEHbk3Xuo7W63Ox8Oh7+rCqfT6Xw8HkcnyjkT3TOnBU+n02jUzVmJGXv9927mmHsK9F2f25SJ/tbXjr3qWq1bj1zZ7XaTxj0ej3fv/v2p43/68QYVwo5fYerXUE01NaxuReV2u/0blN+j8t6X3M+Nk1urjt+j9nA4jAbpO691evZaubHX/MrHZkz5R8TxePzn87u857eO0amrs2uP/8nHG1QIO36FseegPWLu9Xn3Im2uR1Ywbq3mzPGuOxPHAmXORH9r1e6Vjz9Z+vOeG6Jrj/+JxxuUCDt+jVsT/aui7s+fZaPymWvE5n7P6nfvOiV26/2aG2RLnMp+xFJx9ejq4trjf9LxBjXCjl/l1s0Q92y326dWEJ49HbzERPdo3L7zy9eX/AaJNb9q7N41mvc8e6PH2uN/yvEGNcKOX2m/309eRbtcF7TEuLeuJxoz9cL3qW7dlPHqsafs29KT/dhrfcfdlnPe6+uAXeo9X3v8n368QZGw41c7HA7n3W533m63f4Nrs9mct9vt3wvNXzHu5a7b63EvY282m//cqfsKp9PpP/twee37/d4Eu/B7PXSsves9X3t8xxu8j7ADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCIEHYAABHCDgAgQtgBAEQIOwCACGEHABAh7AAAIoQdAECEsAMAiBB2AAARwg4AIELYAQBECDsAgAhhBwAQIewAACKEHQBAhLADAIgQdgAAEcIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwD+8fX19dTPWY+wAwD+Iew+l7ADgCd8fX39tdlszrvd7nw6nVbfr2df0zM/X3rMy8+u3+vvrn93s9kMbmez2fxnnLmv5XQ6nXe73d9tbbfb8+FwGPy97Xb7d/+22+1/jou5+zqFsAOAJ1xPvpdJf7fbrb5fS72mR36+9JhDPxv7/UtEHY/Hf/774XD4G1qPvpbT6XTebDbn/X7/N9KOx+N/Pu/vv3c6nc77/f682Wz+ibu5+zqFsAOAJ3yffC+T+uX/X1Z3Lqt517/7faK/Xvn5vp0/f/78jYOhbV325fI71/t17++u93G/308Ku1vbHFrFGno9t97Hez+7FXaXMBrap2fCbrfbnff7/cO/t9/v/3mv5u7rFMIOAJ5wK+z2+/3fU3CXU3PXE/5ut/sbQKfT6Z9tHQ6HfyLg+7aG4mHolN+9vxvaxylhd+t1HY/H/0TcvShaMuz+/PlfNF9Wwq7355mw+x7ic3/ve9zO3dcphB0APOHWqdjvE/z3if36NN5lBewServd7p9TdPe2ddmX70Fx7++Gfj4l7O7ty/Wq3b3Vuss2p1xDN/S+D/3365Ww6315Juym/u7USJ27r1MIOwB4wq2bJ6YEySV4Lqs2lwl+KNruBc/YePduNri3j1N+/v2/Xa88Xa9MztnmI/t4/d8voTy0Sjb1tX7/rF6xYjd1X6cQdgDwhFuT75RVtssKzfWKzXXgjW1r6r7c+7tXrdhdtn1ZiXzmfXw07C7XC16fAv5p19jN2dcphB0APOHW5HvvGrvL71yfgr2s2nz/vUv8XYLqctr33r7c+7tXXGN3PfblBoFn3sdHw27Kz+f8/ivuin30PRkj7ADgCfcm31t3xf75878wuF4Bu6yYDa2yXaLvctr3+2Myxvbl3t8tfVfs93GffR9fHXZzTlVfwvjye88+x+6ZY2uIsAMAXmIsengdYQcALG7Oah3LEXYAwKLGTvnyesIOACBC2AEARAg7AIAIYQcAECHsAAAihB0AQISwAwCI+H8H4WNKnaMzjwAAAABJRU5ErkJggg== ```

Change if (isUrl(card.name)) { with if (isCustom(card.name)) where isCustom is `const isCustom = cardName => isUrl(cardName) || cardName.startsWith("data:image/")) etc.

Reduce call to Scryfall

When someone click on the search button, we grab the decklist. For each non-url line of the decklist, we extract the name, lang, set, etc. Then we do a call to the Scryfall's search API to get all matching answers. Finally we filter matching answers to get the one with a matching printed name. Then we call Scryfall once more to get the picture of the card.

When someone click on the switchButton of a given card, we call the Scryfall's API for a given card to get all the prints urls of the card. Then we load the next url one.

Two ideas:

  • Is there a way to check from the search if there is more that one print of the card? We could avoid one call when there is no other prints available.
  • Could we call another API to get directly the card by printed name, language and set with all available printings? Like this we could use this call instead of the to we are currently doing.

This may be a considerable alteration. We will wait for the end of #43 first.

Move to jsPDF

jsPDF is far more reliable than browser to handle the pdf export

Switch Print Button doesn't appear for some cards with other prints available.

Describe the bug
Switch Print Button doesn't appear for some cards with other prints available.

To Reproduce
Steps to reproduce the behavior:
Given a default state of the web application
When mouse hovering over Riverglide Pathway
Then the switch button doesn't appear

Expected behavior
Given a default state of the web application
When mouse hovering over Riverglide Pathway
Then it should display the switch button

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: Firefox
  • Version: 82.0.2 (64-bit)

Allow to add a new page on print containing the decklist

Print the payload as is (with every keyboards). Add a section for custom cards.

example

Deck
2 Opt
1 http://example.com/foo.jpg

Should print

Deck
2 Opt

Custom
1 foo.jpg
var doc = new jsPDF()

doc.setFontSize(40)
doc.text(35, 25, `Paranyan loves jsPDF
mulit
ASDasd
SADA
SdAS
dAS
dAs`)

Handle tokens from URL

Hello,

We quite of support url parameters. You can try it by using this url: https://aloisdg.github.io/diab/?cards=2x%20Opt%0A1x%20Annul

Note that %0A is an url encoded \n.

Expected Payload should be:

2x Opt
1x Annul

But here we have

2x Opt
1x Annul

Then

1 Squirrel
1 Shark

I would love to find a simple way of handling both. Since this is quite young, I think we cant break the parameter input logic. wE should document it a bit in the readme too.

The current code to handle this is quite simple. You can read it here.

const locationHref = new URL(window.location.href);
if (locationHref.search) {
  const searchParams = new URLSearchParams(locationHref.search);
  document.getElementById("cards").value = searchParams.get("cards");
  renderDeck();
}

I think a fix could be:

const locationHref = new URL(window.location.href);
if (locationHref.search) {
  const searchParams = new URLSearchParams(locationHref.search);
  document.getElementById("cards").value = searchParams.get("cards");
  document.getElementById("extra_tokens").value = searchParams.get("tokens");
  renderDeck();
}

Note that if tokens is missing from the url, we are going to set the value to null.

Requesting a parameter that isn't present in the query string will return null

source

A null textarea value is just an empty (and sad) textarea. We are fine with it.

By the way I think #extra_tokens could be safely rename to #tokens. Check with @birdmod

Related too #18 and #26

Highlight the number of print available

Is your feature request related to a problem? Please describe.
It is not clear when using the switch print button, if it is working accordingly, when there is only one print available for a card.
It would be easier for the user to highlight the number of print available for a card, somewhere on the card.

Describe the solution you'd like
Displaying the information in the form of a slowly vanishing block. Consisting of the current print number and the total number of print available for the card. Like that => Print 2/15 or Print 2*15 or else.

Create a split mode for transform card

Ok this feature may not be in the scope of Inkfathom Proxy and maybe I should build a whole other website for it.

Everything started with this discussion:

image

Could we help with that? Yes!

Here are some creations easier to use than removing the card from the sleeve. They are inspired by Kamigawa transform card like Bushi Tenderfoot:

Bushi Tenderfoot

Those creations are made with Inkscape, but they would be not hard to do with a canvas:

diagonal split:
g1118
g11182

Optimize picture split:

g1122
g11222

Note that I made a mistake by mirroring the temple. Of course I could have fix that, but this is just a show case.

You can try split.zip

best part? they are both recognize by Spelltable!

image

Add history support

We fill the history :array on display.click and we print it on up arrow?

UX

Here we go

const area = document.querySelector("textarea")
document.onkeydown = function(e) {
if (area === document.activeElement && area.value === "" && e.keyCode == 38) {
            alert('up');
            return false;
    }
}; 

DB

localStorage.setItem('bgcolor', document.getElementById('bgcolor').value);
var currentColor = localStorage.getItem('bgcolor');

thank u and i search to take Manacost

hello friend:
i llove your work, i create a website with your script and i just need answer for improuve it!

i would like to put in html a

  • with select all set in magic, and if i select "vow" the card appear and i can print it...
    in python it's SetName but in java???

    and after i'm interesting by your function createCardAsText it's put into blank card the name, cost, and other things! i will like take all information in table like this

    etc...

    it's possible
    thank for answer!

Add US paper size

The US uses a different size for paper than the international sizes, and many Americans aren't aware of the difference. Most printers here use 8.5"x11", better known as "letter size." I'd appreciate it if you could add these sizes to your table of sizes, since my problem with many online proxy sites is that they print cards slightly too big/too small. https://papersizes.io/us/

https://old.reddit.com/r/EDH/comments/jv27n1/best_way_to_share_mana_bases_between_multiple/gcigaub/

related to #23

Name change

Hello,

I dont like Diab as a name. How about renaming the project? How would you like to call it?
Any help is welcome!

Cheers,

Replace size options with a scale input

The size option could be more customizable with a scale input.

The size dropdown should be replaced by a number input spinner (input field with up/down arrows).
The spinners input is the percentage of the card size. Default value should be 100 = normal card size.

Minimum value should be at least 1. We don't want to divide by 0 to check how many cards fit on a sheet.
Arrows (if included) should inc/dec by 1 (not below minimum)
Maximum is optional.

Add crop/cutting mark

I'm always frustrated when I try to cut the paper. The gutter is not enough to cut straight from the edge.

A crop/cutting mark would help. Like a gutter is light grey starting from the edge of the paper.

This could done side-with or even replaced the gutter feature entirely.

Thanks 𝕶𝖆𝖎𝖓 𝕸𝖔𝖗𝖌𝖊𝖓 for the idea!

Size default back to normal when selecting other cards and printing them

Describe the bug
just tried 'tiny' and it produces 5x5 card sheets now.
If you change the cards afterwards and 'print' another pdf the size defaults back to normal though (even with the setting still on tiny)

To Reproduce
Steps to reproduce the behavior:
load page with default card list.
Change squirrels to 21.
Click the magnifier to load the extra squirrels.
Set size to tiny. (The preview shrinks)
Click print. -> Get a pdf with a 5x5 grid.

Now change squirrels to 22 (or whatever)
Click the magnifier to load the change.
! Don't change the cardsize (the option is still on tiny on the dropdown)
Click the print button -> You get a pdf with a 3x3 grid even though tiny was selected, because you always have to select it after clicking the magnifier button for it to work.
Expected behavior
A clear and concise description of what you expected to happen.

Copy Pasta of the bug reported by Kain Morgen on Discord, we thank you Kain !

Dark theme

What about a dark theme ? Do you think this could appeal to users ?
If yes the background will need to be processed before being sent to the printer otherwise ... 🖨️ 😠

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.