From cb450eac9005d1945feb09052222b0cd4e139284 Mon Sep 17 00:00:00 2001 From: jao Date: Mon, 23 Nov 2020 03:16:35 +0000 Subject: suffling around some files --- emms/jao-emms-info-track.el | 208 ------------ emms/jao-emms-lyrics.el | 41 --- emms/jao-emms-random-album.el | 118 ------- emms/jao-emms.el | 27 -- emms/leoslyrics.py | 84 ----- emms/lyricwiki.rb | 52 --- media/jao-emms-info-track.el | 208 ++++++++++++ media/jao-emms-lyrics.el | 41 +++ media/jao-emms-random-album.el | 118 +++++++ media/jao-emms.el | 27 ++ media/jao-mpris.el | 128 ++++++++ media/jao-random-album.el | 101 ++++++ media/leoslyrics.py | 84 +++++ media/lyricwiki.rb | 52 +++ misc/jao-ednc.el | 115 ------- misc/jao-minibuffer.el | 104 ------ misc/jao-random-album.el | 101 ------ misc/randomsig.el | 724 ----------------------------------------- net/randomsig.el | 724 +++++++++++++++++++++++++++++++++++++++++ readme.org | 2 +- sys/jao-ednc.el | 118 +++++++ sys/jao-minibuffer.el | 104 ++++++ 22 files changed, 1706 insertions(+), 1575 deletions(-) delete mode 100644 emms/jao-emms-info-track.el delete mode 100644 emms/jao-emms-lyrics.el delete mode 100644 emms/jao-emms-random-album.el delete mode 100644 emms/jao-emms.el delete mode 100755 emms/leoslyrics.py delete mode 100755 emms/lyricwiki.rb create mode 100644 media/jao-emms-info-track.el create mode 100644 media/jao-emms-lyrics.el create mode 100644 media/jao-emms-random-album.el create mode 100644 media/jao-emms.el create mode 100644 media/jao-mpris.el create mode 100644 media/jao-random-album.el create mode 100755 media/leoslyrics.py create mode 100755 media/lyricwiki.rb delete mode 100644 misc/jao-ednc.el delete mode 100644 misc/jao-minibuffer.el delete mode 100644 misc/jao-random-album.el delete mode 100644 misc/randomsig.el create mode 100644 net/randomsig.el create mode 100644 sys/jao-ednc.el create mode 100644 sys/jao-minibuffer.el diff --git a/emms/jao-emms-info-track.el b/emms/jao-emms-info-track.el deleted file mode 100644 index 728666d..0000000 --- a/emms/jao-emms-info-track.el +++ /dev/null @@ -1,208 +0,0 @@ -;; jao-emms-info-track.el -- utilities to show tracks -*- lexical-binding:t; -*- - -;; Copyright (C) 2009, 2010, 2013, 2017, 2020 Jose Antonio Ortega Ruiz - -;; Author: Jose Antonio Ortega Ruiz -;; Start date: Sat Jul 04, 2009 13:47 - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(require 'emms) -(require 'emms-tag-editor) -(require 'emms-player-mpd) -(require 'jao-osd) -(require 'jao-emms) -(require 'jao-minibuffer) - -(defgroup jao-emms-faces nil "Faces" - :group 'faces - :group 'jao-emms) - -(defface jao-emms-font-lock-album '((t (:foreground "lightgoldenrod2"))) - "Album name in EMMS track message." - :group 'jao-emms-faces) - -(defface jao-emms-font-lock-track '((t (:bold t))) - "Track number in EMMS track message." - :group 'jao-emms-faces) - -(defface jao-emms-font-lock-title '((t (:foreground "dodgerblue2"))) - "Track title in EMMS track message." - :group 'jao-emms-faces) - -(defface jao-emms-font-lock-artist '((t (:foreground "dodgerblue3"))) - "Artist name in EMMS track message." - :group 'jao-emms-faces) - -(defcustom jao-emms-show-osd-p nil - "Whether to show osd notices on track change" - :group 'jao-emms) - - - -(defun jao-emms-info-track-stream (track) - "Return track info for streams" - (let ((name (emms-track-name track)) - (title (or (emms-track-get track 'title nil) - (car (emms-track-get track 'metadata nil))))) - (format "♪ %s (%s)" title (if title (emms-track-type track) name)))) - -(defsubst jao--put-face (str face) - (put-text-property 0 (length str) 'face face str) - str) - -(defun jao-emms--to-number (x) - (or (and (numberp x) x) - (and (stringp x) - (string-match "\\`\\(:?[0-9]+\\)" x) - (string-to-number (match-string 1 x))))) - -(defun jao-emms--fmt-time (x suffix) - (if x (format "%02d:%02d%s" (/ x 60) (mod x 60) (or suffix "")) "")) - -(defun jao-emms--fmt-song-times (track lapsed pre post) - (if lapsed - (let ((time (when track (emms-track-get track 'info-playing-time)))) - (format "%s%s%s%s" - (or pre "") - (jao-emms--fmt-time lapsed (when time "/")) - (jao-emms--fmt-time time "") - (or post ""))) - "")) - -(defun jao-emms-info-track-file (track &optional lapsed plen titlesep) - "Return a description of the current track." - (let* ((no (jao-emms--to-number (emms-track-get track 'info-tracknumber "0"))) - (time (emms-track-get track 'info-playing-time)) - (year (emms-track-get track 'info-year)) - (year (if year (format " (%s)" year) "")) - (artist (emms-track-get track 'info-artist "")) - (composer (emms-track-get track 'info-composer nil)) - (title (emms-track-get track 'info-title "")) - (album (emms-track-get track 'info-album)) - (last-played (or (emms-track-get track 'last-played) '(0 0 0))) - (play-count (or (emms-track-get track 'play-count) 0)) - (playlength (if plen (format "/%02d" (string-to-number plen)) ""))) - (if (or (not title) (not album)) - (emms-track-simple-description track) - (format "♪ %s%s%s%s%s%s%s" - (jao--put-face (if (zerop no) "" (format "%02d%s " no playlength)) - 'jao-emms-font-lock-track) - (jao--put-face title - 'jao-emms-font-lock-title) - (or titlesep " ") - (jao-emms--fmt-song-times track lapsed "[" "] ") - (jao--put-face artist 'jao-emms-font-lock-artist) - (jao--put-face (if composer (format " [%s]" composer) "") - 'jao-emms-font-lock-artist) - (jao--put-face (if album - (format " (%s%s)" album year) - (format "%s *") year) - 'jao-emms-font-lock-album))))) - -;;;###autoload -(defun jao-emms-info-track-description (track &optional lapsed plen tsep) - (if (memq (emms-track-type track) '(streamlist url)) - (jao-emms-info-track-stream track) - (jao-emms-info-track-file track lapsed plen tsep))) - -;;;###autoload -(defun jao-emms-toggle-osd () - (interactive) - (setq jao-emms-show-osd-p (not jao-emms-show-osd-p)) - (message "Emms OSD %s" (if jao-emms-show-osd-p "enabled" "disabled"))) - -(defvar jao-emms-show-icon nil) - -(defun jao-emms--with-mpd-track (callback) - (emms-player-mpd-get-status - nil - (lambda (_ st) - (let* ((lapsed (jao-emms--to-number (cdr (assoc "time" st)))) - (plen (cdr (assoc "playlistlength" st))) - (song (jao-emms--to-number (cdr (assoc "song" st)))) - (track (emms-playlist-current-selected-track))) - (when (and track song) - (emms-track-set track 'info-tracknumber (format "%d" (1+ song)))) - (funcall callback track lapsed plen))))) - -;;;###autoload -(defun jao-emms-show-osd () - (interactive) - (jao-emms--with-mpd-track - (lambda (track lapsed play-len) - (let* ((sep "~~~~~") - (s (jao-emms-info-track-description track lapsed play-len sep)) - (s (substring-no-properties s 2)) - (cs (split-string s sep))) - (jao-notify (car cs) (cadr cs) jao-emms-show-icon))))) - -(defun jao-emms-show-osd-hook () - (interactive) - (when jao-emms-show-osd-p (jao-emms-show-osd))) - -(defun jao-emms-install-i3dv2 () - (add-to-list 'emms-tag-editor-tagfile-functions - '("mp3" "id3v2" ((info-artist . "a") - (info-title . "t") - (info-album . "A") - (info-tracknumber . "T") - (info-year . "y") - (info-genre . "g") - (info-composer . "-TCOM") - (info-note . "c"))))) - -(defvar jao-emms-echo-string "") -(defun jao-emms-update-echo-string (&optional existing-track) - (if emms-player-playing-p - (jao-emms--with-mpd-track - (lambda (track lapsed play-len) - (setq jao-emms-echo-string - (if emms-player-paused-p - (if existing-track - (format "(%s/%s)" - (emms-track-get existing-track 'info-tracknumber) - play-len) - "") - (jao-emms-info-track-description track nil play-len))) - (jao-minibuffer-refresh))) - (setq jao-emms-echo-string "") - (jao-minibuffer-refresh))) - -(defun jao-emms-enable-minibuffer () - (jao-minibuffer-add-variable 'jao-emms-echo-string t) - (dolist (h '(emms-track-updated-functions - emms-player-finished-hook - emms-player-stopped-hook - emms-player-started-hook - emms-player-paused-hook)) - (add-hook h #'jao-emms-update-echo-string))) - -;;;###autoload -(defun jao-emms-info-setup (&optional show-mini show-osd show-echo-line no-id3) - (setq emms-track-description-function 'jao-emms-info-track-description) - (setq jao-emms-show-osd-p show-osd) - (add-hook 'emms-player-started-hook 'jao-emms-show-osd-hook) - (when show-mini (jao-emms-enable-minibuffer)) - (unless show-echo-line - (eval-after-load 'emms-player-mpd - '(remove-hook 'emms-player-started-hook 'emms-player-mpd-show))) - (unless no-id3 (jao-emms-install-i3dv2)) - (ignore-errors (emms-player-mpd-connect))) - - -(provide 'jao-emms-info-track) -;;; jao-emms-info-track.el ends here diff --git a/emms/jao-emms-lyrics.el b/emms/jao-emms-lyrics.el deleted file mode 100644 index 0ea52e0..0000000 --- a/emms/jao-emms-lyrics.el +++ /dev/null @@ -1,41 +0,0 @@ -;; jao-emms-lyrics.el -- simple show lyrics in emms - -;; Copyright (C) 2009, 2010, 2017, 2019, 2020 Jose Antonio Ortega Ruiz - -;; Author: Jose Antonio Ortega Ruiz -;; Start date: Sat Jul 04, 2009 13:41 - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(require 'emms) -(require 'jao-lyrics) - -;;;###autoload -(defun jao-emms-lyrics-track-data () - (let ((track (or (emms-playlist-current-selected-track) - (error "No playing track")))) - (cons (or (emms-track-get track 'info-artist nil) - (error "No artist")) - (or (emms-track-get track 'info-title nil) - (error "No artist"))))) - -;;;###autoload -(defun jao-emms-show-lyrics (&optional force) - (let ((jao-lyrics-info-function 'jao-emms-lyrics-track-data)) - (jao-show-lyrics force))) - -(provide 'jao-emms-lyrics) -;;; jao-emms-lyrics.el ends here diff --git a/emms/jao-emms-random-album.el b/emms/jao-emms-random-album.el deleted file mode 100644 index 72e056b..0000000 --- a/emms/jao-emms-random-album.el +++ /dev/null @@ -1,118 +0,0 @@ -;; jao-emms-random-album.el -- play random albums in emms - -;; Copyright (C) 2009, 2010, 2017, 2018, 2020 Jose Antonio Ortega Ruiz - -;; Author: Jose Antonio Ortega Ruiz -;; Start date: Sat Jul 04, 2009 13:06 - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - - -(require 'emms) -(require 'jao-minibuffer) - -(defvar jao-emms-random-album-p t) -(defvar jao-emms-random-lines nil) -(defvar jao-emms-random-lines-file - (expand-file-name "~/.emacs.d/random-lines")) -(defvar jao-emms-random-album-notify-p t) -(defvar jao-emms-random-album-notify-icon nil) - -(defun jao-emms-random-lines () - (or jao-emms-random-lines - (and (file-exists-p jao-emms-random-lines-file) - (with-current-buffer - (find-file-noselect jao-emms-random-lines-file) - (goto-char (point-min)) - (setq jao-emms-random-lines (read (current-buffer))))) - (dotimes (n (1- (line-number-at-pos (point-max))) - jao-emms-random-lines) - (push (1+ n) jao-emms-random-lines)))) - -(defun jao-emms-random-lines-save () - (with-current-buffer (find-file-noselect jao-emms-random-lines-file) - (delete-region (point-min) (point-max)) - (insert (format "%s\n" jao-emms-random-lines)) - (save-buffer))) - -(defun jao-emms-goto-random-album () - (let* ((pos (random (length (jao-emms-random-lines)))) - (line (nth pos jao-emms-random-lines))) - (setq jao-emms-random-lines (remove line jao-emms-random-lines)) - (jao-emms-random-lines-save) - (goto-line line))) - -(defun jao-emms-next-noerror () - (interactive) - (when emms-player-playing-p - (error "A track is already being played")) - (cond (emms-repeat-track - (emms-start)) - ((condition-case nil - (progn - (emms-playlist-current-select-next) - t) - (error nil)) - (emms-start)) - (t - (if jao-emms-random-album-p - (jao-emms-random-album-next) - (message "No next track in playlist"))))) - - -;; User interface -;;;###autoload -(defun jao-emms-random-album-start () - (interactive) - (setq jao-emms-random-album-p t) - (jao-emms-random-album-next)) - -;;;###autoload -(defun jao-emms-random-album-stop () - (interactive) - (setq jao-emms-random-album-p nil) - (emms-stop)) - -;;;###autoload -(defun jao-emms-random-album-toggle () - (interactive) - (setq jao-emms-random-album-p (not jao-emms-random-album-p)) - (message "Random album %s" - (if jao-emms-random-album-p "enabled" "disabled"))) - -;;;###autoload -(defun jao-emms-random-album-next () - (interactive) - (save-excursion - (ignore-errors (emms-browser-clear-playlist)) - (emms-browse-by-album) - (jao-emms-goto-random-album) - (let ((album (substring-no-properties (thing-at-point 'line) 0 -1))) - (emms-browser-add-tracks-and-play) - (when jao-emms-random-album-notify-p - (jao-notify album "Next album" jao-emms-random-album-notify-icon))) - (emms-browser-bury-buffer) - (jao-minibuffer-refresh))) - -;;;###autoload -(defun jao-emms-random-album-reset () - (interactive) - (setq jao-emms-random-lines nil) - (jao-emms-random-lines-save)) - -(setq emms-player-next-function 'jao-emms-next-noerror) - - -(provide 'jao-emms-random-album) -;;; jao-emms-random-album.el ends here diff --git a/emms/jao-emms.el b/emms/jao-emms.el deleted file mode 100644 index 53b3513..0000000 --- a/emms/jao-emms.el +++ /dev/null @@ -1,27 +0,0 @@ -;; jao-emms.el -- shared bits - -;; Copyright (C) 2009, 2010 Jose Antonio Ortega Ruiz - -;; Author: Jose Antonio Ortega Ruiz -;; Start date: Sat Jul 04, 2009 13:51 - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(defgroup jao-emms nil "Emms extensions" :group 'emms) - - -(provide 'jao-emms) -;;; jao-emms.el ends here diff --git a/emms/leoslyrics.py b/emms/leoslyrics.py deleted file mode 100755 index 5e4f8c8..0000000 --- a/emms/leoslyrics.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/python -# -# (c) 2004-2008 The Music Player Daemon Project -# http://www.musicpd.org/ -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# -# Load lyrics from leoslyrics.com -# - -from sys import argv, exit -from urllib import urlencode, urlopen -from xml.sax import make_parser, SAXException -from xml.sax.handler import ContentHandler - -class SearchContentHandler(ContentHandler): - def __init__(self): - self.code = None - self.hid = None - - def startElement(self, name, attrs): - if name == 'response': - self.code = int(attrs['code']) - elif name == 'result': - if self.hid is None or attrs['exactMatch'] == 'true': - self.hid = attrs['hid'] - -def search(artist, title): - query = urlencode({'auth': 'ncmpc', - 'artist': artist, - 'songtitle': title}) - url = "http://api.leoslyrics.com/api_search.php?" + query - f = urlopen(url) - handler = SearchContentHandler() - parser = make_parser() - parser.setContentHandler(handler) - parser.parse(f) - return handler.hid - -class LyricsContentHandler(ContentHandler): - def __init__(self): - self.code = None - self.is_text = False - self.text = None - - def startElement(self, name, attrs): - if name == 'text': - self.text = '' - self.is_text = True - else: - self.is_text = False - - def characters(self, chars): - if self.is_text: - self.text += chars - -def lyrics(hid): - query = urlencode({'auth': 'ncmpc', - 'hid': hid}) - url = "http://api.leoslyrics.com/api_lyrics.php?" + query - f = urlopen(url) - handler = LyricsContentHandler() - parser = make_parser() - parser.setContentHandler(handler) - parser.parse(f) - return handler.text - -hid = search(argv[1], argv[2]) -if hid is None: - exit(2) -print lyrics(hid).encode('utf-8') diff --git a/emms/lyricwiki.rb b/emms/lyricwiki.rb deleted file mode 100755 index f163fa4..0000000 --- a/emms/lyricwiki.rb +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env ruby -# -# (c) 2004-2008 The Music Player Daemon Project -# http://www.musicpd.org/ -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -# -# Load lyrics from lyrics.wikia.com, formerly lyricwiki.org -# - -require 'uri' -require 'net/http' -require 'cgi' - -url = "http://lyrics.wikia.com/api.php?action=lyrics&fmt=xml&func=getSong" + \ - "&artist=#{URI.escape(ARGV[0])}&song=#{URI.escape(ARGV[1])}" -response = Net::HTTP.get(URI.parse(url)) - -if not response =~ /\s*(.*?)\s*<\/url>/im - $stderr.puts "No URL in response!" - exit(1) -end - -url = $1 -exit(69) if url =~ /action=edit$/ - -response = Net::HTTP.get(URI.parse(url)) -if not response =~ /
\s*(.*?)\s*