Spaces:
Sleeping
Sleeping
| from io import BytesIO | |
| from dotenv import load_dotenv | |
| import os | |
| from gamification.objects import SimpleIndividualUserLevel | |
| from controller.utils import * | |
| from fastapi import FastAPI, File, HTTPException, Header, UploadFile,status | |
| from controller.tokenManagement import * | |
| from controller.jwtcoding import * | |
| from fastapi.responses import JSONResponse | |
| import docx | |
| import fitz | |
| from gamification.routes import gamification | |
| from controller.scraper import scrapeCourse | |
| import asyncio | |
| from google import genai | |
| from typing import Optional,List | |
| from pydantic import BaseModel | |
| import re | |
| from bson.json_util import dumps | |
| import threading | |
| import concurrent.futures | |
| from gamification.pointLogic import get_all_simple_points_func,get_dream_job | |
| from pydantic import BaseModel | |
| from datetime import datetime | |
| from bson import ObjectId | |
| import os | |
| import re | |
| from urllib.parse import urlparse | |
| from concurrent.futures import ThreadPoolExecutor | |
| executor = ThreadPoolExecutor(max_workers=5) | |
| load_dotenv() | |
| CX = os.getenv("SEARCH_ENGINE_ID") | |
| API_KEY = os.getenv("GOOGLE_API_KEY") | |
| PINECONE_API_KEY=os.getenv("PINECONE_API_KEY") | |
| GEMINI_API_KEY=os.getenv("GEMINI_API_KEY") | |
| MONGO_URI=os.getenv("MONGO_URI") | |
| class UserBody(BaseModel): | |
| firstName: Optional[str] = None | |
| lastName: Optional[str] = None | |
| email:str | |
| password:str | |
| class AiAnalysis(BaseModel): | |
| query:str | |
| class Token(BaseModel): | |
| refreshToken:str | |
| class RecommendedCourse(BaseModel): | |
| courseTitle:Optional[str]=None | |
| courseLink:Optional[str]=None | |
| duration:Optional[str]=None | |
| courseLevel:Optional[str]=None | |
| interimRoleBenefit:Optional[str]=None | |
| dreamRoleBenefit:Optional[str]=None | |
| courseDescription:Optional[str]=None | |
| courseProvider:Optional[str]=None | |
| class UserCourse(BaseModel): | |
| employmentStatus:str | |
| interimRole:bool | |
| interimRoleOptions:Optional[List[str]]=None | |
| dreamRole:str | |
| motivation:str | |
| learningPreference:str | |
| timeCommitmentPerDay:str | |
| challenges:list | |
| timeframeToAchieveDreamRole:str | |
| recommendedCourses: Optional[List[RecommendedCourse]]=None | |
| class LeaderBoardRanking(BaseModel): | |
| userId:str | |
| firstName:str | |
| lastName:str | |
| totalpoints:float | |
| lastUpdated:datetime | |
| careerPath:str | |
| class Config: | |
| json_encoder ={ | |
| ObjectId:str | |
| } | |
| class CourseRecommendation(BaseModel): | |
| courseName: str | |
| completionTime: str | |
| def extract_provider(url): | |
| # Parse the URL | |
| parsed_url = urlparse(url) | |
| # Extract domain and split it to get the main part | |
| domain = parsed_url.netloc.split('.')[1] | |
| # Extract course name | |
| match = re.search(r'/course/([^/]+)/', url) | |
| course_name = match.group(1) if match else "Not found" | |
| return domain | |
| def get_course_func(query): | |
| # Example search query | |
| results = google_search(query, API_KEY, CX) | |
| content=[] | |
| if results: | |
| for item in results.get('items', []): | |
| title = item.get('title') | |
| link = item.get('link') | |
| snippet = item.get('snippet') | |
| provider = extract_provider(link) | |
| content_structure={} | |
| content_structure["courseTitle"]=title | |
| content_structure["courseLink"]=link | |
| content_structure["courseSnippet"]= snippet | |
| content_structure["scrapedCourseDetails"]= scrapeCourse(url=link) | |
| content.append(content_structure) | |
| return content | |
| def extract_course_info(text: str) -> CourseRecommendation: | |
| # Example regex patterns – adjust these as needed based on the response format. | |
| course_pattern =r'"coursename":\s*"([^"]+)"' | |
| time_pattern = r"(\d+\s*-\s*\d+\s*months)" | |
| course_match = re.search(course_pattern, text) | |
| time_match = re.search(time_pattern, text) | |
| coursename = course_match.group(1).strip() if course_match else "Unknown" | |
| completiontime = time_match.group(0).strip() if time_match else "Unknown" | |
| return CourseRecommendation(courseName=coursename, completionTime=completiontime) | |