aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchen Pei <id@ypei.org>2024-04-02 15:46:04 +1100
committerYuchen Pei <id@ypei.org>2024-04-02 15:46:04 +1100
commit60d73d1ec7347f9b409965c2721d2e75adfb9889 (patch)
treea9b2eded304e4e49c1ce08c2baf9ae7041e118af
parent6782e70a83773b84b5dedc534f99e467f0118d20 (diff)
[emacs] add renaming to dired
rename files by mtime also a new command to use ytdl without tor
-rw-r--r--emacs/.emacs.d/lisp/my/my-dired.el38
-rw-r--r--emacs/.emacs.d/lisp/my/my-ytdl.el14
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