Ë
    cQêj  ã                   ól   — d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ  G d„ d	ee
   «      Zy)
z/Duckduckgo images search engine implementation.é    N)ÚMapping)ÚAnyÚClassVar)ÚBaseSearchEngine)ÚImagesResult)Ú_extract_vqdc                   óä   — e Zd ZU dZdZdZdZdZdZddd	d
ddddddœ	Z	e
eeef      ed<   ddddddddœZe
eeef      ed<   dedefd„Z	 d'dededed ed!z  d"ed#edeeef   fd$„Zd%edee   fd&„Zy!)(ÚDuckduckgoImagesz Duckduckgo images search engine.Ú
duckduckgoÚimagesÚbingzhttps://duckduckgo.com/i.jsÚGETz*/*zen-US,en;q=0.5zhttps://duckduckgo.com/Ú1z
keep-aliveÚemptyÚcorszsame-originzu=4)	ÚAcceptzAccept-LanguageÚRefererzSec-GPCÚ
ConnectionzSec-Fetch-DestzSec-Fetch-ModezSec-Fetch-SiteÚPriorityÚheaders_updateÚtitleÚimageÚ	thumbnailÚurlÚheightÚwidthÚsource)r   r   r   r   r   r   r   Úelements_replaceÚqueryÚreturnc                 ón   — | j                   j                  ddd|i¬«      j                  }t        ||«      S )z2Get vqd value for a search query using DuckDuckGo.r   zhttps://duckduckgo.comÚq)Úparams)Úhttp_clientÚrequestÚcontentr   )Úselfr   Úresp_contents      úc/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/ddgs/engines/duckduckgo_images.pyÚ_get_vqdzDuckduckgoImages._get_vqd*   s:   € à×'Ñ'×/Ñ/°Ð7OÐY\Ð^cÐXdÐ/Óe×mÑmˆÜ˜L¨%Ó0Ð0ó    ÚregionÚ
safesearchÚ	timelimitNÚpageÚkwargsc                 óô  — ddddœ}dddddœ}|rd	||   › �nd
}|j                  d«      }	|	rd|	› �nd
}	|j                  d«      }
|
rd|
› �nd
}
|j                  d«      }|rd|› �nd
}|j                  d«      }|rd|› �nd
}|j                  d«      }|rd|› �nd
}d||| j                  |«      ||j                  «          ddœ}|s
|	s|
s|s|s|r|› d|	› d|
› d|› d|› d|› �|d<   |dkD  r|dz
  dz  › |d<   |S )z'Build a payload for the search request.r   z-1)ÚonÚmoderateÚoffÚDayÚWeekÚMonthÚYear)ÚdÚwÚmÚyztime:Ú Úsizezsize:Úcolorzcolor:Ú
type_imageztype:Úlayoutzlayout:Úlicense_imagezlicense:ÚjsonÚAT)Úor"   ÚlÚvqdÚpÚctú,Úfé   éd   Ús)Úgetr*   Úlower)r'   r   r,   r-   r.   r/   r0   Úsafesearch_baseÚtimelimit_baser>   r?   r@   rA   rB   Úpayloads                  r)   Úbuild_payloadzDuckduckgoImages.build_payload/   sU  € ð "%°#¸dÑCˆØ$¨6¸ÀfÑMˆÙ;D�e˜N¨9Ñ5Ð6Ñ7È"ˆ	Ø�z‰z˜&Ó!ˆÙ!%��t�f‰~¨2ˆØ—
‘
˜7Ó#ˆÙ$)�&˜˜Ñ ¨rˆØ—Z‘Z Ó-ˆ
Ù-7�u˜Z˜LÑ)¸Rˆ
Ø—‘˜HÓ%ˆÙ'-�7˜6˜(Ñ#°2ˆØŸ
™
 ?Ó3ˆÙ6C˜( = /Ñ2ÈˆàØØØ—=‘= Ó'Ø  ×!1Ñ!1Ó!3Ñ4Øñ
ˆñ ™¡©±vÁØ'˜[¨¨$¨¨q°°°q¸¸ÀAÀfÀXÈQÈ}ÈoÐ^ˆG�C‰LØ�!Š8Ø# a™x¨3Ñ.Ð/ˆG�C‰LØˆr+   Ú	html_textc                 ó&  — t        j                  |«      }|j                  dg «      }g }|D ]b  }t        «       }| j                  j                  «       D ](  \  }}|j                  |«      }	|j                  ||	«       Œ* |j                  |«       Œd |S )z&Extract search results from html text.Úresults)rC   ÚloadsrO   r   r   ÚitemsÚ__setattr__Úappend)
r'   rU   Ú	json_datarY   rW   ÚitemÚresultÚkeyÚvalueÚdatas
             r)   Úextract_resultsz DuckduckgoImages.extract_resultsT   s�   € ä—J‘J˜yÓ)ˆ	Ø—‘˜i¨Ó,ˆØˆØò 	#ˆDÜ!“^ˆFØ"×3Ñ3×9Ñ9Ó;ò 0‘
��UØ—x‘x “}�Ø×"Ñ" 5¨$Õ/ð0ð �N‰N˜6Õ"ð	#ð ˆr+   )rL   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚcategoryÚproviderÚ
search_urlÚsearch_methodr   r   r   ÚstrÚ__annotations__r   r*   ÚintÚdictr   rT   Úlistr   rb   © r+   r)   r
   r
      s  … Ù*à€DØ€HØ€Hà.€JØ€MàØ+Ø,ØØ"Ø!Ø Ø'Øñ
3€N�H˜W S¨# XÑ.Ñ/ó 
ð ØØ ØØØØñ5Ð�h˜w s¨C xÑ0Ñ1ó ð1˜cð 1 có 1ð ñ#àð#ð ð#ð ð	#ð
 ˜‘:ð#ð ð#ð ð#ð 
ˆc�3ˆh‰ó#ðJ¨ð °°lÑ1Cô r+   r
   )rf   rC   Úcollections.abcr   Útypingr   r   Ú	ddgs.baser   Úddgs.resultsr   Ú
ddgs.utilsr   r
   rq   r+   r)   ú<module>rw      s.   ðÙ 5ã Ý #ß  å &Ý %Ý #ôSÐ'¨Ñ5õ Sr+   