Function for automatic find of arxiv id
This commit is contained in:
parent
5ad2afcf3e
commit
980e678883
@ -114,6 +114,7 @@ A list of ideas and TODO. Don't hesitate to give feedback on the ones you really
|
|||||||
50. Webserver interface
|
50. Webserver interface
|
||||||
60. Categories
|
60. Categories
|
||||||
70. Edit an entry instead of deleting it and adding it again
|
70. Edit an entry instead of deleting it and adding it again
|
||||||
|
80. Automatic download of new arXiv version
|
||||||
|
|
||||||
## Issues ?
|
## Issues ?
|
||||||
|
|
||||||
|
55
fetcher.py
55
fetcher.py
@ -79,7 +79,7 @@ def findISBN(src):
|
|||||||
|
|
||||||
|
|
||||||
def isbn2Bib(isbn):
|
def isbn2Bib(isbn):
|
||||||
"""Try to get bibtex entry from an ISBN number"""
|
"""Tries to get bibtex entry from an ISBN number"""
|
||||||
try:
|
try:
|
||||||
# Default merges results from worldcat.org and google books
|
# Default merges results from worldcat.org and google books
|
||||||
return isbntools.dev.fmt.fmtbib('bibtex',
|
return isbntools.dev.fmt.fmtbib('bibtex',
|
||||||
@ -158,7 +158,7 @@ def findDOI(src):
|
|||||||
|
|
||||||
|
|
||||||
def doi2Bib(doi):
|
def doi2Bib(doi):
|
||||||
"""Return a bibTeX string of metadata for a given DOI.
|
"""Returns a bibTeX string of metadata for a given DOI.
|
||||||
|
|
||||||
From : https://gist.github.com/jrsmith3/5513926
|
From : https://gist.github.com/jrsmith3/5513926
|
||||||
"""
|
"""
|
||||||
@ -175,3 +175,54 @@ def doi2Bib(doi):
|
|||||||
tools.warning('Unable to contact remote server to get the bibtex ' +
|
tools.warning('Unable to contact remote server to get the bibtex ' +
|
||||||
'entry for doi '+doi)
|
'entry for doi '+doi)
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
arXiv_re = re.compile(r'arXiv:\s*([\w\.\/\-]+)')
|
||||||
|
arXiv_wo_v_re = re.compile(r'v\d+\Z')
|
||||||
|
|
||||||
|
|
||||||
|
def findArXivId(src):
|
||||||
|
"""Search for a valid arXiv id in src.
|
||||||
|
|
||||||
|
Returns the arXiv id or False if not found or an error occurred.
|
||||||
|
From : https://github.com/minad/bibsync/blob/3fdf121016f6187a2fffc66a73cd33b45a20e55d/lib/bibsync/utils.rb
|
||||||
|
"""
|
||||||
|
if src.endswith(".pdf"):
|
||||||
|
totext = subprocess.Popen(["pdftotext", src, "-"],
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE)
|
||||||
|
elif src.endswith(".djvu"):
|
||||||
|
totext = subprocess.Popen(["djvutxt", src],
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE)
|
||||||
|
|
||||||
|
while totext.poll() is None:
|
||||||
|
extractfull = totext.stdin.readline()
|
||||||
|
extractID = arXiv_re.search(extractfull)
|
||||||
|
if extractID:
|
||||||
|
totext.terminate()
|
||||||
|
break
|
||||||
|
|
||||||
|
err = totext.communicate()[1]
|
||||||
|
if totext.returncode > 0:
|
||||||
|
# Error happened
|
||||||
|
tools.warning(err)
|
||||||
|
return False
|
||||||
|
|
||||||
|
cleanID = False
|
||||||
|
if extractID:
|
||||||
|
cleanID = arXiv_wo_v_re.sub('', extractID.group(1))
|
||||||
|
return cleanID
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def arXiv2Bib(arxiv):
|
||||||
|
"""Returns bibTeX string of metadata for a given arXiv id
|
||||||
|
|
||||||
|
arxiv is an arxiv id
|
||||||
|
From : https://github.com/minad/bibsync/blob/master/lib/bibsync/actions/synchronize_metadata.rb
|
||||||
|
"""
|
||||||
|
arxiv = "oai:arXiv.org:"+arxiv
|
||||||
|
bibtex = ''
|
||||||
|
|
||||||
|
return bibtex
|
||||||
|
Loading…
Reference in New Issue
Block a user