diff options
| author | Yuchen Pei <id@ypei.org> | 2024-04-02 15:46:04 +1100 | 
|---|---|---|
| committer | Yuchen Pei <id@ypei.org> | 2024-04-02 15:46:04 +1100 | 
| commit | 60d73d1ec7347f9b409965c2721d2e75adfb9889 (patch) | |
| tree | a9b2eded304e4e49c1ce08c2baf9ae7041e118af /emacs/.emacs.d/lisp/my | |
| parent | 6782e70a83773b84b5dedc534f99e467f0118d20 (diff) | |
[emacs] add renaming to dired
rename files by mtime
also a new command to use ytdl without tor
Diffstat (limited to 'emacs/.emacs.d/lisp/my')
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-dired.el | 38 | ||||
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-ytdl.el | 14 | 
2 files changed, 48 insertions, 4 deletions
| diff --git a/emacs/.emacs.d/lisp/my/my-dired.el b/emacs/.emacs.d/lisp/my/my-dired.el index c90b8c4..ee6f7b0 100644 --- a/emacs/.emacs.d/lisp/my/my-dired.el +++ b/emacs/.emacs.d/lisp/my/my-dired.el @@ -151,5 +151,43 @@ With a prefix-arg, call it without using `vc-rename-file'."        (advice-add 'dired-next-line :after #'my-dired-display-file)      (advice-remove 'dired-next-line #'my-dired-display-file))) +(defun my-dired-rename-by-mtime-at-point () +  "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss.ext" +  (interactive) +  (my-dired-rename-by-mtime (expand-file-name (dired-file-name-at-point)))) + +(defun my-dired-rename-by-mtime (file-name) +  "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss[_N].ext" +  (let* ((ext (file-name-extension file-name)) +         (dir (file-name-directory file-name)) +         (new-file-name-base +          (file-name-concat +           dir +           (concat +            (format-time-string +             "%Y%m%d_%H%M%S" +             (file-attribute-modification-time (file-attributes file-name)))))) +         (new-file-name +          (format "%s.%s" new-file-name-base ext)) +         (counter 0)) +    (unless (equal file-name new-file-name) +      (while (file-exists-p new-file-name) +        (setq counter (1+ counter) +              new-file-name (format "%s_%d" new-file-name-base counter))) +      (dired-rename-file file-name new-file-name nil)))) + +(defun my-dired-do-rename-by-mtime () +  "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss.ext" +  (interactive) +  (seq-do +   'my-dired-rename-by-mtime +   (dired-map-over-marks (dired-get-filename) nil))) +  (provide 'my-dired)  ;;; my-dired.el ends here diff --git a/emacs/.emacs.d/lisp/my/my-ytdl.el b/emacs/.emacs.d/lisp/my/my-ytdl.el index e902722..721b299 100644 --- a/emacs/.emacs.d/lisp/my/my-ytdl.el +++ b/emacs/.emacs.d/lisp/my/my-ytdl.el @@ -65,13 +65,13 @@  (defvar my-ytdl-audio-download-dir "~/Downloads"    "Directory for ytdl to download audios to.") -(defun my-ytdl-internal (urls type &optional cut-segments) +(defun my-ytdl-internal (urls type &optional no-tor)    (my-with-default-directory (if (eq type 'video) -                              my-ytdl-video-download-dir -                            my-ytdl-audio-download-dir) +                                 my-ytdl-video-download-dir +                               my-ytdl-audio-download-dir)      (apply 'my-start-process-with-torsocks             (append -            (list nil (format "ytdl-%s" urls) (format "*ytdl-%s*" urls) +            (list no-tor (format "ytdl-%s" urls) (format "*ytdl-%s*" urls)                    my-ytdl-program)              (if (eq type 'video) my-ytdl-video-args my-ytdl-audio-args)              (split-string urls))))) @@ -87,5 +87,11 @@    (interactive "sURL(s): ")    (my-ytdl-internal urls 'audio)) +;;; fixme: autoload +(defun my-ytdl-video-no-tor (urls) +  "Download videos with ytdl." +  (interactive "sURL(s): ") +  (my-ytdl-internal urls 'video t)) +  (provide 'my-ytdl)  ;;; my-ytdl.el ends here | 
