+
    î�‹jÇ  ã                   óN   € R t ^ RIt^ RIt^ RIt^RIHt  ! R R4      tR R ltR# )u  
Source adapter for Drake Scans (drakecomic.org).

Manga pages link their chapters as
    https://drakecomic.org/<manga-slug>-chapter-<num>/
Chapter pages embed their reader config:
    ts_reader.run({"post_id":..., "sources":[{"images":[url, ...]}]})
That list is the chapter's canonical page set and reading order.

Note: some chapter posts on the site have extra images from other manga
attached to them (the site's own reader shows them). We deliberately do
NOT filter those out â€” we recreate exactly what the site's reader lists.
N)Úcorec                   ó†   a € ] tR t^t o RtRtRV 3R lR lltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
RtV tR# )ÚDrakeScansSourceÚdrakezhttps://drakecomic.orgNc                ó.   <€ V ^8„  d   QhRS[ R,          /# )é   Ú
manga_slugN©Ústr)ÚformatÚ__classdict__s   "€Ú</home/nathan/projects/ai/drake_scans_download/manga/drake.pyÚ__annotate__ÚDrakeScansSource.__annotate__   s   ø€ ÷ Añ A¡3¨¥:ñ Aó    c                ó(   € T;'       g    R V n         R# )zdisastrous-necromancerN©r   )Úselfr   s   &&r   Ú__init__ÚDrakeScansSource.__init__   s   € à$×@Ð@Ð(@ˆŽr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	manga_urlÚreturnz	core.Pathr	   )r   r   s   "€r   r   r      s   ø€ ÷ *ñ *¡Cð *¨Kñ *r   c                óB   € \         P                  ! V P                  4      # ©N)r   ÚPathr   )r   r   s   &&r   Ú
output_dirÚDrakeScansSource.output_dir   s   € Ü�yŠy˜Ÿ™Ó)Ð)r   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   Úch_idr   r	   )r   r   s   "€r   r   r   !   s   ø€ ÷ +ñ +¡Sð +©Sñ +r   c                ó    € R \        V4      R 2# )Úchapter_Ú03d©Úint)r   r   s   &&r   Úchapter_dirnameÚ DrakeScansSource.chapter_dirname!   s   € Øœ#˜e›* SÐ)Ð*Ð*r   c                óP   <€ V ^8„  d   QhRS[ RS[S[S[ S[ S[ 3,          ,          /# )r   r   r   )r
   ÚlistÚtuple)r   r   s   "€r   r   r   $   s+   ø€ ÷ ñ ¡cð ©d±5¹¹cÁ3¸Õ3GÕ.Hñ r   c                ó0  € \         P                  ! V4      pVf   \        P                  ! R4       \        P
                  ! R\        P                  ! V P                  4      ,           R,           \        P                  ! V P                  4      ,           R,           4      p. pVP                  V4       FM  pVP                  ^4      \        VP                  ^4      4      rvVP                  \        V4      VRV 234       KO  	  VP                  R R7       V# )z--> [(ch_id, ch_url, label)] in reading order.zCould not fetch manga page.zhref="(z/[^"]*z-chapter-(\d+)/)"zChapter c                 ó&   € \        V ^ ,          4      # )é    r#   )Úcs   &r   Ú<lambda>Ú/DrakeScansSource.get_chapters.<locals>.<lambda>2   s   € ¤C¨¨!­¤Ir   )Úkey)r   Ú
fetch_htmlÚsysÚexitÚreÚcompileÚescapeÚsiter   ÚfinditerÚgroupr$   Úappendr
   Úsort)r   r   ÚhtmlÚlink_reÚchaptersÚmÚurlÚnums   &&      r   Úget_chaptersÚDrakeScansSource.get_chapters$   sÖ   € ä�Š˜yÓ)ˆØŠ<Ü�HŠHÐ2Ô3ô —*’*ØœŸš 4§9¡9Ó-Õ-°	Õ9Ü�iŠi˜Ÿ™Ó(õ)Ø+?õ@óAˆð ˆØ×!Ñ! $Ö'ˆAØ—w‘w˜q“z¤3 q§w¡w¨q£z£?�Ø�O‰OœS ›X s¨h°s°eÐ,<Ð=Ö>ñ (ð 	�‰Ñ-ˆÔ.Øˆr   c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# )r   Úchapter_urlr   )r
   r(   )r   r   s   "€r   r   r   5   s   ø€ ÷ ñ ¡Sð ©T±#­Yñ r   c                ó(  € \         P                  ! V4      pVf   . # \        V4      pV'       g   \         P                  ! R4       . # \	        R VP                  R4      ;'       g    .  4       . 4      pV'       g   \         P                  ! R4       V# )Nu9     ts_reader config not found â€” layout may have changed.c              3   óˆ   "  € T F8  qP                  R 4      '       g   K  VP                  R 4      ;'       g    . x € K:  	  R# 5i)ÚimagesN)Úget)Ú.0Úss   & r   Ú	<genexpr>Ú-DrakeScansSource.get_pages.<locals>.<genexpr>=   s5   é € ð MÙ7˜¿E¹EÀ(¿Oô +�Q—U‘U˜8“_×*Ð*¨Ô*Û7ùs   ‚AŸA·AÚsourcesz  no images in reader config.)r   r1   Úextract_ts_reader_jsonÚlogÚnextrI   )r   rE   r<   ÚcfgÚurlss   &&   r   Ú	get_pagesÚDrakeScansSource.get_pages5   s   € Ü�Š˜{Ó+ˆØŠ<ØˆIÜ$ TÓ*ˆßÜ�HŠHÐPÔQØˆIÜñ MØ"Ÿw™w yÓ1×7Ð7°RÐ7óMØNPóRˆçÜ�HŠHÐ4Ô5Øˆr   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Únamer7   r   r   r%   rB   rT   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      sC   ø‡ € Ø€DØ#€D÷Aò A÷*ð *÷+ð +÷ð ÷"ö r   r   c                ó>   € V ^8„  d   QhR\         R\        R,          /# )r   r<   r   N)r
   Údict)r   s   "r   r   r   D   s   € ÷ ñ ¤ð ¬°­ñ r   c                ó   € V P                  R4      pVR
8X  d   R# V P                  RV4      ^,           p^ RRrTp\        V\        V 4      4       F�  pW,          pV'       d%   V'       d   RpK  VR8X  d   RpK*  VR8X  d   RpK5  K7  VR8X  d   RpKB  VR8X  d   V^,          pKT  VR	8X  g   K]  V^,          pV^ 8X  g   Ko   \        P                  ! WV^,            4      u # 	  R#   \        P
                   d      R# i ; i)zGExtract the ts_reader.run({...}) JSON object (string-aware brace scan).zts_reader.run(NÚ(FÚ\TÚ"Ú{Ú}éÿÿÿÿ)ÚfindÚrangeÚlenÚjsonÚloadsÚJSONDecodeError)r<   ÚidxÚstartÚdepthÚin_strÚescÚir-   s   &       r   rO   rO   D   sî   € à
�)‰)Ð$Ó
%€CØ
ˆb„yÙØ�I‰I�c˜3Ó !Õ#€EØ˜E 5�3€EÜ�5œ#˜d›)Ö$ˆØ�GˆßßØ’Ø�d”Ø’Ø�c”Ø’ñ à�#ŒXØŠFØ�#ŒXØ�Q�JŠEØ�#ŽXØ�Q�JˆEØ˜Žzð ÜŸ:š: d°°QµÐ&7Ó8Ò8ñ# %ñ( øô ×+Ñ+ô  Ûð ús   Â>C#Ã#C=Ã<C=)Ú__doc__ri   r4   r2   Ú r   r   rO   © r   r   Ú<module>ru      s(   ðñó Û 	Û 
å ÷+ñ +÷\r   