ResumeAPI / app.py
Vaibhav84's picture
Changes
5a8cf14
raw
history blame
2.43 kB
#Fast APi Packages
from fastapi import FastAPI
from pydantic import BaseModel
import json
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
#SkillExtraction Packages
from PyPDF2 import PdfReader
import psycopg2
from psycopg2 import sql
import pandas as pd
from datetime import date
import numpy as np
import spacy
import re
from sentence_transformers import SentenceTransformer, util
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from io import StringIO
from spacy.matcher import PhraseMatcher
from skillNer.general_params import SKILL_DB
from skillNer.skill_extractor_class import SkillExtractor
from psycopg2.extensions import register_adapter, AsIs
register_adapter(np.int64, AsIs)
import warnings
warnings.filterwarnings('ignore')
#Custom Classes for endpoints
from DbConnection import DbConnection
from UploadFile import UploadOpenFile
from SkillExtract import SkillExtractorDetails
from APIModalsDetails import FileDetails
from APIModalsDetails import SkillDetails
import os
os.environ['HF_HOME'] = '/hug/cache/'
app = FastAPI()
nlp = spacy.load("en_core_web_lg")
# init skill extractor
skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher)
@app.get("/")
async def root():
return {"SkillAPI":"SkillAPi Version 0.05"}
#https://vaibhav84-resumeapi.hf.space/docs
db_params = DbConnection.GetDbConnection()
def parse_csv(df):
res = df.to_json(orient="records")
parsed = json.loads(res)
return parsed
@app.get("/ProfileMatch")
def ProfileMatchResults():
dbQuery = "select * from profilematch"
conn = psycopg2.connect(**db_params)
df = pd.read_sql_query(dbQuery, conn)
return parse_csv(df)
@app.post("/UploadFile/")
def UploadFileDetails(file_data: FileDetails):
returnID = UploadOpenFile.uploadFile(file_data.filecontents,file_data.filename,db_params)
file_data.filecontents = ""
file_data.fileid = str(returnID)
file_data.message = "File Uploaded Successfully!"
return file_data
@app.post("/ExtractSkills/")
def ExtractSkills(skill_data: SkillDetails):
returnSkills = SkillExtractorDetails.SkillExtract(db_params,skill_extractor,skill_data.skillid)
details = returnSkills.split('@')
skill_data.requiredSkills = details[0]
skill_data.softSkills = details[1]
skill_data.goodToHaveSkills = details[1]
return skill_data