Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
|
- #|
-
- scryfall API parser
-
- WIP
-
- This downloads the API data. We haven't even parsed that data
- yet. It's hundreds of GB.
-
- |#
-
- (in-package #:cl-user)
-
- (defpackage #:cl-deck-builder2.models.mtg
- (:use :cl))
-
- (in-package #:cl-deck-builder2.models.mtg)
-
- (defparameter *base-scryfall-api-uri* "https://api.scryfall.com/")
-
- (defun scryfall-api-uri (path)
- (format nil "~a~a" *base-scryfall-api-uri* path))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (defvar *scryfall-api-data* nil
- "A list of SCRYFALL-API-DATA objects.")
-
- (defclass scryfall-api-data ()
- ((|content_encoding| :accessor scryfall-content-encoding :initarg :|content_encoding|)
- (|content_type| :accessor scryfall-content-type :initarg :|content_type|)
- (|description| :accessor scryfall-description :initarg :|description|)
- (|download_uri| :accessor scryfall-download-uri :initarg :|download_uri|)
- (|id| :accessor scryfall-id :initarg :|id|)
- (|name| :accessor scryfall-name :initarg :|name|)
- (|object| :accessor scryfall-object :initarg :|object|)
- (|size| :accessor scryfall-size :initarg :|size|)
- (|type| :accessor scryfall-type :initarg :|type|)
- (|updated_at| :accessor scryfall-updated-at :initarg :|updated_at|)
- (|uri| :accessor scryfall-uri :initarg :|uri|)))
-
- (defun get-scryfall-data ()
- (let ((json (getf
- (jonathan:parse
- (flex:octets-to-string
- (drakma:http-request (scryfall-api-uri "bulk-data"))))
- :|data|)))
- (mapcar (lambda (row)
- (apply #'make-instance 'scryfall-api-data row))
- json)))
-
- (defun load-scryfall-data ()
- (setf *scryfall-api-data*
- (get-scryfall-data)))
-
- (defun size-in-gb (size)
- (float (/ size (* 1024 1024 1024))))
-
- (defun get-bulk-data-uris (path)
- (with-open-file (out path
- :direction :output
- :if-exists :supersede
- :if-does-not-exist :create)
- (format out "~{~A~%~}"
- (mapcar #'scryfall-download-uri *scryfall-api-data*))))
|