o
    Qh                  	   @   s  d dl Z d dlmZ d dlmZmZmZ d dlmZ G dd deZ	e
dkrddd	d
dddd
dddd
dddd
dddd
gZdd	dddddddddddddddddddddddgZe	 ZeeeZedee d eedD ]F\ZZede ded   eded   dev red reded   dev red ed   d!ev red"ed!   qydS dS )#    N)BeautifulSoup)ListDictAny)MCPBasec                   @   s&   e Zd Zdd Zd	ddZdd ZdS )
KhanAcademyMCPc                 C   s   d| _ ddi| _d S )Nzhttps://www.khanacademy.orgz
User-AgentzsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36)base_urlheaders)self r   @/var/www/eduai.edurigo.com/my_career/testing/khan_academy_mcp.py__init__   s   
zKhanAcademyMCP.__init__   c           	      C   s\   g }|D ]#}|d }|  |}|D ]}|d |d< || qt||kr' nq|d| S )z;Fetch actual courses from Khan Academy based on skill gaps.
skill_namerelated_skillN)_scrape_courses_for_skillappendlen)	r
   user_skills
skill_gapsmax_resultsall_coursesgapquerycoursescourser   r   r   fetch_courses   s   
zKhanAcademyMCP.fetch_coursesc              
   C   s  | dd}| j d| }ztj|| jd}|  t|jd}g }|d}|s/|d}|dd	 D ]G}|	d
}	|	s?q5|	
  }
|	d}|rb|drb|d }|dsa| j | }nq5|	d}d}|rr|
  }||
||dd q5|s|d| |d| ddd |W S  ty } z&td| dt|  d| |d| ddt| dgW  Y d}~S d}~ww )z<Scrape Khan Academy search results to find relevant courses. +z/search?page_search_query=)r	   zhtml.parserz(._1lisot6l, .search-result-item, articlez!.result-container, .search-resultN   zh3, .title, ._z9axoahrefhttpz.description, ._1j9o38i, p zKhan Academy)titleurldescriptionplatformzKhan Academy courses for z'Browse Khan Academy courses related to z?Direct course extraction failed. This is a search results page.)r$   r%   r&   r'   notez Error scraping Khan Academy for z: zError fetching courses: )replacer   requestsgetr	   raise_for_statusr   textselect
select_oneget_textstriphas_attr
startswithr   	Exceptionprintstr)r
   r   r   
search_urlresponsesoupr   search_resultsresulttitle_elementr$   link_elementr%   description_elementr&   er   r   r   r   "   sf   






z(KhanAcademyMCP._scrape_courses_for_skillN)r   )__name__
__module____qualname__r   r   r   r   r   r   r   r      s    
r   __main__1
Management)skill_id
skill_typer   2zProblem Solving3zData Analysis4zCritical Thinking5	Economics   r   )rF   r   current_leveltarget_levelzFetched z	 Courses:
z. r$   z   URL: r%   r&   z   Description: r   z   Related Skill: r(   z	   Note: )r*   bs4r   typingr   r   r   mcp_baser   r   r@   r   r   khan_academy_mcpr   r   r5   r   	enumerateir   r   r   r   r   <module>   sB    e




	