add back my makefile
[org-ref.git] / arxiv.el
index 66ceafe..4ca96af 100644 (file)
--- a/arxiv.el
+++ b/arxiv.el
@@ -79,7 +79,7 @@
 (defun arxiv-add-bibtex-entry (arxiv-number bibfile)
   "Add bibtex entry for ARXIV-NUMBER to BIBFILE."
  (interactive
-   (list (read-input "arxiv: ")
+   (list (read-string "arxiv: ")
         ;;  now get the bibfile to add it to
         (ido-completing-read
          "Bibfile: "
    (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)
+      ;; 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))
+       (message "%s saved" pdf)))
+
+    (org-open-file pdf)))
+
 (provide 'arxiv)
 ;;; arxiv.el ends here