]> git.vanrenterghem.biz Git - musicbrainz.git/commitdiff
Support individual historic listens submittion. master
authorFrederik Vanrenterghem <frederik@vanrenterghem.biz>
Sat, 25 Jan 2025 13:13:30 +0000 (21:13 +0800)
committerFrederik Vanrenterghem <frederik@vanrenterghem.biz>
Sat, 25 Jan 2025 13:13:30 +0000 (21:13 +0800)
listenbrainz.el

index 43084f7773ea41bcb06eea5c6e87ba220cb9d0e3..5ebf40adf7361edd8efca2c5ea4e42839f77d156 100644 (file)
@@ -2,9 +2,10 @@
 
 ;; Copyright 2023 FoAM
 ;;
-;; Author: nik gaffney <nik@fo.am>
+;; Author: nik gaffney <nik@fo.am>, Frederik Vanrenterghem <frederik@vanrenterghem.biz>
 ;; Created: 2023-05-05
-;; Version: 0.1
+;; Updated: 2025-01-25
+;; Version: 0.2fv
 ;; Package-Requires: ((emacs "27.1") (request "0.3"))
 ;; Keywords: music, scrobbling, multimedia
 ;; URL: https://github.com/zzkt/listenbrainz
@@ -289,12 +290,13 @@ macroexpands to something like ->
 ;; - https://listenbrainz.readthedocs.io/en/production/dev/api-usage/#submitting-listens
 ;; - https://listenbrainz.readthedocs.io/en/production/dev/json/#json-doc
 
-(defun listenbrainz-submit-listen (type artist track &optional release)
+(defun listenbrainz-submit-listen (type artist track &optional release timestamp)
   "Submit listening data to ListenBrainz.
 - listen TYPE (string) either \='single\=', \='import\=' or \='playing_now\='
 - ARTIST name (string)
 - TRACK title (string)
-- RELEASE title (string) also  album title."
+- RELEASE title (string) also  album title.
+- TIMESTAMP time (time) track was listened to"
   (message "listenbrainz: submitting %s - %s - %s" artist track release)
   (let* ((json-null "")
          (now (listenbrainz-timestamp))
@@ -306,6 +308,7 @@ macroexpands to something like ->
                          (remove nil
                                  (list
                                   (when (string= type "single") (cons "listened_at" now))
+                                 (when (string= type "import") (cons "listened_at" (listenbrainz-timestamp timestamp)))
                                   (list "track_metadata"
                                         (cons "artist_name" artist)
                                         (cons "track_name" track)
@@ -332,6 +335,10 @@ macroexpands to something like ->
   "Submit data for track (ARTIST TRACK and optional RELEASE) playing now."
   (listenbrainz-submit-listen "playing_now" artist track (when release release)))
 
+;;;###autoload
+(defun listenbrainz-submit-historic-listen (artist track timestamp &optional release)
+  "Submit data for track (ARTIST TRACK and optional RELEASE) heard at TIMESTAMP."
+  (listenbrainz-submit-listen "import" artist track (if release release "") timestamp))
 
 ;;; ;; ;; ;  ; ;   ;  ;      ;
 ;;