U
    =Nh                     @   s|   d Z ddlZddlZddlmZmZmZ ddlmZmZ ddl	m
Z
 ddlZe
d edZdZd	d
 Zedkrxe  dS )zj
Fixed ActivityWatch Data Puller - Working Version
Auto-generated with working URL: http://127.0.0.1:5600
    N)datetime	timedeltatimezone)create_enginetext)load_dotenvz
.env.localDATABASE_URLzhttp://127.0.0.1:5600c                  C   s  t d z>tt} tjt ddd}|jdkr@t d W dS | }t dt| d	 t	
tj}|td
d }g }| D ]@\}}d| krqzt d| d}| | dd}	tj||	dd}
|
jdkrW q|
 }t d| dt| d |D ]z}|di }|dd}|dk r.qdd|d|dd|dd|t	|ddd d!|d"d#}|| qW q tk
r } z t d$| d|  W Y qW 5 d}~X Y qX q|r>|  b}td%}d}|D ]2}z||| |d
7 }W n   Y qY nX q|  t d&| d' W 5 Q R X nt d( W n2 tk
rz } zt d)|  W 5 d}~X Y nX dS )*z1Pull data from ActivityWatch and save to databaseu"   🔄 Pulling ActivityWatch data...z/api/0/buckets/
   )timeout   u   ❌ Could not fetch bucketsNu   📦 Found z buckets   )ZhoursZafkz/eventsd   )startendlimit)paramsr
   u   📈 z: z eventsdatadurationr      Zankita_gholapzAnkita GholapZappZapplicationZUnknowntitle 	timestampZz+00:00Zgeneral)Zdeveloper_idZdeveloper_nameZapplication_nameZwindow_titler   r   bucket_namecategoryu   ⚠️  Error processing a  
                    INSERT INTO activity_records (
                        developer_id, developer_name, application_name, 
                        window_title, duration, timestamp, bucket_name, 
                        category, created_at
                    ) VALUES (
                        :developer_id, :developer_name, :application_name,
                        :window_title, :duration, :timestamp, :bucket_name,
                        :category, NOW()
                    )
                u   💾 Saved z activities to databaseu   📝 No new activities to saveu   ❌ Error: )printr   r   requestsgetACTIVITYWATCH_URLZstatus_codejsonlenr   Znowr   Zutcr   itemslowerZ	isoformatZfromisoformatreplaceappend	ExceptionZconnectr   ZexecuteZcommit)ZengineZbuckets_responseZbucketsZend_timeZ
start_timeZ
activitiesr   Zbucket_infoZ
events_urlr   Zevents_responseZeventsZeventr   r   ZactivityeZconnZinsert_queryZsaved_count r'   ./fixed_data_puller.pypull_activity_data   sv    




r)   __main__)__doc__r   r   r   r   r   Z
sqlalchemyr   r   Zdotenvr   osgetenvr   r   r)   __name__r'   r'   r'   r(   <module>   s   
a