Скрипт по поиску ISBN в PDF

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env python
import pyPdf
import re
import isbn
import sys
def get_pdf_content(path, pages_count=10):
content = ""
pdf = pyPdf.PdfFileReader(file(path, "rb"))
pages_total = pdf.getNumPages()
if pages_total < pages_count:
pages = pages_total
else:
pages = pages_count
for i in xrange(0, pages):
content += pdf.getPage(i).extractText() + "\n"
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content.encode("ascii", "ignore")
content = get_pdf_content(sys.argv[1])
isbn_13 = re.findall("ISBN.{0,15}([0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9])", content)
isbn_10 = re.findall("ISBN.{0,15}([0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9][-]?[0-9])", content)
isbn_13 = list(set(isbn_13))
isbn_10 = list(set(isbn_10))
isbn_13_valid = [i for i in isbn_13 if isbn.isValid(i)]
isbn_10_valid = [i for i in isbn_10 if isbn.isValid(i)]
print "ISBN-13:", isbn_13_valid
print "ISBN-10:", isbn_10_valid