U
    iq                     @   s2   d Z ddlZddlmZmZmZ G dd dZdS )u  
Four Categories:
1) PRODUCTIVE  → All work-related activities
2) BROWSER     → YouTube, Gmail, social, entertainment, search
3) SERVER      → AWS, GCP, Azure, SSH, Docker, monitoring tools
4) NON-WORK    → ONLY system lock / idle / AFK / screensaver (ActivityWatch)
    N)DictListTuplec                   @   s\   e Zd Zdd Zdeeeeef dddZdeeedddZ	e
e e
e d	d
dZdS )ActivityCategorizerc              0   C   s  ddddddddd	d
dddddg| _ 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(d)g| _d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQg(| _dRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddg0| _d S )Nzlockapp.exeZlockappzlock screenZsessionlockzsession lockedzwindows default lock screenidlez	idle-timeafkZawayz
not activeZuserinactivezno active windowZscreensaverzscreen saveryoutubezyoutu.beZnetflixzamazon primeZ
primevideoZhotstarZspotifyZtwitchz	gmail.comzmail.google.comZfacebookZ	instagramZsnapchatZtiktokZ	pinterestZredditZtwitterzx.comZwhatsappZtelegramzgoogle.com/searchzbing.com/searchZ
duckduckgo?q=z&q=z	search?q=awsZec2Zs3lambdaZiamZ
cloudwatchazurezmicrosoft azuregcpzgoogle cloudZfirebaseZdigitaloceanZdropletZlinodeZvultrZvercelZnetlifyZ
cloudflareZgodaddyZ	namecheapZjenkinszgithub actionsz	gitlab ciZcircleciZdockerZ
kubernetesZk8sZpodsZclusterZgrafanaZ
prometheusZdatadogz	new relicZsentryZsshZrdpZvncZ
teamviewerZanydeskZopenvpnzvisual studiozvs codevscodeZcursorZintellijZpycharmZphpstormZwebstormz.pyz.jsz.tsz.phpz.jsxz.tsxz.htmlz.cssz.jsonz.sql	localhostz	127.0.0.1z:3000z:8000z:5000z:4200postmanZinsomniaz
github.comz
gitlab.comZ	bitbucketzstack overflowZchatgptZclaudeZbardZ
perplexityZphindZjiraZnotionZtrelloZasanaZ
confluenceZclickupfigmazadobe xdZ	photoshopZillustratorZcpanelZ
phpmyadminZ	filezilla)non_work_keywordsbrowser_keywordsserver_keywordsZproductive_keywords)self r   ./activity_categorizer.py__init__   s
                                                                                            zActivityCategorizer.__init__ )window_titleapp_namereturnc                 C   sd   | d|   }| jD ]}||kr dS q| jD ]}||kr2 dS q2| jD ]}||krL dS qLdS )N )non-workg      ?)servergffffff?)browser?)Z
productiver!   )lowerr   r   r   )r   r   r   textZwordr   r   r   categorize_activityj   s    


z'ActivityCategorizer.categorize_activityc                 C   s"  |  ||\}}| d|  }|dkrTd|kr8d}nd|ksHd|krNd}nd}n|dkrd|krjd	}n(d
|krxd}nd|ksd|krd}nd}n~|dkrd|krd}n d|krd}nd|krd}nd}nFd|ksd|krd}n0d|krd}n"d|krd}nd|krd}nd}|||||dS )Nr   r   lockzsystem-lockr   r   r    r   ZentertainmentZgmailZemailr	   searchzgeneral-browsingr   r
   r   r   zserver-toolsr   zcode.exeZcodingr   z
dev-serverr   zapi-testingr   Zdesignzproductive-general)categoryZsubcategory
confidencer   r   )r$   r"   )r   r   r   r'   r(   r#   subr   r   r   get_detailed_category   sN    
z)ActivityCategorizer.get_detailed_category)
activitiesr   c                 C   sB   g }|D ]4}|  |dd|dd}|| || q|S )Nr   r   Zapplication_name)r*   getupdateappend)r   r+   ZcategorizedZactivityinfor   r   r   categorize_batch   s    


z$ActivityCategorizer.categorize_batchN)r   )r   )__name__
__module____qualname__r   strr   floatr$   r   r*   r   r0   r   r   r   r   r      s   [1r   )__doc__retypingr   r   r   r   r   r   r   r   <module>   s   