Files
rktplayer/music-library.rkt
2026-02-19 20:29:36 +01:00

48 lines
1.3 KiB
Racket

#lang racket
(provide music-lib-relevant?
is-music-dir?
is-music-file?
basename
library-formatter
)
(define (music-lib-relevant? f)
(let ((type (file-or-directory-type f #t)))
(if (eq? type 'directory)
(let ((name (basename f)))
(not (string-prefix? name ".")))
(if (eq? type 'file)
(let* ((fn (string-downcase (format "~a" f)))
(exts (list "flac" "mp3")))
(let ((l (filter (λ (e) (string-suffix? fn (string-append "." e))) exts)))
(not (null? l))))
#f))))
(define (is-music-dir? f)
(and (music-lib-relevant? f)
(directory-exists? f)))
(define (is-music-file? f)
(and (music-lib-relevant? f)
(file-exists? f)))
(define (basename file)
(call-with-values (λ () (split-path file))
(λ (base name is-dir)
(path->string name))))
(define (library-formatter row)
(let ((file-entry (car row))
(file-id (cadr row))
)
(list (list 'td (list (list 'class "library-entry") (list 'id file-id) (list 'file (format "~a" file-entry)))
(if (equal? file-id "lib-up")
file-entry
(basename file-entry))
))
)
)