
    6jF                     z    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dS )
z/Duckduckgo videos search engine implementation.    N)Mapping)AnyClassVar)BaseSearchEngine)VideosResult)_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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dS )$DuckduckgoVideosz Duckduckgo videos search engine.
duckduckgovideosbingzhttps://duckduckgo.com/v.jsGETcontentdescriptionduration
embed_html	embed_urlimage_tokenimagesprovider	published	publisher
statisticstitleuploader)r   r   r   r   r   r   r   r   r   r   r   r   r   elements_replacequeryreturnc                 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requestr   r   )selfr   resp_contents      `/root/.hermes/hermes-agent/venv/lib64/python3.11/site-packages/ddgs/engines/duckduckgo_videos.py_get_vqdzDuckduckgoVideos._get_vqd&   s:    '//7OY\^cXd/eemL%000       region
safesearch	timelimitNpagekwargsc                 z   dddd}|rd| nd}|                     d          }|                     d          }	|                     d	          }
|rd
| nd}|	rd|	 nd}	|
rd|
 nd}
|d||                     |          | d| d|	 d|
 ||                                         d}|dk    r|dz
  dz   |d<   |S )z'Build a payload for the search request.1z-1z-2)onmoderateoffzpublishedAfter: 
resolutionr   license_videoszvideoDefinition:zvideoDuration:zvideoLicense:json,)lor    vqdfpr)   <   s)getr'   lower)r$   r   r*   r+   r,   r-   r.   safesearch_baser5   r   r6   payloads               r&   build_payloadzDuckduckgoVideos.build_payload+   s%    "%$tDD5>F1i111B	ZZ--
::j))$4558BJ4
444
2:B.H...=KS9999QS==''HH
HHXHHHH !1!1!3!34
 
 !88#ax2o/GCLr(   	html_textc                 B   t          j        |          }|                    dg           }g }|D ]o}t                      }| j                                        D ]0\  }}|                    |          }	|                    ||	           1|                    |           p|S )z&Extract search results from lxml tree.results)r7   loadsr@   r   r   items__setattr__append)
r$   rE   	json_datarI   rG   itemresultkeyvaluedatas
             r&   extract_resultsz DuckduckgoVideos.extract_resultsI   s    Jy))	i,, 	# 	#D!^^F"399;; 0 0
Uxx}}""5$////NN6""""r(   )r)   )__name__
__module____qualname____doc__namecategoryr   
search_urlsearch_methodr   r   r   str__annotations__r'   intdictr   rD   listr   rR    r(   r&   r
   r
      sA        **DHH.JM $" $  "5 5hwsCx01    1c 1c 1 1 1 1    	
 :   
c3h   < l1C      r(   r
   )rV   r7   collections.abcr   typingr   r   	ddgs.baser   ddgs.resultsr   
ddgs.utilsr   r
   r`   r(   r&   <module>rf      s    5 5  # # # # # #                 & & & & & & % % % % % % # # # # # #H H H H H'5 H H H H Hr(   