From b231b578ccb8124a61bcd4020f4c5c1f4e6181e0 Mon Sep 17 00:00:00 2001 From: Phyks Date: Sun, 29 Jun 2014 23:02:44 +0200 Subject: [PATCH] Updated test files According to https://github.com/Phyks/BMC/issues/7. Also updated fetcher file to fix two bugs : * Whitespaces in ISBN * If PDF to text (or djvu to text) is not long enough, the end of the file was not processed. --- fetcher.py | 10 +++++----- tests/src/isbn.bib | 7 +++++++ tests/src/test_book.djvu | Bin 0 -> 6336 bytes tests/src/test_book.pdf | Bin 0 -> 18059 bytes tests/test_fetcher.py | 7 ++++--- 5 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 tests/src/isbn.bib create mode 100644 tests/src/test_book.djvu create mode 100644 tests/src/test_book.pdf diff --git a/fetcher.py b/fetcher.py index 18fa442..67b9704 100644 --- a/fetcher.py +++ b/fetcher.py @@ -67,7 +67,7 @@ def download(url): return False -isbn_re = re.compile(r'isbn ((?:[0-9]{3}[ -]?)?[0-9]{1,5}[ -]?[0-9]{1,7}[ -]?[0-9]{1,6}[- ]?[0-9])', +isbn_re = re.compile(r'isbn[\s]?:?[\s]?((?:[0-9]{3}[ -]?)?[0-9]{1,5}[ -]?[0-9]{1,7}[ -]?[0-9]{1,6}[- ]?[0-9])', re.IGNORECASE) @@ -89,7 +89,7 @@ def findISBN(src): return False while totext.poll() is None: - extractfull = totext.stdout.readline() + extractfull = ' '.join([i.strip() for i in totext.stdout.readlines()]) extractISBN = isbn_re.search(extractfull.lower().replace('Œ', '-')) if extractISBN: @@ -146,7 +146,7 @@ def findDOI(src): extractfull = '' while totext.poll() is None: - extractfull += "".join([i.strip() for i in totext.stdout.readlines()]) + extractfull += ' '.join([i.strip() for i in totext.stdout.readlines()]) extractDOI = doi_re.search(extractfull.lower().replace('Œ', '-')) if not extractDOI: # PNAS fix @@ -232,7 +232,7 @@ def findArXivId(src): extractfull = '' while totext.poll() is None: - extractfull += totext.stdout.readline().strip() + extractfull += ' '.join([i.strip() for i in totext.stdout.readlines()]) extractID = arXiv_re.search(extractfull) if extractID: totext.terminate() @@ -291,7 +291,7 @@ def findHALId(src): return False while totext.poll() is None: - extractfull = totext.stdout.readline() + extractfull = ' '.join([i.strip() for i in totext.stdout.readlines()]) extractID = HAL_re.search(extractfull) if extractID: totext.terminate() diff --git a/tests/src/isbn.bib b/tests/src/isbn.bib new file mode 100644 index 0000000..6e8c62b --- /dev/null +++ b/tests/src/isbn.bib @@ -0,0 +1,7 @@ +@book{0198507194, + title = {Bose-Einstein Condensation}, + author = {Lev. P. Pitaevskii and S. Stringari}, + isbn = {0198507194}, + year = {2004}, + publisher = {Clarendon Press} +} \ No newline at end of file diff --git a/tests/src/test_book.djvu b/tests/src/test_book.djvu new file mode 100644 index 0000000000000000000000000000000000000000..94b9465c8917ede61bc0387bb335f1b21943099b GIT binary patch literal 6336 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 CCp*9Z literal 0 HcmV?d00001 diff --git a/tests/src/test_book.pdf b/tests/src/test_book.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b723280d9f4a4306d69e19acf713a16eb430d045 GIT binary patch literal 18059 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