Simple database: Difference between revisions
Content added Content deleted
m (→{{header|Common Lisp}}: small improvements: prompt more and better defaults for make-episode, improve output formatting) |
|||
Line 253: | Line 253: | ||
(format stream (if *print-escape* |
(format stream (if *print-escape* |
||
"#s(episode~@{~*~@[ :~1:*~a ~s~]~})" |
"#s(episode~@{~*~@[ :~1:*~a ~s~]~})" |
||
"~ |
"~32<~*~a~; ~*~@[~d-~]~*~d~> ~45<~*~@[~a ~]~*~@[(~a) ~]~;~*~@[(~a)~]~>~*~@[ (~{~a~^ ~})~]") |
||
:series (episode-series ep) |
:series (episode-series ep) |
||
:season (episode-season ep) |
:season (episode-season ep) |
||
Line 324: | Line 324: | ||
(when (not last) |
(when (not last) |
||
(setf last (make-episode))) |
(setf last (make-episode))) |
||
(let* ((series (prompt-read "Series Title" (episode-series last))) |
|||
⚫ | |||
(title (prompt-read "Title")) |
|||
(season (parse-number (prompt-read "Season" (episode-season last)))) |
|||
(episode (parse-number (prompt-read "Episode" |
|||
(if (eq (episode-season last) season) |
|||
(1+ (episode-episode last)) |
|||
1)))) |
|||
(part (parse-number (prompt-read "Part" |
|||
(when (and (episode-part last) |
|||
⚫ | |||
(or (eq (episode-season last) season) |
|||
(eq (episode-part last) 1))) |
|||
(1+ (episode-part last)))))) |
|||
(date (parse-date (prompt-read "Date watched" (format-ymd (get-current-date))))) |
|||
⚫ | |||
⚫ | |||
:series series |
|||
:title title |
|||
:season season |
|||
:episode episode |
|||
:part part |
|||
:date date |
|||
:tags tags))) |
|||
(defun parse-integer-quietly (&rest args) |
(defun parse-integer-quietly (&rest args) |
||
Line 375: | Line 388: | ||
(format t "~30a ~a ~@[ (~{~a~^ ~})~]~%" |
(format t "~30a ~a ~@[ (~{~a~^ ~})~]~%" |
||
(car series) (series-description (cdr series)) (series-tags (cdr series))) |
(car series) (series-description (cdr series)) (series-tags (cdr series))) |
||
(format t "~{~a~%~}" (series-episodes series))) |
(format t "~{~& ~a~%~}" (series-episodes series))) |
||
(defun watch-series (title) |
(defun watch-series (title) |
||
Line 381: | Line 394: | ||
(format t "~30a ~@[ (~{~a~^ ~})~]~%~@[ ~a~%~]" title (series-tags series) |
(format t "~30a ~@[ (~{~a~^ ~})~]~%~@[ ~a~%~]" title (series-tags series) |
||
(series-description series)) |
(series-description series)) |
||
(format t "~{~a~%~}" (reverse (series-episodes series))))) |
(format t "~{~& ~a~%~}" (reverse (series-episodes series))))) |
||
(defun dump-db (database) |
(defun dump-db (database) |
||
Line 388: | Line 401: | ||
(defun watch-latest () |
(defun watch-latest () |
||
(format t "~{~a~%~}" (sort (get-latest *db*) #'compare-by-date))) |
(format t "~{~& ~a~%~}" (sort (get-latest *db*) #'compare-by-date))) |
||
(defun watch-all () |
(defun watch-all () |
||
(format t "~{~a~%~}" (sort (get-all *db*) #'compare-by-date))) |
(format t "~{~& ~a~%~}" (sort (get-all *db*) #'compare-by-date))) |
||
(defun watch-new-series (&key name description tags) |
(defun watch-new-series (&key name description tags) |
||
Line 411: | Line 424: | ||
(defun watch-series-names () |
(defun watch-series-names () |
||
(format T "~{~a~%~}" |
(format T "~{~& ~a~%~}" |
||
(sort (mapcar #'car *db*) |
(sort (mapcar #'car *db*) |
||
(lambda (series1 series2) |
(lambda (series1 series2) |
||
Line 419: | Line 432: | ||
(defun watch-load (dbfile) |
(defun watch-load (dbfile) |
||
(setf *db* (load-db dbfile))) |
(setf *db* (load-db dbfile))) |
||
(defun argv () |
(defun argv () |