File size: 5,172 Bytes
97d7a98
1e2d425
e72ad57
f34bcc8
52e4466
6fa8043
4e3ae73
02af7c0
 
1e2d425
766f2b6
d19d78e
 
f5d33ec
 
 
 
 
 
d19d78e
 
 
02af7c0
f5d33ec
 
 
 
 
 
 
 
02af7c0
 
 
f5d33ec
 
 
 
 
 
 
 
 
02af7c0
 
 
1d56743
8374dbd
a3c62e6
abee04b
 
d19d78e
 
 
 
 
 
 
 
ce2c42f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52e4466
ce2c42f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
02af7c0
f5d33ec
ce2c42f
f5d33ec
1d56743
621aee6
 
 
 
 
 
 
 
1d56743
 
 
b65aa40
016939b
 
b65aa40
 
 
 
1d56743
52e4466
1d56743
 
 
 
 
 
 
c4eebda
 
 
 
 
5054b9b
621aee6
 
 
 
 
f5d33ec
1e2d425
 
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
from flask import Flask, request, jsonify, abort , render_template ,  send_file
import tsadropboxretrieval
import json
import Find_Hyperlinking_text
import findspecsv1
import requests
from io import BytesIO
import urllib

app = Flask(__name__)

pdf_content = None
pageNumTextFound = 0
BASE_URL = "https://marthee-nbslink.hf.space"  # Hugging Face Spaces base URL

@app.route("/", methods=["GET", "POST"])
def thismain():
    print('ayhaga')
    return render_template("gui.html")

@app.route('/view-pdf', methods=['GET'])
def download_pdf():

    # Manually parse the query parameters
    full_query_string = request.query_string.decode()  # Get raw query string
    parsed_params = urllib.parse.parse_qs(full_query_string)  # Parse it

    # Extract pdfLink and keyword manually
    pdf_link = parsed_params.get('pdfLink', [None])[0]
    keyword = parsed_params.get('keyword', [None])[0]

    if not pdf_link or not keyword:
        return "Missing required parameters.", 400

    # Decode the extracted values
    pdf_link = urllib.parse.unquote(pdf_link)
    keyword = urllib.parse.unquote(keyword)

    # If the keyword is a JSON string, convert it back to a list
    try:
        keyword = json.loads(keyword)
    except json.JSONDecodeError:
        keyword = [keyword]  # Treat it as a single keyword if not JSON

    print("Extracted PDF Link:", pdf_link)
    print("Extracted Keywords:", keyword)
    createDF=False

    pdf_content = findspecsv1.extract_section_under_header(pdf_link, keyword)[0]
    if pdf_content is None:
        return "PDF content not found.", 404

    pdf_bytes = BytesIO(pdf_content)
    return send_file(
        pdf_bytes,
        mimetype='application/pdf',
        as_attachment=False,
        download_name=f"annotated_page_{pageNumTextFound}.pdf"
    )

@app.route('/api/process-data', methods=['POST'])
def receive_pdf_data():
    global pdf_content, pageNumTextFound

    # Get PDF link and keyword from finddata()
    pdfLink, keyword = finddata()

    if not pdfLink or not keyword:
        return jsonify({"error": "Both 'pdfLink' and 'keyword' must be provided."}), 400

    try:
        print(pdfLink, keyword)


        pdfbytes, pdf_document , df ,tablepdfoutput= findspecsv1.extract_section_under_header(pdfLink, keyword)
        dbxTeam= tsadropboxretrieval.ADR_Access_DropboxTeam('user')

        # Get metadata using the shared link
        metadata = dbxTeam.sharing_get_shared_link_metadata(pdfLink)
        dbPath='/TSA JOBS/ADR Test/FIND/'
        pdflink= tsadropboxretrieval.uploadanyFile(doc=pdf_document,path=dbPath,pdfname=metadata.name) #doc=doc,pdfname=path,pdfpath=pdfpath+'Measured Plan/
        print('LINKS0',pdflink)
     
        dbPath='/TSA JOBS/ADR Test/FIND/'
        tablepdfLink=tsadropboxretrieval.uploadanyFile(doc=tablepdfoutput,path=dbPath,pdfname=metadata.name.rsplit(".pdf", 1)[0] +' Markup Summary'+'.pdf')
        print(f"PDF successfully uploaded to Dropbox at")
        print('LINKS1',tablepdfLink)
        return jsonify({
            "message": "PDF processed successfully.",
            "PDF_MarkedUp": pdflink,
            'Table_PDF_Markup_Summary': tablepdfLink
        })

    except Exception as e:
        return jsonify({"error": str(e)}), 500

def finddata():
    pdfLink = 'https://www.dropbox.com/scl/fi/hnp4mqigb51a5kp89kgfa/00801-ARC-20-ZZ-S-A-0002.pdf?rlkey=45abeoebzqw4qwnslnei6dkd6&st=m4yrcjm2&dl=1'
    keyword = ['115 INTEGRATED MRI ROOM LININGS', '310 ACCURACY']
    return pdfLink, keyword

@app.route('/apiNBSData', methods=['POST'])
def NBSData():


    try:
        print('In process [Try]')
        data = request.get_json()
        # Extracting values
        pdfLink = data.get('filePath')
        keyword = data.get('NBS_List')

        # Checking if both values are provided
        if not pdfLink or not keyword:
            return jsonify({"error": "Both 'pdfLink' and 'keyword' must be provided."}), 400
        
        keyword = eval(keyword)  # Convert the string representation of the list to an actual list
        
        # Now you can use the extracted pdfLink and keyword
        print(pdfLink, keyword)
        pdfbytes, pdf_document , df ,tablepdfoutput= findspecsv1.extract_section_under_header(pdfLink, keyword)
        dbxTeam= tsadropboxretrieval.ADR_Access_DropboxTeam('user')

        # Get metadata using the shared link
        metadata = dbxTeam.sharing_get_shared_link_metadata(pdfLink)
        dbPath='/TSA JOBS/ADR Test/FIND/'
        pdflink= tsadropboxretrieval.uploadanyFile(doc=pdf_document,path=dbPath,pdfname=metadata.name) #doc=doc,pdfname=path,pdfpath=pdfpath+'Measured Plan/
        print('LINKS0',pdflink)
     
        dbPath='/TSA JOBS/ADR Test/FIND/'
        tablepdfLink=tsadropboxretrieval.uploadanyFile(doc=tablepdfoutput,path=dbPath,pdfname=metadata.name.rsplit(".pdf", 1)[0] +' Markup Summary'+'.pdf')
        print(f"PDF successfully uploaded to Dropbox at")
        print('LINKS1',tablepdfLink)
        return jsonify(tablepdfoutput)

    
    except Exception as e:
        print(f"Error: {e}")
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7860)