
    iv                         U d Z ddlmZ ddlmZmZ ddlZddlmZ ddlm	Z	 ddd	d
dddZ
dZeed<   	 dZ	 dZ	 dZ	 dZ	 dZ	 d
Zd
Z ed       ed       ed       ed      dZd Zd Zy)aF  .. sidebar:: info

  - `builtwith.com Discourse <https://trends.builtwith.com/websitelist/Discourse>`_

Discourse is an open source Internet forum system.  To search in a forum this
engine offers some additional settings:

- :py:obj:`base_url`
- :py:obj:`api_order`
- :py:obj:`search_endpoint`
- :py:obj:`show_avatar`
- :py:obj:`api_key`
- :py:obj:`api_username`

Example
=======

To search in your favorite Discourse forum, add a configuration like shown here
for the ``paddling.com`` forum:

.. code:: yaml

   - name: paddling
     engine: discourse
     shortcut: paddle
     base_url: 'https://forums.paddling.com/'
     api_order: views
     categories: ['social media', 'sports']
     show_avatar: true

If the forum is private, you need to add an API key and username for the search:

.. code:: yaml

   - name: paddling
     engine: discourse
     shortcut: paddle
     base_url: 'https://forums.paddling.com/'
     api_order: views
     categories: ['social media', 'sports']
     show_avatar: true
     api_key: '<KEY>'
     api_username: 'system'


Implementations
===============

    )	urlencode)datetime	timedeltaN)parser)gettextzhttps://discourse.org/	Q15054354zhttps://docs.discourse.org/TFJSON)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsbase_urlz/search.jsonlikes    )days      im  )dayweekmonthyearc                    t        |       dk  ry | dt         g}|j                  d      }|rAt        j                         t
        |   z
  }|j                  d|j                  d      z          dj                  |      |d   d}t         t         d	t        |       |d
<   ddd|d<   t        dk7  rt        |d   d<   t        dk7  rt        |d   d<   |S )N   zorder:
time_rangezafter:z%Y-%m-%d pageno)qpage?urlz.application/json, text/javascript, */*; q=0.01XMLHttpRequest)AcceptzX-Requested-Withheadersr   zApi-KeyzApi-Username)len	api_ordergetr   nowAGO_TIMEDELTAappendstrftimejoinr   search_endpointr   api_keyapi_username)queryparamsr    r   
after_dateargss         (/root/searxng/searx/engines/discourse.pyrequestr7   e   s    
5zQ	&$%AL)J\\^mJ&??
	J//
;;< XXa[x D
  j 19T?2CDF5MB,F9
 "}'.y)$r,8y.)M    c           	      *   g }| j                         }d|j                         vrg S i }|d   D ]
  }|||d   <    |d   D ]  }|j                  |d   i       }t         d|d    }|j                  dd      rt	        d      n
t	        d      }|j                  d	d
      }	t        j                  |d         }
g }|j                  d|j                  dd      z          t        |	      dkD  r|j                  t	        d       d|	        |j                  d      r|j                  t	        d             nt        |	      dkD  r|j                  |       |t        j                  |d         t        j                  |j                  dd            dj                  |      |
d|id}|j                  dd      j                  dd      }t        r|rt        |z   |d<   |j                  |        |j                  dt        |d         i       |S )Ntopicspostsidtopic_idz/p/closedr   openposts_countr   
created_at@usernamer   commentsz: has_accepted_answeransweredtitleblurbz | )r#   rG   contentmetadatapublishedDateupstreamavatar_templatez{size}96	thumbnailnumber_of_results)jsonkeysr)   r   r   r   parser,   inthtmlunescaper.   replaceshow_avatarr'   )respr   	json_datar:   itempostresultr#   statusrD   rK   rJ   avatars                r6   responser`      s   G		IINN$44	F(# "!tDz" '"  D,b1
#d4j\*&,jj2&>"GFO::mQ/VL%9:dhhz2667x=1OOwz232hZ@A::+,OOGJ/0]QOOF# ]]6'?3}}TXXgr%:;

8,*!6*
 +R0884H6"*V"3F;vA D NN'Yx-@)ABCNr8   )__doc__urllib.parser   r   r   rU   dateutilr   flask_babelr   aboutr   str__annotations__r/   r(   rX   r0   r1   pagingtime_range_supportr+   r7   r`    r8   r6   <module>rk      s   0d # (    ("?	 #  ! 
 	 X 0
 % *	  !1B3	>1r8   