aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--paper2remarkable/providers/__init__.py21
-rw-r--r--paper2remarkable/providers/neurips.py50
-rw-r--r--tests/test_providers.py15
3 files changed, 81 insertions, 5 deletions
diff --git a/paper2remarkable/providers/__init__.py b/paper2remarkable/providers/__init__.py
index fcb2d22..45148fd 100644
--- a/paper2remarkable/providers/__init__.py
+++ b/paper2remarkable/providers/__init__.py
@@ -1,13 +1,24 @@
# -*- coding: utf-8 -*-
-from .arxiv import Arxiv
-from .pubmed import PubMed
from .acm import ACM
-from .openreview import OpenReview
-from .springer import Springer
+from .arxiv import Arxiv
from .local import LocalFile
+from .neurips import NeurIPS
+from .openreview import OpenReview
from .pdf_url import PdfUrl
from .pmlr import PMLR
+from .pubmed import PubMed
+from .springer import Springer
# NOTE: Order matters here, PdfUrl should be last
-providers = [Arxiv, PubMed, ACM, OpenReview, Springer, PMLR, LocalFile, PdfUrl]
+providers = [
+ ACM,
+ Arxiv,
+ NeurIPS,
+ OpenReview,
+ PMLR,
+ PubMed,
+ Springer,
+ LocalFile,
+ PdfUrl,
+]
diff --git a/paper2remarkable/providers/neurips.py b/paper2remarkable/providers/neurips.py
new file mode 100644
index 0000000..9dce4a5
--- /dev/null
+++ b/paper2remarkable/providers/neurips.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+"""Provider for NeurIPS
+
+Author: G.J.J. van den Burg
+License: See LICENSE file
+Copyright: 2019, G.J.J. van den Burg
+
+"""
+
+import re
+
+from ._base import Provider
+from ._info import Informer
+from ..utils import exception
+
+
+class NeurIPSInformer(Informer):
+
+ meta_date_key = "citation_publication_date"
+
+ def _format_authors(self, soup_authors):
+ return super()._format_authors(soup_authors, sep=" ", idx=-1)
+
+
+class NeurIPS(Provider):
+
+ re_abs = "^https?://papers.nips.cc/paper/[\d\w\-]+$"
+ re_pdf = "^https?://papers.nips.cc/paper/[\d\w\-]+.pdf$"
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.informer = NeurIPSInformer()
+
+ def get_abs_pdf_urls(self, url):
+ """ Get the pdf and abstract url from a OpenReview url """
+ if re.match(self.re_abs, url):
+ abs_url = url
+ pdf_url = url + ".pdf"
+ elif re.match(self.re_pdf, url):
+ abs_url = url.replace(".pdf", "")
+ pdf_url = url
+ else:
+ exception("Couldn't figure out NeurIPS urls.")
+ return abs_url, pdf_url
+
+ def validate(src):
+ return re.fullmatch(NeurIPS.re_abs, src) or re.fullmatch(
+ NeurIPS.re_pdf, src
+ )
diff --git a/tests/test_providers.py b/tests/test_providers.py
index ba5e598..e0c98a2 100644
--- a/tests/test_providers.py
+++ b/tests/test_providers.py
@@ -16,6 +16,7 @@ from paper2remarkable.providers import (
ACM,
Arxiv,
LocalFile,
+ NeurIPS,
OpenReview,
PMLR,
PdfUrl,
@@ -151,6 +152,20 @@ class TestProviders(unittest.TestCase):
filename = prov.run(url)
self.assertEqual(exp, os.path.basename(filename))
+ def test_neurips_1(self):
+ prov = NeurIPS(upload=False, verbose=VERBOSE)
+ url = "https://papers.nips.cc/paper/325-leaning-by-combining-memorization-and-gradient-descent.pdf"
+ exp = "Platt_-_Leaning_by_Combining_Memorization_and_Gradient_Descent_1991.pdf"
+ filename = prov.run(url)
+ self.assertEqual(exp, os.path.basename(filename))
+
+ def test_neurips_2(self):
+ prov = NeurIPS(upload=False, verbose=VERBOSE)
+ url = "https://papers.nips.cc/paper/7796-middle-out-decoding"
+ exp = "Mehri_Sigal_-_Middle-Out_Decoding_2018.pdf"
+ filename = prov.run(url)
+ self.assertEqual(exp, os.path.basename(filename))
+
if __name__ == "__main__":
unittest.main()