aboutsummaryrefslogtreecommitdiff
path: root/paper2remarkable/providers/nature.py
diff options
context:
space:
mode:
Diffstat (limited to 'paper2remarkable/providers/nature.py')
-rw-r--r--paper2remarkable/providers/nature.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/paper2remarkable/providers/nature.py b/paper2remarkable/providers/nature.py
new file mode 100644
index 0000000..108f209
--- /dev/null
+++ b/paper2remarkable/providers/nature.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+
+"""Provider for Nature
+
+Author: G.J.J. van den Burg
+License: See LICENSE file
+Copyright: 2020, G.J.J. van den Burg
+
+"""
+
+import re
+
+from ._base import Provider
+from ._info import Informer
+from ..exceptions import URLResolutionError
+
+
+class NatureInformer(Informer):
+
+ meta_date_key = "citation_online_date"
+
+ def _format_authors(self, soup_authors):
+ return super()._format_authors(soup_authors, sep=" ", idx=-1)
+
+
+class Nature(Provider):
+
+ re_abs = "^https://www.nature.com/articles/s[a-z0-9\-]+$"
+ re_pdf = "^https://www.nature.com/articles/s[a-z0-9\-]+\.pdf$"
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.informer = NatureInformer()
+
+ def get_abs_pdf_urls(self, url):
+ if re.match(self.re_abs, url):
+ abs_url = url
+ pdf_url = url + ".pdf"
+ elif re.match(self.re_pdf, url):
+ pdf_url = url
+ abs_url = url.replace(".pdf", "")
+ else:
+ raise URLResolutionError("Nature", url)
+ return abs_url, pdf_url
+
+ def validate(src):
+ return re.match(Nature.re_abs, src) or re.match(Nature.re_pdf, src)