
    ^i                     l    S r SSKrSSKJr  SSKJrJr  SSKJr  SSK	J
r
  SSKJr   " S S	\\
   5      rg)
z/Duckduckgo images search engine implementation.    N)Mapping)AnyClassVar)BaseSearchEngine)ImagesResult)_extract_vqdc                       \ rS rSr% SrSrSrSrSrSr	SS	S
.r
\\\\4      \S'   SSSSSSSS.r\\\\4      \S'   S\S\4S jr S"S\S\S\S\S-  S\S\S\\\4   4S jjrS\S\\   4S  jrS!rg)#DuckduckgoImages   z Duckduckgo images search engine.
duckduckgoimagesbingzhttps://duckduckgo.com/i.jsGETzhttps://duckduckgo.com/cors)RefererzSec-Fetch-Modesearch_headerstitleimage	thumbnailurlheightwidthsource)r   r   r   r   r   r   r   elements_replacequeryreturnc                 f    U R                   R                  SSSU0S9R                  n[        X!5      $ )z2Get vqd value for a search query using DuckDuckGo.r   zhttps://duckduckgo.comq)params)http_clientrequestcontentr   )selfr   resp_contents      X/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/engines/duckduckgo_images.py_get_vqdDuckduckgoImages._get_vqd!   s8    ''//7OY\^cXd/emmL00    region
safesearch	timelimitNpagekwargsc                 h   SSSS.nSSSSS.nU(       a  S	X    3OS
nUR                  S5      n	U	(       a  SU	 3OS
n	UR                  S5      n
U
(       a  SU
 3OS
n
UR                  S5      nU(       a  SU 3OS
nUR                  S5      nU(       a  SU 3OS
nUR                  S5      nU(       a  SU 3OS
nSUUU R                  U5      XsR                  5          S.nU(       d#  U	(       d  U
(       d  U(       d  U(       d  U(       a  U SU	 SU
 SU SU SU 3US'   US:  a  US-
  S-   US'   U$ )z'Build a payload for the search request.1z-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)or   lvqdp,f   d   s)getr&   lower)r#   r   r)   r*   r+   r,   r-   safesearch_basetimelimit_baser<   r=   r>   r?   r@   payloads                  r%   build_payloadDuckduckgoImages.build_payload&   sN    "%#dC$6fM;DeN567"	zz&!!%tf~2

7#$)& rZZ-
-7uZL)R
H%'-76(#2

?36C(=/2==' !1!1!34
 v'[$qqAfXQ}o^GCL!8#ax3./GCLr(   	html_textc                 ,   [         R                  " U5      nUR                  S/ 5      n/ nU Hc  n[        5       nU R                  R                  5        H'  u  pxUR                  U5      n	UR                  X5        M)     UR                  U5        Me     U$ )z&Extract search results from html text.results)rA   loadsrK   r   r   items__setattr__append)
r#   rR   	json_datarV   rT   itemresultkeyvaluedatas
             r%   extract_results DuckduckgoImages.extract_resultsJ   s    JJy)	i,D!^F"3399;
xx}""5/ < NN6"  r(    )rH   )__name__
__module____qualname____firstlineno____doc__namecategoryprovider
search_urlsearch_methodr   r   r   str__annotations__r   r&   intdictr   rP   listr   r_   __static_attributes__ra   r(   r%   r
   r
      s    *DHH.JM>Wkq2rNHWS#X./r  5hwsCx01 1c 1c 1 "" " 	"
 :" " " 
c3h"H l1C r(   r
   )rf   rA   collections.abcr   typingr   r   	ddgs.baser   ddgs.resultsr   
ddgs.utilsr   r
   ra   r(   r%   <module>rw      s.    5  #   & % #I'5 Ir(   