from flask import Flask, render_template, request, jsonify
from pyresparser import ResumeParser
import spacy
import os
app = Flask(__name__)
# Load spaCy model
custom_nlp = spacy.load('en_core_web_sm')
@app.route('/')
def index():
    return render_template('upload.html')

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return jsonify({'error': 'No file provided'}), 400

    uploaded_file = request.files['file']

    if uploaded_file.filename == '':
        return jsonify({'error': 'No selected file'}), 400

    # Save the uploaded file to a specific location on the server
    upload_folder = 'uploads'
    os.makedirs(upload_folder, exist_ok=True)  # Create the folder if it doesn't exist
    file_path = os.path.join(upload_folder, uploaded_file.filename)
    uploaded_file.save(file_path)

    # Parse the resume using pyresparser
    data = ResumeParser(file_path).get_extracted_data()

    # Process the parsed data with spaCy or other libraries as needed
    processed_data = process_data_with_spacy(data)
    print('---------------------------------------------------')
    print(processed_data)

    return jsonify({'processed_data': processed_data}), 200
def process_data_with_spacy(data):
    # print(data)

    all_entities = []

    # Process 'name' field
    if 'name' in data and data['name']:
        name_entities = extract_entities_from_text(data['name'])
        all_entities.extend(name_entities)

    # Process 'email' field
    if 'email' in data and data['email']:
        email_entities = extract_entities_from_text(data['email'])
        all_entities.extend(email_entities)

    # Process 'skills' field
    if 'skills' in data and data['skills']:
        skills_text = ' '.join(data['skills'])
        skills_entities = extract_entities_from_text(skills_text)
        print(skills_text)
        all_entities.extend(skills_entities)

    # Add more fields as needed


    return all_entities

def extract_entities_from_text(text):
    doc = custom_nlp(text)
    entities = [{'text': ent.text, 'label': ent.label_} for ent in doc.ents]
    return entities
if __name__ == '__main__':
    app.run(debug=True)
