From 0960515e644015c6d85549fa3bef3d67c0ee7116 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Sun, 26 Nov 2017 18:35:44 +0100 Subject: lisp/emms-browser.el: Extract year from info-date or fallback on info-year --- lisp/emms.el | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lisp/emms.el') diff --git a/lisp/emms.el b/lisp/emms.el index b91115e..0f2bd03 100644 --- a/lisp/emms.el +++ b/lisp/emms.el @@ -705,6 +705,29 @@ string), a confusing error message would result." desc (emms-track-simple-description track)))) +(defun emms-track-get-year (track) + "Get year of TRACK for display. +There is the separation between the 'release date' and the +'original date'. This difference matters e.g. for +re-releases (anniversaries and such) where the release date is +more recent than the original release date. In such cases the +user probably wants the original release date so this is what we +show." + (or + (emms-format-date-to-year (emms-track-get track 'info-date)) + (emms-format-date-to-year (emms-track-get track 'info-originaldate)) + (emms-track-get track 'info-year) + (emms-track-get track 'info-originalyear))) + +(defun emms-format-date-to-year (date) + "Try to extract year part from DATE. +Return nil if the year cannot be extracted." + (when date + (let ((year (nth 5 (parse-time-string date)))) + (if year (number-to-string year) + (when (string-match "^[ \t]*\\([0-9]\\{4\\}\\)" date) + (match-string 1 date)))))) + ;;; The Playlist -- cgit v1.2.3