Format: application/x-python-code
⬇ Download File (10.3 KB)
   1  o
   2  
   3  E'h�4�@s�ddlmZddlZddlZddlZddlmZmZddlmZddl	m
   4  Z
   5  ddlmZddl
   6  Z
   7  ddlZddlmZdd	lmZmZdd
   8  lmZe�e�Zidd�dd�d
   9  d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�Zd�d2d3�Zd�d6d7�Zd�d9d:�Zd�d;d<�Zd�d=d>�Zd�dDdE�Z			F	d�d�dKdL�Z e
  10  j!dFdM�d�dNdO��Z"d�dPdQ�Z#e"�$�d�dRdS��Ze"�$�e
  11  j%dTdUdFdVdW�e
  12  j%dXdYdZd[d\�e
  13  j%d]d^d_e
  14  �&gd`��da�e
  15  j%dbdce
  16  �&gdd��dedf�e
  17  j%dgdhe'didf�e
  18  j%djdkdldm�e
  19  j%dndodFdpdqdr�e
  20  j%dsdtdudm�e
  21  j%dvdwdxe
  22  �&gdy��da�e
  23  j%dzd{dd|d\�e
  24  j%d}d~ddm�e
  25  j%d�d�dFd�d\�d�d�d���������������Z(e"�$�e
  26  j%dTdUdFd�dW�e
  27  j%dXdYdZd[d\�e
  28  j%d]d^d_e
  29  �&gd`��da�e
  30  j%dbdce
  31  �&gd���d��e
  32  j%d�d�e
  33  �&gd���d��e
  34  j%d�d�e
  35  �&gd���d��e
  36  j%d�d�e
  37  �&gd���d��e
  38  j%d�d�e
  39  �&gd���d��e
  40  j%d�d�e
  41  �&gd���d��e
  42  j%dgdhe'didf�e
  43  j%djdkdldm�e
  44  j%dndodFdpdqdr�e
  45  j%dsdtdudm�e
  46  j%dzd{dd|d\�e
  47  j%d}d~ddm�e
  48  j%d�d�dFd�d\�d�d�d�������������������Z)e"�$�e
  49  j%dTdUdFd�dW�e
  50  j%dXdYdZd[d\�e
  51  j%d]d^d_e
  52  �&gd`��da�e
  53  j%dbdce
  54  �&gd���d�df�e
  55  j%d�d�e
  56  �&d�d�g�d��e
  57  j%dnd�e
  58  �&gd���d��e
  59  j%d�d�e
  60  �&d�d�g�d��e
  61  j%dgdhe'didf�e
  62  j%djdkdldm�e
  63  j%d}d~ddm�e
  64  j%d�d�dFd�d\�d�d�d��������������Z*e"�$�e
  65  j%dTdUdFd�dW�e
  66  j%dXdYdZd[d\�e
  67  j%d]d^d_e
  68  �&gd`��da�e
  69  j%dbdce
  70  �&gdd��dedf�e
  71  j%dgdhe'didf�e
  72  j%djdkdldm�e
  73  j%d}d~ddm�e
  74  j%d�d�dFd�d\�d�d�d�����������Z+ed�k�r�e"d�d��dSdS)��)�annotationsN)�ThreadPoolExecutor�as_completed)�datetime)�Path)�unquote�)�DDGS)�_expand_proxy_tb_alias�
  75  json_dumps)�__version__�black�red��green��yellow��blue��magenta��cyan��bright_black��
  76  bright_red�	�bright_green�
  77  �
  78  bright_yellow��bright_blue��bright_magenta�
  79  �bright_cyan��white��bright_white�keywords�str�data�list[dict[str, str]]�
  80  function_name�filename�
  81  str | None�return�NonecCs�|r
  82  |�d�r
  83  |�dd�nd|f\}}|r|n|�d|�dt��d��}|dkr4t|�d|��|�dS|dkrDt|�d|��|�dSdS)N)z.csvz.json�.r�_�
  84  %Y%m%d_%H%M%S�csv�json)�endswith�rsplitr�now�	_save_csv�
  85  _save_json)r+r-r/r0�ext�r?�KC:\Users\shubh\Videos\agent\nova\Lib\site-packages\duckduckgo_search/cli.py�
  86  _save_data(s&"�rA�jsonfile�
  87  str | PathcCsBt|ddd��}|�t|��Wd�dS1swYdS)N�w�utf-8)�encoding)�open�writer)rBr-�filer?r?r@r=1s"�r=�csvfilecCszt|dddd��+}|r+|d��}tj||tjd�}|��|�|�Wd�dSWd�dS1s6wYdS)NrD�rE)�newlinerFr)�
  88  fieldnames�quoting)rG�keysr7�
  89  DictWriter�
  90  QUOTE_MINIMAL�writeheader�	writerows)rJr-rI�headers�writerr?r?r@r<6s�"�r<c	Cs�|r\t|dd�D]U\}}tj|�dd��ddd�t|��dd�D]6\}\}}|rE|dvr/d	nd
  91  }|dkr7dn|}tj|�|d
  92  ddd�}n|}tj|d�|��dt|dd�q!t�qdSdS)Nr��startz.	    zN==============================================================================r
  93  r()�bg�fg)�content�href�image�sourceZ	thumbnail�urli,�NZdetected_language�languagerKz            T)�width�initial_indent�subsequent_indentZpreserve_paragraphsz<12)rXrY�overline)�	enumerate�clickZsecho�itemsZ	wrap_text�COLORS�input)r-�i�e�j�k�vra�textr?r?r@�_print_data?s�"�rpcCsH|�dd��dd��dd��dd��dd��d	d��d
  94  d��dd�}|S)NZfiletyperK�:�"�'�site� r5�/�\)�replace)r+r?r?r@�_sanitize_keywordsPs
  95  �
  96  ryr^�dir_path�proxy�verify�boolcCs�z>tj|ddd|d��|�}|jdkr<ttj�||dd��d��}|�|j	�Wd�WdS1s4wYWdSWdSt
  97  yb}zt�d|�dt
  98  |�j�d|���WYd}~dSd}~ww)N�randomr)r{ZimpersonateZimpersonate_os�timeoutr|���wbzdownload_file url=ru)�primpZClient�get�status_coderG�os�path�joinrHrZ�	Exception�logger�debug�type�__name__)r^rzr0r{r|�resprI�exr?r?r@�_download_file^s�
  99  &��0��r�T�results�threads�
 100  int | None�pathnamec
 101  CsN|r|n|�d|�dt��d��}tj|dd�|durdn|}t|d��x}g}	t|dd�D]2\}
 102  }|d	kr:|d
 103  n|d}t|�d�d
 104  �d�d�}
 105  |�t	|||
 106  �d|
 107  ��||�}|	�
 108  |�q.tjt
 109  |	�ddddd��}t|	�D]}|��|�d�qrWd�n1s�wYWd�dSWd�dS1s�wYdS)Nr5r6T)�exist_okr)�max_workersrrV�imagesr\r[rv������?rZDownloading�2)�length�labelZshow_percentZshow_posra)rr;r��makedirsrrer�split�submitr��appendrfZprogressbar�lenr�result�update)r+r�r/r{r�r|r�r��executor�futuresrj�resr^r0�f�bar�futurer?r?r@�_download_resultsjs,"	����"�r�)�chaincCsdS)zduckduckgo_search CLI toolNr?r?r?r?r@�cli�sr�c
 110  CsNzt�WdSty&}zt�t|�j�d|���WYd}~dSd}~ww)Nz: )r�r�rfZechor�r�)r�r?r?r@�safe_entry_point�s(��r�cCstt�tS)N)�printrr?r?r?r@�version�sr�z-kz
 111  --keywordsztext search, keywords for query)�required�helpz-rz--regionzwt-wtz?wt-wt, us-en, ru-ru, etc. -region https://duckduckgo.com/params)�defaultr�z-sz--safesearch�moderate)�onr��off)r�r�z-tz--timelimit)�drD�m�yzday, week, month, year)r�r�z-mz
 112  --max_resultszmaximum number of resultsz-oz--outputzGcsv, json or filename.csv|json (save the results to a csv or json file))r�z-dz
 113  --downloadFz-download results. -dd to set custom directory)Zis_flagr�r�z-ddz--download-directoryz!Specify custom download directoryz-bz	--backend�auto)r��htmlZlitez-thz	--threadszdownload threads, default=10z-pz--proxyz<the proxy to send requests, example: socks5://127.0.0.1:9150z-vz--verifyz"verify SSL when making the request�region�
 114  safesearch�	timelimit�backend�output�download�download_directory�int�max_resultsc
 115  	Csttt|
 116  �|d�j||||||	d�}t|�}|rt||d|d�|r,t||d|
 117  |||d�|s6|s8t|�dSdSdS)z;CLI function to perform a text search using DuckDuckGo API.�r{r|)r+r�r�r�r�r�ro)r0�r/r{r�r|r�N)r	r
 118  roryrAr�rp)
 119  r+r�r�r�r�r�r�r�r�r�r{r|r-r?r?r@ro�s0��	�rozkeywords for query)ZDayZWeekZMonthZYear)r�z-sizez--size)ZSmallZMediumZLargeZ	Wallpaperz-cz--color)�colorZ
 120  Monochrome�RedZOrangeZYellowZGreenZBlueZPurpleZPinkZBrownZBlackZGrayZTeal�Whitez-typez--type_image)ZphotoZclipartZgif�transparent�linez-lz--layout)ZSquareZTallZWidez-licz--license_image)�anyZPublicZShareZShareCommerciallyZModifyZModifyCommercially�sizer��
 121  type_image�layout�
 122  license_imagecCs|tt|�|d�j||||||||||d�
 123  }t|�}|
 124  r#t||d|
 125  d�|	r0t||d||||
 126  d�|
 127  s:|	s<t|�dSdSdS)z=CLI function to perform a images search using DuckDuckGo API.r�)
 128  r+r�r�r�r�r�r�r�r�r�r��r/r0r�N)r	r
 129  r�ryrAr�rp)r+r�r�r�r�r�r�r�r�r�r�r�r�r�r{r|r-r?r?r@r��s8=��	�r�)r�rDr�zday, week, monthz-resz--resolution�highZstandartz
 130  --duration)ZshortZmedium�longz--license_videosZcreativeCommonZyoutube�
 131  resolution�duration�license_videosc
 132  CsRtt|	�|
 133  d�j||||||||d�}t|�}|r#t||d|d�dSt|�dS)z=CLI function to perform a videos search using DuckDuckGo API.r�)r+r�r�r�r�r�r�r��videosr�N)r	r
 134  r�ryrArp)r+r�r�r�r�r�r�r�r�r{r|r-r?r?r@r�)s�
 135  r�c	CsLtt|�|d�j|||||d�}t|�}|r t||d|d�dSt|�dS)z;CLI function to perform a news search using DuckDuckGo API.r�)r+r�r�r�r��newsr�N)r	r
 136  r�ryrArp)	r+r�r�r�r�r�r{r|r-r?r?r@r�Ts
 137  �r��__main__Zddgs)Z	prog_name)
 138  r+r,r-r.r/r,r0r1r2r3)rBrCr-r.r2r3)rJrCr-r.r2r3)r-r.r2r3)r+r,r2r,)r^r,rzr,r0r,r{r1r|r}r2r3)NNTN)r+r,r�r.r/r,r{r1r�r�r|r}r�r1r2r3)r2r3)r2r,)r+r,r�r,r�r,r�r1r�r,r�r1r�r}r�r1r�r�r�r�r{r1r|r}r2r3)"r+r,r�r,r�r,r�r1r�r1r�r1r�r1r�r1r�r1r�r}r�r1r�r�r�r�r�r1r{r1r|r}r2r3)r+r,r�r,r�r,r�r1r�r1r�r1r�r1r�r�r�r1r{r1r|r}r2r3)r+r,r�r,r�r,r�r1r�r�r�r1r{r1r|r}r2r3),�
 139  __future__rr7�loggingr��concurrent.futuresrrr�pathlibr�urllib.parserrfr�Zduckduckgo_searchr	�utilsr
 140  rr�r�	getLoggerr�r�rhrAr=r<rpryr�r��groupr�r��command�optionZChoicer�ror�r�r�r?r?r?r@�<module>s
 141  ��������	�
 142  ���
 143  ����
 144  
 145  	
 146  
 147  	
 148  
 149  �
 150  
 151  $(���,0"
 152  �