aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--paper2remarkable/providers/neurips.py34
-rw-r--r--tests/test_providers.py2
-rw-r--r--tests/test_ui.py4
3 files changed, 35 insertions, 5 deletions
diff --git a/paper2remarkable/providers/neurips.py b/paper2remarkable/providers/neurips.py
index d76202c..08e996f 100644
--- a/paper2remarkable/providers/neurips.py
+++ b/paper2remarkable/providers/neurips.py
@@ -19,7 +19,13 @@ class NeurIPSInformer(Informer):
meta_date_key = "citation_publication_date"
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.new_site = False
+
def _format_authors(self, soup_authors):
+ if self.new_site:
+ return super()._format_authors(soup_authors, sep=",", idx=0)
return super()._format_authors(soup_authors, sep=" ", idx=-1)
@@ -28,6 +34,11 @@ class NeurIPS(Provider):
re_abs = "^https?://papers.n(eur)?ips.cc/paper/[\d\w\-]+$"
re_pdf = "^https?://papers.n(eur)?ips.cc/paper/[\d\w\-]+.pdf$"
+ re_abs_2 = "https://papers.n(eur)?ips.cc/paper/\d{4}/hash/[0-9a-f]{32}-Abstract.html"
+ re_pdf_2 = (
+ "https://papers.n(eur)?ips.cc/paper/\d{4}/file/[0-9a-f]{32}-Paper.pdf"
+ )
+
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.informer = NeurIPSInformer()
@@ -40,11 +51,30 @@ class NeurIPS(Provider):
elif re.match(self.re_pdf, url):
abs_url = url.replace(".pdf", "")
pdf_url = url
+ elif re.match(self.re_abs_2, url):
+ self.informer.new_site = True
+ abs_url = url
+ pdf_url = (
+ url.replace("hash", "file")
+ .replace("Abstract", "Paper")
+ .replace(".html", ".pdf")
+ )
+ elif re.match(self.re_pdf_2, url):
+ self.informer.new_site = True
+ pdf_url = url
+ abs_url = (
+ url.replace("file", "hash")
+ .replace("Paper", "Abstract")
+ .replace(".pdf", ".html")
+ )
else:
raise URLResolutionError("NeurIPS", url)
return abs_url, pdf_url
def validate(src):
- return re.fullmatch(NeurIPS.re_abs, src) or re.fullmatch(
- NeurIPS.re_pdf, src
+ return (
+ re.fullmatch(NeurIPS.re_abs, src)
+ or re.fullmatch(NeurIPS.re_pdf, src)
+ or re.fullmatch(NeurIPS.re_abs_2, src)
+ or re.fullmatch(NeurIPS.re_pdf_2, src)
)
diff --git a/tests/test_providers.py b/tests/test_providers.py
index 27096ac..9b2f24d 100644
--- a/tests/test_providers.py
+++ b/tests/test_providers.py
@@ -232,7 +232,7 @@ class TestProviders(unittest.TestCase):
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"
+ exp = "Platt_-_Leaning_by_Combining_Memorization_and_Gradient_Descent_1990.pdf"
filename = prov.run(url)
self.assertEqual(exp, os.path.basename(filename))
diff --git a/tests/test_ui.py b/tests/test_ui.py
index e485bfe..d36c5b3 100644
--- a/tests/test_ui.py
+++ b/tests/test_ui.py
@@ -149,12 +149,12 @@ class TestUI(unittest.TestCase):
(
NeurIPS,
"https://papers.nips.cc/paper/325-leaning-by-combining-memorization-and-gradient-descent.pdf",
- "https://papers.nips.cc/paper/325-leaning-by-combining-memorization-and-gradient-descent.pdf",
+ "https://papers.nips.cc/paper/1990/file/89f0fd5c927d466d6ec9a21b9ac34ffa-Paper.pdf",
),
(
NeurIPS,
"https://papers.nips.cc/paper/7796-middle-out-decoding",
- "https://papers.nips.cc/paper/7796-middle-out-decoding",
+ "https://papers.nips.cc/paper/2018/hash/0c215f194276000be6a6df6528067151-Abstract.html",
),
(
NeurIPS,