
    i                         d Z ddlmZmZmZ ddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZmZ dddd	d	d
dZddgZdZdZd Zd ZdefdZy)z
Arch Linux Wiki
~~~~~~~~~~~~~~~

This implementation does not use a official API: Mediawiki provides API, but
Arch Wiki blocks access to it.

    )	urlencodeurljoinurlparseN)EngineTraits)language_tag)eval_xpath_getindexeval_xpath_listextract_textsearxng_useragenthttps://wiki.archlinux.org/
Q101445877FHTML)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsitzsoftware wikisTwiki.archlinux.orgc                    |d   j                  d      d   }t        j                  d   j                  |t              }t        j                  d   j                  |d      }d|z   dz   }|d	   d
z
  dz  }|t        k(  r2t        j                  |d      }| d|z   dz   z  } t               |d   d<   n|dk(  rd|z   dz   }| |d|dd}|t        |      z   |d<   |S )Nsearxng_locale-r   wiki_netloctitlezSpecial:Searchhttps:///index.php?pageno      English ()headersz
User-Agentzwiki.archlinuxcn.orgz/wzh/index.php?default)searchr   limitoffsetprofileurl)splittraitscustomget	main_wikiget_languager   r   )	queryparams	sxng_langnetlocr   base_urlr(   eng_langargss	            (/root/searxng/searx/engines/archlinux.pyrequestr9   (   s   '(..s3A6I--.229iHFw'++I7GHEF"]2HX"b(F++IyA3&& +<*=y,'	)	)&):: D y.F5MM    c           	         g }t         j                  j                  | j                        }| j                  d   j                  d      d   }t        j                  d   j                  |t              }d|z   dz   }t        |d      D ]`  }t        |dd      }t        |j                  d	            }|j                  t        ||j                  d
            t        |      |d       b |S )Nr   r   r   r   r   r   z#//ul[@class="mw-search-results"]/liz+.//div[@class="mw-search-result-heading"]/az.//div[@class="searchresult"]href)r*   r   content)lxmlhtml
fromstringtextsearch_paramsr+   r,   r-   r.   r/   r	   r   r
   xpathappendr   )	respr   domr3   r4   r5   resultlinkr=   s	            r8   responserI   E   s    G
))

tyy
)C ""#34::3?BI--.229iHFF"]2H!#'LM 	
"6+XZ[\v||,KLMx&)9:%d+"	
	
 Nr:   engine_traitsc                    ddl m} i | j                  d<   i | j                  d<   ddddd	} |d
d      }|j                  st	        d      t
        j                  j                  |j                        }t        |d      D ]  }t        t        j                  j                  |j                  d      d            }|j                  d      d   }t        |j                  d            j                   }|dk7  rJ|j                  |      }|st#        d|d|d       || j                  d   |<   || j                  d   |<   t%        t        |d            }	|	| j&                  |<    d| j&                  d<   y)uL  Fetch languages from Archlinux-Wiki.  The location of the Wiki address of a
    language is mapped in a :py:obj:`custom field
    <searx.enginelib.traits.EngineTraits.custom>` (``wiki_netloc``).  Depending
    on the location, the ``title`` argument in the request is translated.

    .. code:: python

       "custom": {
         "wiki_netloc": {
           "de": "wiki.archlinux.de",
            # ...
           "zh": "wiki.archlinuxcn.org"
         }
         "title": {
           "de": "Spezial:Suche",
            # ...
           "zh": "Special:搜索"
         },
       },

    r   )r.   r   r   zSpezial:Sucheu   ویژه:جستجوu   特別:検索u   Special:搜索)defajazhr      )timeoutz(Response from Arch Linux Wiki is not OK.z'//a[@class='interlanguage-link-target']langr   )sep_r<   r   zERROR: title tag from r"   z) is unknownz.//spanr!   enN)searx.networkr.   r-   okRuntimeErrorr>   r?   r@   rA   r	   r   babelLocaleparser+   r   r4   printr
   	languages)
rJ   r.   	title_maprE   rF   asxng_tagr4   r   eng_tags
             r8   fetch_traitsrb   ]   se   0 "*,M'$&M! #	I ,a8D77EFF
))

tyy
)CS"KL 4 2 2155=c 2 JK>>#&q)!%%-(//))MM(+EFHUV<BM  /96;M  )(3q)<=,3)4" %.MD!r:   )__doc__urllib.parser   r   r   rY   r>   searx.enginelib.traitsr   searx.localesr   searx.utilsr   r	   r
   r   about
categoriespagingr/   r9   rI   rb    r:   r8   <module>rl      sp    6 5   / &  -"&	 $%
	 	:0:. :.r:   