diff options
-rw-r--r-- | exitter.el | 41 |
1 files changed, 25 insertions, 16 deletions
@@ -507,6 +507,7 @@ ONEPLUS A3010 Build/PKQ1.181203.001)") ((id_str . ,.id_str) (created_at . ,.created_at) (full_text . ,.full_text) + (urls . ,(vconcat .entities.urls .entities.media)) (reply_count . ,.reply_count) (retweet_count . ,.retweet_count) (quote_count . ,.quote_count) @@ -550,7 +551,7 @@ Including ancestors and descendants, if any." "\n"))) (defun exitter-save-posts (filtered-details id) - ;; (pp filtered-details) + (pp filtered-details) (exitter-save-text-and-switch-to-buffer (exitter-format-posts filtered-details) (format "~/Downloads/%s.org" id))) @@ -563,7 +564,7 @@ Including ancestors and descendants, if any." .author.name .author.screen_name (exitter--relative-time-description .created_at) - (exitter-replace-t-co-links .full_text) + (exitter-replace-t-co-links .full_text .urls) (if .quoted (format "\n\n----\n%s----" (replace-regexp-in-string @@ -699,30 +700,38 @@ TIME-STAMP is assumed to be in the past." (base64-encode-string (alist-get 'bs (bindat-unpack '((bs str 32)) (vconcat xs))))))) -(defun exitter-replace-t-co-links (text) +(defun exitter-replace-t-co-links (text urls) (with-temp-buffer (insert text) (goto-char (point-min)) (while (re-search-forward "https://t.co" nil t) (pcase-let* ((`(,beg . ,end) (bounds-of-thing-at-point 'url)) (new-url (exitter-get-redirect-url - (buffer-substring-no-properties beg end)))) + (buffer-substring-no-properties beg end) + urls))) (delete-region beg end) (insert new-url))) (buffer-string))) -(defun exitter-get-redirect-url (url) - "Get redirect link of URL. - -Sends a HEAD request." - (let* ((url-request-method "HEAD") - (url-max-redirections 0) - (buffer (url-retrieve-synchronously url)) - (inhibit-message t)) - (with-current-buffer buffer - (goto-char (point-min)) - (when (re-search-forward "^Location: \\(.*\\)$" nil t) - (match-string 1))))) +(defun exitter-get-redirect-url (url urls) + (let-alist (seq-find + (lambda (info) (equal url (alist-get 'url info))) + urls) + (or .media_url_https .expanded_url url))) + +;;; Probably not needed... +;; (defun exitter-get-redirect-url (url) +;; "Get redirect link of URL. + +;; Sends a HEAD request." +;; (let* ((url-request-method "HEAD") +;; (url-max-redirections 0) +;; (buffer (url-retrieve-synchronously url)) +;; (inhibit-message t)) +;; (with-current-buffer buffer +;; (goto-char (point-min)) +;; (when (re-search-forward "^Location: \\(.*\\)$" nil t) +;; (match-string 1))))) (require 'sha1) |