
    k>j                       d Z ddlm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dZ ej                   dej"                        Z ej                   d	      Zdd
ZddZddZddddZe
dk(  r ej0                  ej2                         ddlZ eej                  j7                  ej8                  j:                         ej<                  d      z
        Z e  ejB                  ed             yy)uG  Anthropic-Docs-Helper — Release-Notes-Scraper.

Holt zwei Quellen:
- claude-code CHANGELOG.md (raw GitHub) — Versions-Header `## X.Y.Z` ohne Datum,
  letzte N Versionen werden als „heute neu" interpretiert (Dedupe filtert spätere Runs)
- API release notes (platform.claude.com) — Datums-Header `<Month> <day>, <year>`
    )annotationsNz$aria-radar/0.1 (+aseckzai@gmail.com)   zJhttps://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.mdz:https://platform.claude.com/docs/en/release-notes/overviewz"^##\s+(?P<ver>v?\d+\.\d+\.\d+)\s*$zv(?P<date>(?:January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{1,2},\s+\d{4})c                
   t         j                  j                  | t        dd      }t         j                  j	                  |t
              5 }|j                         j                  dd      cd d d        S # 1 sw Y   y xY w)Nztext/plain, text/html)z
User-AgentAccept)headers)timeoutzutf-8replace)errors)urllibrequestRequest
USER_AGENTurlopenTIMEOUT_SECONDSreaddecode)urlreqresps      7/root/aria/scripts/ai-radar/platforms/anthropic_docs.py	_http_getr      sh    
..
 
 ZSj.k
 
lC			_		= =yy{!!')!<= = =s   !A99Bc                   	 t        t              }t
        j                  |      d |  }t        j                  j                  t        j                  j                        j                         j                         }g }|D ]3  }|j                  d| d|j                  dd       |dd d|dd	       5 |S # t        $ r"}t        j	                  d|       g cY d }~S d }~ww xY w)
Nz5anthropic_docs claude-code CHANGELOG fetch failed: %szclaude-code zAhttps://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#. anthropic_docszclaude-code)channelversiontitler   datesourcescoreraw)r   CHANGELOG_RAW_URL	ExceptionlogwarningVERSION_HEADER_REfindalldtdatetimenowtimezoneutcr    	isoformatappendr	   )max_entriesbodyexcversionstodayitemsvers          r   _fetch_claude_code_changelogr8   #   s    *+
 !((.|<HKKOOBKKOO,113==?EE #C5)VWZWbWbcfhjWkVlm&,=
 	 L!  KSQ	s   B8 8	C#CC#C#c                   	 t        t              }t               }g }t        j                  |      D ]  }|j                  d      }||v r|j                  |       	 t        j                  j                  |d      j                  t        j                  j                        }|| k  ry|j#                  d|j%                         j'                          t         d|j%                         j'                          |j'                         dd d|d	d
       t)        |      |k\  s |S  |S # t        $ r"}t        j	                  d|       g cY d }~S d }~ww xY w# t         $ r Y 5w xY w)Nz1anthropic_docs API release notes fetch failed: %sr    z	%B %d, %Y)tzinfozAnthropic API release #r   api)r   raw_dater   )r   API_RELEASE_NOTES_URLr%   r&   r'   setDATE_HEADER_REfinditergroupaddr*   r+   strptimer	   r-   r.   
ValueErrorr0   r    r/   len)	sincer1   r2   r3   
seen_datesr6   mr=   parseds	            r   _fetch_api_release_notesrK   9   sZ   ./
 5JE$$T* 776?z!x 	[[))(K@HHPRP[P[P_P_H`F E>-fkkm.E.E.G-HI+,Afkkm.E.E.G-HI$$&&$(;
 	 u:$L+* L7  GM	  		s0   D- AE-	E6EEE	E('E(
   )	max_itemsc           	         g }|j                  t        d             |j                  t        | |t        |      z
               t        j                  dt        |             |S )z9Fetch latest Anthropic release notes (claude-code + API).   )r1   )rG   r1   zanthropic_docs: %d items)extendr8   rK   rF   r&   info)rG   rM   r6   s      r   fetchrR   Z   sO    E	LL-!<=	LL)9sSXzCYZ[HH'U4L    __main__)level   )days)rG      )indent)r   strreturnrZ   )r1   intr[   
list[dict])rG   dt.datetimer1   r\   r[   r]   )rG   r^   rM   r\   r[   r]   )"__doc__
__future__r   r+   r*   loggingreurllib.requestr   	getLogger__name__r&   r   r   r$   r>   compile	MULTILINEr(   r@   r   r8   rK   rR   basicConfigINFOjsonr,   r-   r.   	timedeltar6   printdumps rS   r   <module>ro      s    #   	 g!3
` T BJJDbllS }
=,B 35  zGgll+8<2<<R;PPQE	*$**U1
%&	 rS   