(defun hour-minute-seconds-to-milliseconds (input) "Convert a string of format 01:02:03 to milliseconds." (with-temp-buffer (insert input) (goto-char (point-min)) (search-forward-regexp "\\([[:digit:]]+\\):\\([[:digit:]]+\\):\\([[:digit:]]+\\)") (let* ((hour (string-to-number (match-string 1))) (minutes (* 60 hour)) (minute (string-to-number (match-string 2))) (seconds (* 60 (+ minute minutes))) (second (string-to-number (match-string 3))) (total (+ second seconds))) (* 1000 total)))) (defun kill-ring-to-milliseconds () (interactive) (insert (number-to-string (hour-minute-seconds-to-milliseconds (car kill-ring))))) (defun convert-playlist () (interactive) (goto-char (point-min)) (with-no-warnings (while t (search-forward "|") ;; to ensure failure on when we have passed last item. (end-of-line) (search-backward "|") (forward-char) (forward-char) (kill-line) (kill-ring-to-milliseconds) (beginning-of-line) (let ((line-move-visual nil)) (next-line nil nil)))))