
    AjL                       d Z ddlmZ ddlZddlZddlZddlZddlZ	ddl
Z	 ej                  e      ZdZdZdZg dZdddZd	d
ddZedk(  r ej(                  ej*                          eej                  j-                  ej.                  j0                         ej2                  d      z
        Z e ej8                  ed             yy)u   Bluesky-Helper — AT-Protocol public Search-API.

Verwendet `api.bsky.app` (NICHT `public.api.bsky.app` — letzteres ist 403
in v0.1, KAR-38 Drift-Fund 13.05.2026).
    )annotationsNz3https://api.bsky.app/xrpc/app.bsky.feed.searchPostsz$aria-radar/0.1 (+aseckzai@gmail.com)   )zclaude codezanthropic apiz
mcp serverz
claude sdkzai agentc                   | t        |      dd}t         dt        j                  j	                  |       }t        j
                  j                  |t        dd      }t        j
                  j                  |t              5 }t        j                  |j                               }d d d        j                  dg       S # 1 sw Y   xY w)	Ntop)qlimitsort?zapplication/json)z
User-AgentAccept)headers)timeoutposts)strAPI_BASEurllibparse	urlencoderequestRequest
USER_AGENTurlopenTIMEOUT_SECONDSjsonloadsreadget)keyword	max_itemsparamsurlreqresppayloads          0/root/aria/scripts/ai-radar/platforms/bluesky.py_searchr%      s    S^UCFJa..v67
8C
..
 
 ZSe.f
 
gC			_		= ***TYY[)*;;w##* *s   $CC   )max_per_keywordc                b   g }t               }t        D ]  }	 t        ||dz        }|D ]  }|j                  dd      }|r||v r|j                  d      xs% |j                  di       j                  d	      xs d}		 t        j                  j                  |	j                  d
d            }
|
| k  r|j                  di       }|j                  dd      }d|v r|j                  dd      d   n|}|j                  di       xs i j                  dd      }|j!                  d| d|dd  d| d| |
j#                         d|j                  d      xs d|j                  d      xs ddz  z   |||dd |j                  d      |j                  d      |j                  d      dd       |j%                  |       t'        |D cg c]  }|d    d!   |k(  s| c}      |k\  s n t)        j*                  d"        t        j-                  d#t'        |      t'        t                     |S # t        $ r"}t        j                  d||       Y d}~Jd}~ww xY w# t        $ r; t        j                  j                  t        j                  j                        }
Y w xY wc c}w )$u]   Search Bluesky for AI-related posts. Defensive — keyword-fail skips, total-fail returns [].   )r   zbluesky keyword '%s' failed: %sNuri 	indexedAtrecord	createdAtZz+00:00authorhandleunknown/   text@z: P   zhttps://bsky.app/profile/z/post/bluesky	likeCountr   repostCounti,  
replyCount)r   r1   r6   
like_countrepost_countreply_count)titler    datesourcescorerawrD   r   g333333?z"bluesky: %d items from %d keywords)setKEYWORDSr%   	Exceptionlogwarningr   dtdatetimefromisoformatreplace
ValueErrornowtimezoneutcrsplitappend	isoformataddlentimesleepinfo)sincer'   	all_items	seen_urisr   r   excpostr*   
indexed_atcreatedr0   r1   post_idr6   is                   r$   fetchrc   '   s   I%I '	G/BCE   	D((5"%C#*+._$((8R2H2L2L[2Y_]_J;++33J4F4FsH4UV XXh+FZZ)4F03s
cjja(,GHHXr*0b55fbADVHBtCRyk226(&	J))+#((;/41-9P9UTUYZ8ZZ&$ #J"&((;"7$(HH]$;#'88L#9  MM#yK!AeHY,?7,JAKLP__A 	B 	

3O'P HH13y>3x=QM  	KK97CH	  ;++//"++//:;0 Ls6   H7 /I%J,J,7	I" II"%A J)(J)__main__)level   )hours)rZ   r)   )indent)
   )r   r   r   intreturn
list[dict])rZ   zdt.datetimer'   rj   rk   rl   )__doc__
__future__r   rK   rJ   r   loggingrW   urllib.parser   urllib.request	getLogger__name__rH   r   r   r   rF   r%   rc   basicConfigINFOrO   rP   rQ   	timedeltaitemsprintdumps     r$   <module>r|      s   
 #      g!@3
$ 9: -` zGgll+8<2<<b;QQRE	*$**U1
%& r{   