diff options
Diffstat (limited to 'index.php')
-rw-r--r-- | index.php | 105 |
1 files changed, 9 insertions, 96 deletions
@@ -1,101 +1,14 @@ <?php -use Gotenberg\Gotenberg; -use Gotenberg\Stream; - -require_once __DIR__ . '/vendor/autoload.php'; - -$decklist = $_ENV['DECKLIST']; - -/* - * (\d+) ([\w\s]+) \(([\w\d]+)\) (\d+) - * 2 Hall of Storm Giants (AFR) 257 - */ - -preg_match_all("/(\d+) ([\w\s]+) \(([\w\d]+)\) (\d+)/", $decklist, $matches); -$cards = []; -for ($idx = 0; $idx < count($matches[0]); $idx++) { - $cards[] = [ - 'quantity' => $matches[1][$idx], - 'name' => $matches[2][$idx], - 'set' => $matches[3][$idx], - 'number' => $matches[4][$idx], - ]; -} - -/* - * SELECT scryfallId from cardIdentifiers - * JOIN cards ON cardIdentifiers.uuid=cards.uuid - * WHERE cards.setCode='$SETCODE' AND cards.number='$NUMBER'; - */ - -$db = new \PDO('sqlite:AllPrintings.sqlite'); - -$images = []; -foreach ($cards as $card) { - $query = 'SELECT scryfallId from cardIdentifiers JOIN cards on cardIdentifiers.uuid=cards.uuid WHERE cards.setCode=:setCode AND cards.number=:number'; - $statement = $db->prepare($query); - $statement->execute(['setCode' => $card['set'], 'number' => $card['number']]); - - $id = $statement->fetchColumn()?: ''; - - if (empty($id)) { - continue; - } - - // TODO: check double sided - - $images[] = [ - 'quantity' => $card['quantity'], - 'src' => "https://cards.scryfall.io/png/front/" . substr($id, 0, 1) . "/" . substr($id, 1, 1) . "/$id.png", - ]; +if (isset($_POST['decklist'])) { + $_ENV['DECKLIST'] = $_POST['decklist']; + include __DIR__ . '/mtg-pdf.php'; + exit; } -// https://cards.scryfall.io/png/front/substr($scryfallId, 0, 1)/substr($scryfallId, 1, 1)/$scryfallId.png - -/* - curl \ ---request POST 'http://localhost:3000/forms/chromium/convert/html' \ ---form 'files=@"./index.html"' \ --o my.pdf -F marginTop=0.0 -F marginBottom=0.0 -F marginRight=0.0 -F marginLeft=0.0 - */ - -$template = <<<HTML -<html> - <head> - <style>* { margin: 0; padding: 0; } html { } #bg { background-color: #fff; display: flex; flex-wrap: wrap; } img {display:block;}</style> - <style> - @media print { - @page { - } - } - html, body { - padding: 0; - margin: 0; - } - img { - width: 2.49in; - height: 3.48in; - background-color: #16130e; - background-color: #000; - } - </style> - </head> - <body> - <div id="bg">{{imgs}}</div> - </body> -</html> -HTML; - -$imgs = array_map(function ($image) { - return str_repeat("<img src=\"$image[src]\">", $image['quantity']); -}, $images); - -$html = str_replace('{{imgs}}', implode('', $imgs), $template); -$request = Gotenberg::chromium('gotenberg:3000') - ->paperSize(8.27, 11.7) # A4 - ->margins(0, 0, 0, 0) - ->outputFilename(date("Ymd_His")) - ->html(Stream::string('index.html', $html)); +?> -Gotenberg::save($request, __DIR__ . '/output'); +<form action="" method="POST"> + <textarea name="decklist"></textarea> + <button>Submit</button> +</form> |