diff options
| -rw-r--r-- | paper2remarkable/providers/__init__.py | 21 | ||||
| -rw-r--r-- | paper2remarkable/providers/neurips.py | 50 | ||||
| -rw-r--r-- | tests/test_providers.py | 15 |
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() |
