"use" serapeum and alexandria

This commit is contained in:
2026-01-03 22:01:40 -05:00
parent ac691cd181
commit 0204a521b9
6 changed files with 16 additions and 16 deletions

View File

@@ -12,10 +12,10 @@
(keys (mapcar #'string-to-hash-table-key (subseq header 0 num-fields-to-keep))) (keys (mapcar #'string-to-hash-table-key (subseq header 0 num-fields-to-keep)))
(drops (map 'vector (drops (map 'vector
(lambda (row) (lambda (row)
(serapeum:pairhash keys (subseq row 0 num-fields-to-keep))) (pairhash keys (subseq row 0 num-fields-to-keep)))
(cdr csv)))) (cdr csv))))
(setf *chronostory-drops* drops) (setf *chronostory-drops* drops)
(alexandria-2:write-string-into-file (write-string-into-file
(shasht:write-json drops nil) (shasht:write-json drops nil)
"drops.json" "drops.json"
:if-exists :overwrite :if-exists :overwrite

View File

@@ -46,7 +46,7 @@
(declare (ignore _)) (declare (ignore _))
(uiop:println "Retrieved chronostory items. Writing out to json file...") (uiop:println "Retrieved chronostory items. Writing out to json file...")
(setf *chronostory-items* chrono-items) (setf *chronostory-items* chrono-items)
(alexandria-2:write-string-into-file (write-string-into-file
(shasht:write-json chrono-items nil) (shasht:write-json chrono-items nil)
"items.json" "items.json"
:if-exists :overwrite :if-exists :overwrite

View File

@@ -4,17 +4,17 @@
(defparameter *chronostory-gacha-search-format* "https://chronostory.onrender.com/api/gacha-search?itemId=~a") (defparameter *chronostory-gacha-search-format* "https://chronostory.onrender.com/api/gacha-search?itemId=~a")
(defparameter *chronostory-gacha-url-format "https://chronostory.onrender.com/api/gacha-items?gachaId=~a") (defparameter *chronostory-gacha-url-format "https://chronostory.onrender.com/api/gacha-items?gachaId=~a")
(serapeum:comment (comment
(reload-mob-data) (reload-mob-data)
(defvar foo nil) (defvar foo nil)
(setf foo (serapeum/bundle:random-elt *chronostory-mobs*)) (setf foo (serapeum/bundle:random-elt *chronostory-mobs*))
*chronostory-drops* *chronostory-drops*
(serapeum:filter-map (filter-map
(lambda (m) (lambda (m)
(when (= (parse-integer (gethash "DROPPERID" m)) (when (= (parse-integer (gethash "DROPPERID" m))
(parse-integer (serapeum:href foo "mob" "mob_id"))) (parse-integer (href foo "mob" "mob_id")))
(gethash "ITEMNAME" m))) (gethash "ITEMNAME" m)))
(coerce *chronostory-drops* 'list))) (coerce *chronostory-drops* 'list)))

View File

@@ -37,7 +37,7 @@
(declare (ignore _)) (declare (ignore _))
(uiop:println "Retrieved chronostory mobs. Writing out to json file...") (uiop:println "Retrieved chronostory mobs. Writing out to json file...")
(setf *chronostory-mobs* chrono-mobs) (setf *chronostory-mobs* chrono-mobs)
(alexandria-2:write-string-into-file chrono-mobs-str "mobs.json" :if-exists :overwrite :if-does-not-exist :create) (write-string-into-file chrono-mobs-str "mobs.json" :if-exists :overwrite :if-does-not-exist :create)
(uiop:println "Done!"))) (uiop:println "Done!")))
(defun reload-mob-data () (defun reload-mob-data ()

View File

@@ -61,7 +61,7 @@ separate csvs."
(result (make-array 0 :adjustable t :fill-pointer 0))) (result (make-array 0 :adjustable t :fill-pointer 0)))
(loop for row in csv (loop for row in csv
with mapname = "" with mapname = ""
for hm = (serapeum:pairhash keys row (serapeum:dict)) for hm = (pairhash keys row (dict))
when (let ((name (gethash :monster hm))) when (let ((name (gethash :monster hm)))
(and (string-not-equal "" name) (and (string-not-equal "" name)
(string-not-equal "-" name) (string-not-equal "-" name)
@@ -74,7 +74,7 @@ separate csvs."
result)) result))
(defun parse-sheet (sheet) (defun parse-sheet (sheet)
(let* ((lines (serapeum:lines sheet)) (let* ((lines (lines sheet))
(field (find-first-empty-field (car lines))) (field (find-first-empty-field (car lines)))
(first-half (loop for line in lines (first-half (loop for line in lines
when (not (uiop:string-prefix-p ",,," line)) when (not (uiop:string-prefix-p ",,," line))
@@ -84,20 +84,20 @@ separate csvs."
for second-half = (second-half line field) for second-half = (second-half line field)
when (not (uiop:string-prefix-p ",,," second-half)) when (not (uiop:string-prefix-p ",,," second-half))
collect second-half)) collect second-half))
(joined (serapeum:string-join (concatenate 'list first-half second-half) #\Newline))) (joined (string-join (concatenate 'list first-half second-half) #\Newline)))
(csv-to-hash-tables (cl-csv:read-csv joined)))) (csv-to-hash-tables (cl-csv:read-csv joined))))
(defun refresh-spawn-data () (defun refresh-spawn-data ()
(let ((spawn-data (serapeum:pairhash (let ((spawn-data (pairhash
(mapcar #'car *chronostory-spawn-gids*) (mapcar #'car *chronostory-spawn-gids*)
(mapcar (lambda (pair) (mapcar (lambda (pair)
(let* ((gid (cdr pair)) (let* ((gid (cdr pair))
(data (drakma:http-request (chronostory-spawn-url gid)))) (data (drakma:http-request (chronostory-spawn-url gid))))
(uiop:println (serapeum:concat "Requesting data for " (symbol-name (car pair)))) (uiop:println (concat "Requesting data for " (symbol-name (car pair))))
(parse-sheet data))) (parse-sheet data)))
*chronostory-spawn-gids*)))) *chronostory-spawn-gids*))))
(setf *chronostory-spawns* spawn-data) (setf *chronostory-spawns* spawn-data)
(alexandria-2:write-string-into-file (write-string-into-file
(shasht:write-json spawn-data nil) (shasht:write-json spawn-data nil)
"spawns.json" "spawns.json"
:if-exists :overwrite :if-exists :overwrite
@@ -110,7 +110,7 @@ separate csvs."
spawn-data)) spawn-data))
(defun load-spawn-data () (defun load-spawn-data ()
(serapeum:if-not *chronostory-spawns* (if-not *chronostory-spawns*
(reload-spawn-data) (reload-spawn-data)
*chronostory-spawns*)) *chronostory-spawns*))

View File

@@ -1,5 +1,5 @@
(defpackage :lispostory (defpackage :lispostory
(:use cl)) (:use :cl :alexandria :serapeum))
(in-package :lispostory) (in-package :lispostory)
@@ -18,5 +18,5 @@
(map 'vector func vec)) (map 'vector func vec))
(defun string-to-hash-table-key (s) (defun string-to-hash-table-key (s)
(let ((k2 (string-upcase (serapeum:string-replace " " s "")))) (let ((k2 (string-upcase (string-replace " " s ""))))
(intern k2 :keyword))) (intern k2 :keyword)))