From 50bb0425eb62f28434246a71f8660e13afaf6db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Schr=C3=B6der?= Date: Thu, 5 Jan 2023 14:11:35 +0100 Subject: [PATCH] Release 0.0.1 --- README.md | 5 +- dist/.DS_Store | Bin 6148 -> 0 bytes dist/pybibget-0.0.1-py3-none-any.whl | Bin 4752 -> 8026 bytes dist/pybibget-0.0.1.tar.gz | Bin 3943 -> 7714 bytes dist/pybibget-0.0.1/.DS_Store | Bin 6148 -> 0 bytes dist/pybibget-0.0.1/LICENSE | 21 -- dist/pybibget-0.0.1/PKG-INFO | 5 - dist/pybibget-0.0.1/README.md | 2 - .../pybibget-0.0.1/pybibget.egg-info/PKG-INFO | 5 - .../pybibget.egg-info/SOURCES.txt | 13 -- .../pybibget.egg-info/dependency_links.txt | 1 - .../pybibget.egg-info/entry_points.txt | 2 - .../pybibget.egg-info/requires.txt | 4 - .../pybibget.egg-info/top_level.txt | 1 - dist/pybibget-0.0.1/pybibget/bibentry.py | 110 ----------- dist/pybibget-0.0.1/pybibget/pybibget.py | 25 --- dist/pybibget-0.0.1/pyproject.toml | 3 - dist/pybibget-0.0.1/setup.cfg | 23 --- dist/pybibget-0.0.1/setup.py | 3 - pybibget.egg-info/PKG-INFO | 181 ++++++++++++++++++ pybibget.egg-info/requires.txt | 8 +- setup.cfg | 23 ++- 22 files changed, 204 insertions(+), 231 deletions(-) delete mode 100644 dist/.DS_Store delete mode 100644 dist/pybibget-0.0.1/.DS_Store delete mode 100644 dist/pybibget-0.0.1/LICENSE delete mode 100644 dist/pybibget-0.0.1/PKG-INFO delete mode 100644 dist/pybibget-0.0.1/README.md delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/PKG-INFO delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/SOURCES.txt delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/dependency_links.txt delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/entry_points.txt delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/requires.txt delete mode 100644 dist/pybibget-0.0.1/pybibget.egg-info/top_level.txt delete mode 100644 dist/pybibget-0.0.1/pybibget/bibentry.py delete mode 100644 dist/pybibget-0.0.1/pybibget/pybibget.py delete mode 100644 dist/pybibget-0.0.1/pyproject.toml delete mode 100644 dist/pybibget-0.0.1/setup.cfg delete mode 100644 dist/pybibget-0.0.1/setup.py diff --git a/README.md b/README.md index 8a99bf3..9572967 100644 --- a/README.md +++ b/README.md @@ -58,10 +58,10 @@ $ pip install pybibget URL = "https://doi.org/10.1109/TIT.2006.885507" } -@article{math/0211159, +@unpublished{math/0211159, author = "Perelman, Grisha", title = "{The} entropy formula for the {Ricci} flow and its geometric applications", - journal = "preprint", + note = "Preprint", year = "2002", eprint = "math/0211159", archiveprefix = "arXiv" @@ -114,7 +114,6 @@ With the option `-f filename` the result can be *appended* to any given file dir % pybibget MR0026286 10.1109/TIT.2006.885507 math/0211159 PMID:271968 10.1109/CVPR.2016.90 hep-th/9711200 -f bibliography.bib Succesfully appended 6 BibTeX entries to bibliography.bib ``` -the result can be *appended* to a given `.bib` file. ### TeX File Parsing diff --git a/dist/.DS_Store b/dist/.DS_Store deleted file mode 100644 index 3a3f18a49f5181c349b44e1e38c61f782b979007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~u}TCn5QhKg6$iq3rDa~g!+V2poQ1V7Ah{C}7FJM;>$dZ;^`Fd$uB+Ht$UiXo zH_1%0`xQG0fV6quuYo0iIo%X5)=bUj%_nvgBc`dXQE`V`JmDM{lj!dUEO&ti98hsj z|Hxl)jTP2cUB9bcUm0gFd20R|_FL}$ao5$p@Az^u5fA|p5CIVo0Vfb;aeg8oA|L`H z@P&Z=A2QvvgbuFl*TKe)?>0X(HRE%;OHgz4OX%Rr8CvpGs;8#7VkA%Jc#gOdI=Ff| zQrns9#Lg*hD5>qv@!Z0ZimO@?5P>m)WA84l{$J96xc`rn)Dr;__*VqdY?oXzMEz>byTvrlo^o*7p{2iKO)@s>{2LBP1kMBpz7yaB%SBx?Ww diff --git a/dist/pybibget-0.0.1-py3-none-any.whl b/dist/pybibget-0.0.1-py3-none-any.whl index 3d7cc7f772301981619aadcecdc9387261b6e754..b853f3307db564be0a3ad7a8a4200c6ccaebd955 100644 GIT binary patch delta 6547 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 delta 3296 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 N1lXoNJqmIN_&4^bk$?aI diff --git a/dist/pybibget-0.0.1.tar.gz b/dist/pybibget-0.0.1.tar.gz index 0838fa42e31f483b1b75ac7fd7577eb993d59017..4409db175792b36f7e9205bdab5da18ce92b6977 100644 GIT binary patch literal 7714 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 literal 3943 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 diff --git a/dist/pybibget-0.0.1/.DS_Store b/dist/pybibget-0.0.1/.DS_Store deleted file mode 100644 index aa337f9d3a7408daea0e04e55720cc07fd8f9835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S)V)mS{ppc|QOWe{hPz7w`kf1R|seBLM}SJARwlha-YROMzyiz47hs z+{#mUvjEEKeRB;g0d#ajeA+TMJ2#)%Nk$Bd-_c`>2fS@w?{~B8;{oG#c)Dr1qNo&*0#ZN$;g3hWiI z??a^maLs8tF`fkOpOW4pBee?$Le{y!vXCk3Ryzfzzq*0<{wUnzU*?B%T2 uR{9-%GUj?Z7jMNxZ^hhLE57)aSM8bSEpZHVI^#|!>W_fwB9j7tp}-dyupYhu diff --git a/dist/pybibget-0.0.1/LICENSE b/dist/pybibget-0.0.1/LICENSE deleted file mode 100644 index 1e376aa..0000000 --- a/dist/pybibget-0.0.1/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 wirhabenzeit - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/dist/pybibget-0.0.1/PKG-INFO b/dist/pybibget-0.0.1/PKG-INFO deleted file mode 100644 index 48b2871..0000000 --- a/dist/pybibget-0.0.1/PKG-INFO +++ /dev/null @@ -1,5 +0,0 @@ -Metadata-Version: 2.1 -Name: pybibget -Version: 0.0.1 -Requires-Python: >=3.6 -License-File: LICENSE diff --git a/dist/pybibget-0.0.1/README.md b/dist/pybibget-0.0.1/README.md deleted file mode 100644 index cfec149..0000000 --- a/dist/pybibget-0.0.1/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# pybibget -Python Module to automatically retrieve BibTeX citations from MathSciNet, arXiv and Pubmed diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/PKG-INFO b/dist/pybibget-0.0.1/pybibget.egg-info/PKG-INFO deleted file mode 100644 index 48b2871..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/PKG-INFO +++ /dev/null @@ -1,5 +0,0 @@ -Metadata-Version: 2.1 -Name: pybibget -Version: 0.0.1 -Requires-Python: >=3.6 -License-File: LICENSE diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/SOURCES.txt b/dist/pybibget-0.0.1/pybibget.egg-info/SOURCES.txt deleted file mode 100644 index 3bb9a86..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/SOURCES.txt +++ /dev/null @@ -1,13 +0,0 @@ -LICENSE -README.md -pyproject.toml -setup.cfg -setup.py -pybibget/bibentry.py -pybibget/pybibget.py -pybibget.egg-info/PKG-INFO -pybibget.egg-info/SOURCES.txt -pybibget.egg-info/dependency_links.txt -pybibget.egg-info/entry_points.txt -pybibget.egg-info/requires.txt -pybibget.egg-info/top_level.txt \ No newline at end of file diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/dependency_links.txt b/dist/pybibget-0.0.1/pybibget.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/entry_points.txt b/dist/pybibget-0.0.1/pybibget.egg-info/entry_points.txt deleted file mode 100644 index 2acd312..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[console_scripts] -pybibget = pybibget.pybibget:pybibget diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/requires.txt b/dist/pybibget-0.0.1/pybibget.egg-info/requires.txt deleted file mode 100644 index 3f4498a..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/requires.txt +++ /dev/null @@ -1,4 +0,0 @@ -requests -pybtex -lxml -pylatexenc diff --git a/dist/pybibget-0.0.1/pybibget.egg-info/top_level.txt b/dist/pybibget-0.0.1/pybibget.egg-info/top_level.txt deleted file mode 100644 index afc7bad..0000000 --- a/dist/pybibget-0.0.1/pybibget.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pybibget diff --git a/dist/pybibget-0.0.1/pybibget/bibentry.py b/dist/pybibget-0.0.1/pybibget/bibentry.py deleted file mode 100644 index 75c8e5e..0000000 --- a/dist/pybibget-0.0.1/pybibget/bibentry.py +++ /dev/null @@ -1,110 +0,0 @@ -from lxml import html, etree -import requests,re -from pybtex.database import Entry, Person, parse_string, parse_bytes -from pylatexenc.latexencode import unicode_to_latex -from pylatexenc.latex2text import LatexNodes2Text -atom_namespace = 'http://www.w3.org/2005/Atom' -arxiv_namespace = 'http://arxiv.org/schemas/atom' -re_mathscinet = r'MR\d{4,10}' -re_pubmed = r'PMID:\d{4,10}' -re_doi = r'10\.\d{4,9}\/[-._;()/:A-Za-z0-9]+' -re_arxiv_old = r'\b[a-zA-Z\-\.]{2,10}\/\d{7}(?:v\d)?\b' -re_arxiv_new = r'\b\d{4}\.\d{4,5}(?:v\d)?\b' - - -def getbibentry(id,verbose=False): - if re.match(re_mathscinet,id): - if verbose: - print(f"Looking for MathSciNet key {id}...",end=" ") - return get_mathscinet_bibentry(id=id,verbose=verbose) - elif re.match(re_pubmed,id): - if verbose: - print(f"Looking for PubMed key {id}...",end=" ") - elif re.match(re_arxiv_old, id) or re.match(re_arxiv_new, id): - if verbose: - print(f"Looking for arXiv key {id}...",end=" ") - return get_arxiv_bibentry(id,verbose=verbose) - elif re.match("",id): - try: - if verbose: - print(f"Looking for {id} on MathSciNet...",end=" ") - return get_mathscinet_bibentry(doi=id,verbose=verbose) - except ValueError: - if verbose: - print(f"Looking for {id} on doi.org...",end=" ") - return get_doi_bibentry(id,verbose=verbose) - else: - raise ValueError(f"Invalid citation key {id}!\n") - -def get_mathscinet_bibentry(id=None,doi=None,verbose=False): - if id: - url = "https://mathscinet.ams.org/mathscinet/search/publications.html?fmt=bibtex&pg1=MR&s1=" + id[2:] - elif doi: - url = "https://mathscinet.ams.org/mathscinet/search/publications.html?fmt=bibtex&pg1=DOI&s1=" + doi - page = requests.get(url) - tree = html.fromstring(page.content) - if bibstrings := tree.xpath('//pre/text()'): - if verbose: - print("Success!") - bibstr=bibstrings[0] - else: - raise ValueError(f"Not found! Please check the citation key and whether you have access to MathSciNet.") - entries = parse_string(bibstr,'bibtex').entries - univ_id= list(entries.keys())[0] - return entries[univ_id] - -def get_doi_bibentry(id,verbose=False): - url = "https://doi.org/" + id - headers = { 'Accept': 'application/x-bibtex; charset=utf-8' } - page = requests.get(url,headers=headers) - entries = parse_bytes(page.content,'bibtex').entries - if len(entries) == 1: - if verbose: - print("Success!") - return sanitize_entry(list(entries.values())[0]) - else: - raise ValueError(f"Not found! Please check the citation key and whether you have access to doi.org.") - -def get_arxiv_bibentry(id,verbose=False): - url = "http://export.arxiv.org/api/query?id_list=" + id - page = requests.get(url) - tree = etree.fromstring(page.content) - if doi := tree.xpath("//a:entry/b:doi",namespaces={ 'a': atom_namespace,'b': arxiv_namespace }): - if verbose: - print("Detected DOI in arXiv record...",end=" ") - bibentry = getbibentry(doi[0].text,verbose=verbose) - elif title := tree.xpath("//a:entry/a:title",namespaces={ 'a': atom_namespace }): - if verbose: - print("Success!") - fields = [("TITLE", title[0].text)] - if journal := tree.xpath("//a:entry/a:journal",namespaces={ 'a': atom_namespace }): - fields += [("JOURNAL",journal[0].text)] - else: - fields += [("JOURNAL","preprint")] - fields += [("YEAR", tree.xpath("//a:entry/a:published",namespaces={ 'a':atom_namespace })[0].text[:4])] - bibentry = Entry("article", fields=fields) - bibentry.persons["AUTHOR"] = [Person(author.text) for author in tree.xpath("//a:entry/a:author/a:name",namespaces={ 'a': atom_namespace })] - bibentry = sanitize_entry(bibentry) - else: - raise ValueError(f"Could not find citation for {id}. Please check the citation key and whether you have access to arXiv.") - bibentry.fields["EPRINT"] = id - bibentry.fields["ARCHIVEPREFIX"] = "arXiv" - return bibentry - - -def sanitize_entry(entry): - entry.fields["TITLE"] = sanitize_string(entry.fields["TITLE"],title=True) - for author in entry.persons["AUTHOR"]: - author.first_names = [sanitize_string(name) for name in author.first_names] - author.last_names = [sanitize_string(name) for name in author.last_names] - if "month" in entry.fields: - entry.fields.pop("month") - return entry - -def sanitize_string(string,title=False): - string = string.replace("\n", "").replace("\t", "") - string = LatexNodes2Text().latex_to_text(string) - string=unicode_to_latex(string) - if title: - string = re.sub(r'\b([A-Z].*?)\b',r'{\1}',string) - return string \ No newline at end of file diff --git a/dist/pybibget-0.0.1/pybibget/pybibget.py b/dist/pybibget-0.0.1/pybibget/pybibget.py deleted file mode 100644 index 97f2f17..0000000 --- a/dist/pybibget-0.0.1/pybibget/pybibget.py +++ /dev/null @@ -1,25 +0,0 @@ -import argparse, re -import bibentry -import pybtex.database - -def pybibget(): - parser = argparse.ArgumentParser(prog ='pybibget',description ='Command line utility to automatically retrieve BibTeX citations from MathSciNet, arXiv and PubMed') - - parser.add_argument('keys', type = str, metavar ='citekeys', nargs='*',help ='MathSciNet (MRxxxxx), arXiv (2301.xxxxx) or PubMed (PMID:xxxxxxxx) citation keys (separated by spaces)') - parser.add_argument('-v','--verbose',action='store_true',help='verbose output' ) - - args = parser.parse_args() - - if not args.keys: - parser.print_help() - exit(1) - bib_data = pybtex.database.BibliographyData() - for key in args.keys: - try: - bib_data.entries[key] = bibentry.getbibentry(key,verbose=args.verbose) - except ValueError as e: - print(e) - print(bib_data.to_string('bibtex')) - -if __name__ == '__main__': - pybibget() \ No newline at end of file diff --git a/dist/pybibget-0.0.1/pyproject.toml b/dist/pybibget-0.0.1/pyproject.toml deleted file mode 100644 index 5f8f5e3..0000000 --- a/dist/pybibget-0.0.1/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -build-backend = "setuptools.build_meta" -requires = ["setuptools", "wheel"] \ No newline at end of file diff --git a/dist/pybibget-0.0.1/setup.cfg b/dist/pybibget-0.0.1/setup.cfg deleted file mode 100644 index 065c1d8..0000000 --- a/dist/pybibget-0.0.1/setup.cfg +++ /dev/null @@ -1,23 +0,0 @@ -[metadata] -name = pybibget -version = 0.0.1 - -[options] -include_package_data = True -packages = - pybibget -install_requires = - requests - pybtex - lxml - pylatexenc -python_requires = >=3.6 - -[options.entry_points] -console_scripts = - pybibget = pybibget.pybibget:pybibget - -[egg_info] -tag_build = -tag_date = 0 - diff --git a/dist/pybibget-0.0.1/setup.py b/dist/pybibget-0.0.1/setup.py deleted file mode 100644 index 6a9e5ae..0000000 --- a/dist/pybibget-0.0.1/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup() \ No newline at end of file diff --git a/pybibget.egg-info/PKG-INFO b/pybibget.egg-info/PKG-INFO index 48b2871..cea80f8 100644 --- a/pybibget.egg-info/PKG-INFO +++ b/pybibget.egg-info/PKG-INFO @@ -1,5 +1,186 @@ Metadata-Version: 2.1 Name: pybibget Version: 0.0.1 +Summary: Command line utility to automatically retrieve BibTeX citations from MathSciNet, arXiv, PubMed and doi.org +Home-page: https://github.com/wirhabenzeit/pybibget +Author: Dominik Schröder +Author-email: dschroeder@ethz.ch +License: MIT License +Keywords: BibTeX,MathSciNet,PubMed,DOI,arXiv,bibliography,command-line,citation +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent Requires-Python: >=3.6 +Description-Content-Type: text/markdown License-File: LICENSE + +# pybibget + +Command line utility to automatically retrieve BibTeX citations from MathSciNet, arXiv, PubMed and doi.org + +## Installation + +```bash +$ pip install pybibget +``` + +## Usage + +### Citation Keys + +`pybibget` provides a command line interface to obtain BibTeX entries from citation keys of the form +| Citation key | Format | +|----------------------|-------------------------------| +| MR0026286 | MathSciNet (requires subscription) | +| 1512.03385 | arXiv identifier (new format) | +| hep-th/9711200 | arXiv identifier (old format) | +| PMID:271968 | PubMed | +| 10.1109/CVPR.2016.90 | DOI | + +`pybibget key1 key2 ...` prints the BibTeX entries `stdout`: +```console +% pybibget MR0026286 10.1109/TIT.2006.885507 math/0211159 PMID:271968 10.1109/CVPR.2016.90 hep-th/9711200 + +@article{MR0026286, + AUTHOR = "Shannon, C. E.", + TITLE = "A mathematical theory of communication", + JOURNAL = "Bell System Tech. J.", + FJOURNAL = "The Bell System Technical Journal", + VOLUME = "27", + YEAR = "1948", + PAGES = "379--423, 623--656", + ISSN = "0005-8580", + MRCLASS = "60.0X", + MRNUMBER = "26286", + MRREVIEWER = "J. L. Doob", + DOI = "10.1002/j.1538-7305.1948.tb01338.x", + URL = "https://doi.org/10.1002/j.1538-7305.1948.tb01338.x" +} + +@article{10.1109/TIT.2006.885507, + AUTHOR = "Candes, Emmanuel J. and Tao, Terence", + TITLE = "Near-optimal signal recovery from random projections: universal encoding strategies?", + JOURNAL = "IEEE Trans. Inform. Theory", + FJOURNAL = "Institute of Electrical and Electronics Engineers. Transactions on Information Theory", + VOLUME = "52", + YEAR = "2006", + NUMBER = "12", + PAGES = "5406--5425", + ISSN = "0018-9448", + MRCLASS = "94A12 (41A25 94A13)", + MRNUMBER = "2300700", + MRREVIEWER = "L. L. Campbell", + DOI = "10.1109/TIT.2006.885507", + URL = "https://doi.org/10.1109/TIT.2006.885507" +} + +@unpublished{math/0211159, + author = "Perelman, Grisha", + title = "{The} entropy formula for the {Ricci} flow and its geometric applications", + note = "Preprint", + year = "2002", + eprint = "math/0211159", + archiveprefix = "arXiv" +} + +@article{PMID:271968, + author = "Sanger, F. and Nicklen, S. and Coulson, A. R.", + doi = "10.1073/pnas.74.12.5463", + url = "https://doi.org/10.1073/pnas.74.12.5463", + year = "1977", + publisher = "Proceedings of the National Academy of Sciences", + volume = "74", + number = "12", + pages = "5463--5467", + title = "{DNA} sequencing with chain-terminating inhibitors", + journal = "Proceedings of the National Academy of Sciences", + PMID = "271968" +} + +@inproceedings{10.1109/CVPR.2016.90, + author = "He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian", + doi = "10.1109/cvpr.2016.90", + url = "https://doi.org/10.1109/cvpr.2016.90", + year = "2016", + publisher = "{IEEE}", + title = "{Deep} {Residual} {Learning} for {Image} {Recognition}", + booktitle = "2016 {IEEE} Conference on Computer Vision and Pattern Recognition ({CVPR})" +} + +@article{hep-th/9711200, + AUTHOR = "Phan, Trung V. and Doan, Anh", + TITLE = "A curious use of extra dimension in classical mechanics: geometrization of potential", + JOURNAL = "J. Geom. Graph.", + FJOURNAL = "Journal for Geometry and Graphics", + VOLUME = "25", + YEAR = "2021", + NUMBER = "2", + PAGES = "265--270", + ISSN = "1433-8157", + MRCLASS = "70B05", + MRNUMBER = "4394144", + DOI = "10.1023/a:1026654312961", + URL = "https://doi.org/10.1023/a:1026654312961", + eprint = "hep-th/9711200", + archiveprefix = "arXiv" +} +``` +With the option `-f filename` the result can be *appended* to any given file directly: +```console +% pybibget MR0026286 10.1109/TIT.2006.885507 math/0211159 PMID:271968 10.1109/CVPR.2016.90 hep-th/9711200 -f bibliography.bib +Succesfully appended 6 BibTeX entries to bibliography.bib +``` + +### TeX File Parsing + +`pybibparse` automatically parses missing citations from the `biber` or `bibtex` log for a given `TeX` file +```console +% pybibparse example + +@article{math/0211159, + author = "Perelman, Grisha", + title = "{The} entropy formula for the {Ricci} flow and its geometric applications", + journal = "preprint", + year = "2002", + eprint = "math/0211159", + archiveprefix = "arXiv" +} + +@article{PMID:271968, + author = "Sanger, F. and Nicklen, S. and Coulson, A. R.", + doi = "10.1073/pnas.74.12.5463", + url = "https://doi.org/10.1073/pnas.74.12.5463", + year = "1977", + publisher = "Proceedings of the National Academy of Sciences", + volume = "74", + number = "12", + pages = "5463--5467", + title = "{DNA} sequencing with chain-terminating inhibitors", + journal = "Proceedings of the National Academy of Sciences", + PMID = "271968" +} +``` + +With the option `-w [file_name]` the obtained citations are automatically appended to the `.bib` file. `[file_name]` is optional if the `.bib` file has been specified in the `TeX` file. +```console +% pybibparse example -w +Succesfully appended 2 BibTeX entries to bibliography.bib +``` + +## Data Sources + +### MathSciNet +Directly accesses [MathSciNet](https://mathscinet.ams.org/mathscinet/index.html) and uses the provided citation unmodified + +### DOI +First searches for the DOI on [MathSciNet](https://mathscinet.ams.org/mathscinet/index.html). If successful, uses the MathSciNet strategy, otherwise uses the citation from [doi.org](https://doi.org) with the following modifications: +- Author names and title are converted to TeX form (special characters like `ö` are converted to `"{o}`) +- Capital words in the title are surrounded by `{...}`to ensure capitalization +- Publication month data is removed + +### PubMed +Searches for the DOI on [PubMed](https://pubmed.ncbi.nlm.nih.gov), then uses the DOI strategy and appends `pmid = [PMID]` to the resulting citation. + +### arXiv +Uses DOI strategy if metadata contains `doi`. +Otherwise creates an `unpublished` bib-entry with `note = "Preprint"` or `note = [Journal Metadata]` (if provided). In any-case appends `eprint = [arXiv identifier]` to the citation. diff --git a/pybibget.egg-info/requires.txt b/pybibget.egg-info/requires.txt index 3f4498a..1a18274 100644 --- a/pybibget.egg-info/requires.txt +++ b/pybibget.egg-info/requires.txt @@ -1,4 +1,4 @@ -requests -pybtex -lxml -pylatexenc +requests>=2.28.1 +pybtex>=0.24.0 +lxml>=4.9.2 +pylatexenc>=1.3 diff --git a/setup.cfg b/setup.cfg index 1469d43..da2e38b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,20 +1,31 @@ [metadata] name = pybibget version = 0.0.1 +author = Dominik Schröder +author_email = dschroeder@ethz.ch +url = https://github.com/wirhabenzeit/pybibget +description = Command line utility to automatically retrieve BibTeX citations from MathSciNet, arXiv, PubMed and doi.org +long_description = file: README.md +long_description_content_type = text/markdown +keywords = BibTeX, MathSciNet, PubMed, DOI, arXiv, bibliography, command-line, citation +license = MIT License +classifiers = + Programming Language :: Python :: 3 + License :: OSI Approved :: MIT License + Operating System :: OS Independent [options] packages = find: zip_safe = True include_package_data = True install_requires = - requests - pybtex - lxml - pylatexenc + requests >= 2.28.1 + pybtex >= 0.24.0 + lxml >= 4.9.2 + pylatexenc >= 1.3 python_requires = >=3.6 - [options.entry_points] console_scripts = pybibget = pybibget:pybibget - pybibparse = pybibget:pybibparse \ No newline at end of file + pybibparse = pybibget:pybibparse