]> git.donarmstrong.com Git - org-ref.git/blobdiff - arxiv.el
ignore some files
[org-ref.git] / arxiv.el
index f83e768bdd65796679392c8153bc6c6d125c51cf..783719535f48a44cc58da1b8a0a6735b6a4f268b 100644 (file)
--- a/arxiv.el
+++ b/arxiv.el
 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
-
+;; this library creates a new org-link for Arxiv (http://arxiv.org/) entries,
+;; and provides functions to retrieve bibtex entries from an Arxiv number.
 ;;
+;; An Arxiv number might look like: cond-mat/0410285 or 1503.01742
 
 ;;; Code:
-
+;; * The org-mode link
+;; this just makes a clickable link that opens the entry.
 (org-add-link-type
  "arxiv"
  ;; clicking
    (save-buffer)))
 
 
+(defun arxiv-get-pdf (arxiv-number pdf)
+  "Retrieve a pdf for ARXIV-NUMBER and save it to PDF."
+  (interactive "sarxiv: \nsPDF: ")
+  (let ((pdf-url (with-current-buffer
+                    (url-retrieve-synchronously
+                     (concat
+                      "http://arxiv.org/abs/" arxiv-number))
+                  ;; <meta name="citation_pdf_url" content="http://arxiv.org/pdf/0801.1144" />
+                  (search-forward-regexp
+                   "name=\\\"citation_pdf_url\\\" content=\\\"\\(.*\\)\\\"")
+                  (match-string 1))))
+    (url-copy-file pdf-url pdf)
+    ;; now check if we got a pdf
+    (with-temp-buffer
+      (insert-file-contents pdf-file)
+      ;; PDFS start with %PDF-1.x as the first few characters.
+      (if (not (string= (buffer-substring 1 6) "%PDF-"))
+         (progn
+           (message "%s" (buffer-string))
+           (delete-file pdf-file))
+       (message "%s saved" pdf-file)))
+
+    (org-open-file pdf)))
+
 (provide 'arxiv)
 ;;; arxiv.el ends here