diff options
| -rw-r--r-- | emacs/.emacs.d/init/ycp-markup.el | 3 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/belf.el | 6 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/infobox.el | 5 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-emms.el | 9 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-libgen.el | 58 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-utils.el | 7 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-wget.el | 33 | ||||
| -rw-r--r-- | misc/.bashrc | 2 | ||||
| -rw-r--r-- | misc/.config/mpv/mpv.conf | 1 | 
9 files changed, 76 insertions, 48 deletions
diff --git a/emacs/.emacs.d/init/ycp-markup.el b/emacs/.emacs.d/init/ycp-markup.el index bee0c2a..6a6e8b8 100644 --- a/emacs/.emacs.d/init/ycp-markup.el +++ b/emacs/.emacs.d/init/ycp-markup.el @@ -107,8 +107,7 @@    (add-hook 'nov-mode-hook 'visual-line-mode)    (add-hook 'nov-mode-hook 'follow-mode)    (add-hook 'nov-mode-hook (lambda () -                             (setq next-screen-context-lines 4 -                                   line-spacing .1))) +                             (setq line-spacing .1)))    (add-hook 'nov-post-html-render-hook 'my-nov-set-margins)    (require 'my-nov)    (my-override nov-render-title) diff --git a/emacs/.emacs.d/lisp/my/belf.el b/emacs/.emacs.d/lisp/my/belf.el index 4278927..35175be 100644 --- a/emacs/.emacs.d/lisp/my/belf.el +++ b/emacs/.emacs.d/lisp/my/belf.el @@ -397,9 +397,9 @@ Compare without leading \"The \"."    (setf (alist-get 'Title info)          (concat (alist-get 'Title info)                  " -- " -                (buttonize -                 "xdg-open" -                 (lambda (_) (call-process "xdg-open" nil 0 nil file-name))) +                (buttonize "context" +                           (lambda (_) +                             (funcall my-file-context-function file-name)))                  " " (buttonize "find-file" (lambda (_) (find-file file-name))))          (alist-get 'Thumbnail info)          (belf-book-cover file-name) diff --git a/emacs/.emacs.d/lisp/my/infobox.el b/emacs/.emacs.d/lisp/my/infobox.el index 0e5e054..ff4adb6 100644 --- a/emacs/.emacs.d/lisp/my/infobox.el +++ b/emacs/.emacs.d/lisp/my/infobox.el @@ -171,9 +171,4 @@ something like       (lambda (line) (string-match-p "^[0-9]" line))       (split-string (buffer-string) "\n")))) -(defun my-call-process-out (command &rest args) -  (with-temp-buffer -    (apply 'call-process (append (list command nil t nil) args)) -    (buffer-string))) -  (provide 'infobox) diff --git a/emacs/.emacs.d/lisp/my/my-emms.el b/emacs/.emacs.d/lisp/my/my-emms.el index 054d3d9..331f309 100644 --- a/emacs/.emacs.d/lisp/my/my-emms.el +++ b/emacs/.emacs.d/lisp/my/my-emms.el @@ -448,8 +448,8 @@ under /zzz-seren/."             ;; How many tracks have been from the start of the album             ;; (exclusive)             (past (- current-ln start-ln)) -           ;; How many tracks to go (inclusive) -           (remain (- end-ln current-ln)) +           ;; ;; How many tracks to go (inclusive) +           ;; (remain (- end-ln current-ln))             (idx (/ past my-emms-playlist-group-length))             (maybe-group-start (+ start-ln (* idx my-emms-playlist-group-length)))             (group-start @@ -457,10 +457,11 @@ under /zzz-seren/."                  ;; Too close to the end of the album                  (max start-ln (- maybe-group-start my-emms-playlist-group-length))                maybe-group-start)) +           (maybe-group-end (+ group-start my-emms-playlist-group-length))             (group-end -            (if (<= remain my-emms-playlist-tail-group-length) +            (if (<= (- end-ln maybe-group-end) my-emms-playlist-tail-group-length)                  end-ln -              (min end-ln (+ group-start my-emms-playlist-group-length))))) +              (min end-ln maybe-group-end))))        (cons group-start group-end))))  (defun my-emms-playlist-random-group () diff --git a/emacs/.emacs.d/lisp/my/my-libgen.el b/emacs/.emacs.d/lisp/my/my-libgen.el index 9d3a9db..84d9728 100644 --- a/emacs/.emacs.d/lisp/my/my-libgen.el +++ b/emacs/.emacs.d/lisp/my/my-libgen.el @@ -176,19 +176,32 @@  (defun my-libgen-plus-download-action ()    (interactive) -  (let ((info (get-text-property (point) 'button-data))) +  (let* ((info (get-text-property (point) 'button-data)) +         (filename (file-name-concat (expand-file-name my-libgen-download-dir) +                                     (my-libgen-format-filename info))) +         (md5 (alist-get 'md5 info)))      (my-wget-async       (my-libgen-plus-get-download-url info) -     (file-name-concat (expand-file-name my-libgen-download-dir) -                       (my-libgen-format-filename info))))) +     filename +     nil +     (lambda () (my-libgen-check-md5 filename md5))))) + +(defun my-libgen-check-md5 (file md5) +  (let ((actual (substring (my-call-process-out "md5sum" file) 0 32))) +    (unless (equal actual md5) +      (warn "MD5 checksum of %s mismatch: should be %s but actually %s" +            file md5 actual))))  (defun my-libgen-download-library-action ()    (interactive) -  (let ((info (get-text-property (point) 'button-data))) +  (let* ((info (get-text-property (point) 'button-data)) +         (filename (file-name-concat (expand-file-name my-libgen-download-dir) +                                     (my-libgen-format-filename info))) +         (md5 (alist-get 'md5 info)))      (my-wget-async       (my-libgen-make-download-link-library info) -     (format "%s/%s" (expand-file-name my-libgen-download-dir) -             (my-libgen-format-filename info))))) +     nil +     (lambda () (my-libgen-check-md5 filename md5)))))  (defun my-libgen-download-onion-action ()    (interactive) @@ -291,22 +304,23 @@          (title "")          identifier          edition-id) -    (while (and as (string-empty-p title)) -      (setq title (string-trim (dom-texts (car as) "")) -            edition-id (string-remove-prefix -                        "edition.php?id=" -                        (dom-attr (car as) 'href)) -            as (cdr as))) -    (when (string-empty-p title) -      (error "Title is empty: %s" dom))      (when as -      (setq identifier -            (replace-regexp-in-string -             "; " "," -             (string-trim (dom-texts (dom-by-tag (car as) 'i)))))) -    `((title . ,title) -      (edition-id . ,edition-id) -      (identifier . ,identifier)))) +      (while (and as (string-empty-p title)) +        (setq title (string-trim (dom-texts (car as) "")) +              edition-id (string-remove-prefix +                          "edition.php?id=" +                          (dom-attr (car as) 'href)) +              as (cdr as))) +      (when (string-empty-p title) +        (error "Title is empty: %s" dom)) +      (when as +        (setq identifier +              (replace-regexp-in-string +               "; " "," +               (string-trim (dom-texts (dom-by-tag (car as) 'i)))))) +      `((title . ,title) +        (edition-id . ,edition-id) +        (identifier . ,identifier)))))  (defun my-libgen-plus-search-parse-tr (tr)    (let* ((tds (dom-by-tag tr 'td)) @@ -328,7 +342,7 @@           (mirrors-td (elt tds 8))           (mirrors (seq-map (lambda (mirror) (dom-attr mirror 'href))                             (dom-by-tag mirrors-td 'a))) -         (md5 (substring (car mirrors) 4 36)) +         (md5 (when mirrors (substring (car mirrors) 4 36)))           )      `((title . ,title)        (identifier . ,identifier) diff --git a/emacs/.emacs.d/lisp/my/my-utils.el b/emacs/.emacs.d/lisp/my/my-utils.el index 3ecd0a9..0743227 100644 --- a/emacs/.emacs.d/lisp/my/my-utils.el +++ b/emacs/.emacs.d/lisp/my/my-utils.el @@ -304,6 +304,13 @@ Example: (format-time-string ... (my-time-from-epoch 1698582504))"       ,@body       (setq default-directory saved))) + +(defun my-call-process-out (command &rest args) +  "Call `call-process' on COMMAND with ARGS and return the output." +  (with-temp-buffer +    (apply 'call-process (append (list command nil t nil) args)) +    (buffer-string))) +  (defun my-call-process-with-torsocks      (program &optional infile destination display &rest args)    (apply 'call-process diff --git a/emacs/.emacs.d/lisp/my/my-wget.el b/emacs/.emacs.d/lisp/my/my-wget.el index 5349257..e7283aa 100644 --- a/emacs/.emacs.d/lisp/my/my-wget.el +++ b/emacs/.emacs.d/lisp/my/my-wget.el @@ -48,20 +48,31 @@      (kill-new full-path)      (message "Saved webpage to %s (path copied)." full-path))) -(defun my-wget-async (url filename &optional no-tor move-if-video-or-large) +(defun my-wget-async (url filename &optional no-tor on-success on-fail)    (set-process-sentinel     (my-start-process-with-torsocks      no-tor "wget" "*wget*" "wget" url "-c" "-O" filename) -   (lambda (_process _event) -     (when (and move-if-video-or-large -                (or -                 (> (file-attribute-size (file-attributes filename)) -                    my-wget-size-threshold) -                 (member (file-name-extension filename) my-wget-video-extensions))) -       (setq filename -             (my-rename-and-symlink-back -              filename (expand-file-name my-wget-video-archive-directory) nil))) -     (message "Fetched %s and saved to: %s" url filename)))) +   (lambda (proc event) +     (let ((ps (process-status proc)) +           (status (process-exit-status proc))) +       (if (eq status 0) +           (progn +             (message "[DONE] Fetched %s to %s" url filename) +             (when on-success (funcall on-success))) +         (message "[FAIL] Fetching %s to %s: %s" url filename event) +         (when on-fail (funcall on-fail)))) +     ) +   )) + +(defun my-wget-move-if-video-or-large (url filename _process _event) +  (when (or +         (> (file-attribute-size (file-attributes filename)) +            my-wget-size-threshold) +         (member (file-name-extension filename) my-wget-video-extensions)) +    (setq filename +          (my-rename-and-symlink-back +           filename (expand-file-name my-wget-video-archive-directory) nil))) +  (message "Fetched %s and saved to: %s" url filename))  (defun wget-async-urls-with-prefix (urls prefix &optional no-tor move-if-video-or-large)    (let ((i 1)) diff --git a/misc/.bashrc b/misc/.bashrc index 814098d..2d44565 100644 --- a/misc/.bashrc +++ b/misc/.bashrc @@ -275,7 +275,7 @@ fi  # gs-extract 4 11 page-4-thru-11.pdf original.pdf  gs-extract() {    gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=$1 -dLastPage=$2 \ -     -sOutputFile=$3 $4 +     -sOutputFile="$3" "$4"  }  # ghostscript, merge files: gs-merge merged.pdf 1.pdf 2.pdf diff --git a/misc/.config/mpv/mpv.conf b/misc/.config/mpv/mpv.conf index a3f5d24..3b49398 100644 --- a/misc/.config/mpv/mpv.conf +++ b/misc/.config/mpv/mpv.conf @@ -6,6 +6,7 @@ save-position-on-quit  script-opts=ytdl_hook-ytdl_path=/usr/bin/yt-dlp  ytdl-format="bestvideo[height<=?720]+bestaudio/best"  osc=no +stop-screensaver = "yes"  [emacsconf-talks]  # Positioning  | 
