|
|
@@ -250,18 +250,27 @@ class PDFProcessor:
|
|
|
if metadata['year']:
|
|
|
break
|
|
|
|
|
|
- # Otsi DOI
|
|
|
+ # Otsi DOI - PARANDATUD VERSIOON
|
|
|
doi_patterns = [
|
|
|
- r'doi:\s*([^\s]+)',
|
|
|
- r'DOI:\s*([^\s]+)',
|
|
|
- r'10\.\d{4,9}/[-._;()/:A-Za-z0-9]+'
|
|
|
+ r'doi:\s*([^\s]+)', # Grupp 1: kõik DOI peale "doi:"
|
|
|
+ r'DOI:\s*([^\s]+)', # Grupp 1: kõik DOI peale "DOI:"
|
|
|
+ r'(10\.\d{4,9}/[-._;()/:A-Za-z0-9]+)' # Grupp 1: kõik DOI ilma eesliiteta
|
|
|
]
|
|
|
|
|
|
for line in lines:
|
|
|
for pattern in doi_patterns:
|
|
|
match = re.search(pattern, line, re.IGNORECASE)
|
|
|
if match:
|
|
|
- doi_text = match.group(1) if 'doi:' not in pattern.lower() else match.group(1).lstrip('doi:').strip()
|
|
|
+ try:
|
|
|
+ # Proovi võtta grupp 1 (kui on)
|
|
|
+ doi_text = match.group(1).strip()
|
|
|
+ except IndexError:
|
|
|
+ # Kui gruppi 1 pole, võta kogu sobiv tekst
|
|
|
+ doi_text = match.group(0).strip()
|
|
|
+
|
|
|
+ # Eemalda võimalikud "doi:" või "DOI:" eesliited
|
|
|
+ doi_text = re.sub(r'^(doi|DOI):\s*', '', doi_text)
|
|
|
+
|
|
|
metadata['doi'] = doi_text
|
|
|
break
|
|
|
if metadata['doi']:
|