summaryrefslogtreecommitdiff
path: root/scripts/extract_abstract
blob: e70b3cbdf3847f323c689e7bb191ba62a7d990d7 (plain)
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
39
40
41
42
#!/bin/bash

# Directory containing the papers
PAPER_DIR="../papers"

echo "Fetching abstracts for arXiv papers in $PAPER_DIR..."
echo "===================================================="

for file in "$PAPER_DIR"/*.pdf; do
    # Extract the arXiv ID (e.g., 2401.05566) from the filename
    filename=$(basename "$file")
    id=$(echo "$filename" | grep -oE '[0-9]{4}\.[0-9]{4,5}')

    if [ -n "$id" ]; then
        echo "FILE: $filename"
        echo "ID:   $id"

        # Fetch XML from arXiv API and parse the <summary> tag using Python
        curl -s "https://export.arxiv.org/api/query?id_list=$id" | \
        python3 -c "
import sys, xml.etree.ElementTree as ET
try:
    xml_data = sys.stdin.read()
    root = ET.fromstring(xml_data)
    ns = {'atom': 'http://www.w3.org/2005/Atom'}
    summary = root.find('.//atom:summary', ns)
    if summary is not None:
        print(summary.text.strip())
    else:
        print('Abstract not found in API response.')
except Exception as e:
    print(f'Error parsing response: {e}')
"
        echo "----------------------------------------------------"
    else
        echo "Skipping: $filename (No arXiv ID detected)"
        echo "----------------------------------------------------"
    fi
    sleep 1
done