
    i
              	       &   U d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ ddlmZ e j                  rd d	lmZ d d
lmZ d dlmZmZ d dlmZ g Zeed<   dddededeez  fdZ G d de	      Z ej<                  d      Zd Z defdZ!y)    N)	parse_qsl)gettext)get_setting)Plugin
PluginInfo)sxng_request   )log)SearchWithPlugins)SXNG_Request)ResultLegacyResult)	PluginCfgahmia_blacklistresultzResult|LegacyResult
field_nameurl_srcreturnc                     |dk7  ryt        | j                        }|rVt        |      dk  rHdD ]  }|j                  |      } t	               |z   }d| vr|| d<   t        j                  d|||       |S y)zReturns bool ``True`` to use URL unchanged (``False`` to ignore URL).
    If URL should be modified, the returned string is the new URL to use.urlT2   )/z.pdfz.xmlz/fullz/metaz	/abstractdoiz(oa_doi_rewrite: [URL field: %s] %s -> %s)extract_doi
parsed_urllenremovesuffixget_doi_resolverr
   debug)r   r   r   r   suffixnew_urls         -/root/searxng/searx/plugins/oa_doi_rewrite.pyfilter_url_fieldr#      s     U
f''
(C
s3x"}J 	+F""6*C	+"$s*F5M		<j'SZ[    c                   @     e Zd ZdZdZd fdZddddd	d
defdZ xZS )
SXNGPluginz-Avoid paywalls by redirecting to open-access.oa_doi_rewriter   c                     t         |   |       t        | j                  t	        d      t	        d      d      | _        y )NzOpen Access DOI rewritezTAvoid paywalls by redirecting to open-access versions of publications when availablegeneral)idnamedescriptionpreference_section)super__init__r   r*   r   info)selfplg_cfg	__class__s     r"   r/   zSXNGPlugin.__init__2   s8    !ww23 vw(	
	r$   requestr   searchr   r   r   c                 F    |j                   r|j                  t               y)NT)r   filter_urlsr#   )r1   r4   r5   r   s       r"   	on_resultzSXNGPlugin.on_result;   s     /0r$   )r2   r   r   N)	__name__
__module____qualname____doc__r*   r/   boolr8   __classcell__)r3   s   @r"   r&   r&   -   s;    7	B
 $ 	
 
r$   r&   z10\.\d{4,9}/[^\s]+c                     t         j                  | j                        }|r|j                  d      S t	        | j
                        D ]/  \  }}t         j                  |      }|s|j                  d      c S  y )Nr   )regexr5   pathgroupr   query)r   m_vs       r"   r   r   I   sd    SXXAwwqz#))$ 1LLO771: r$   c                      t        d      } t        j                  j                  d      d   }|| vrt        d      }| |   S )Ndoi_resolversdoi_resolverr   default_doi_resolver)r   r   preferences	get_value)rH   selected_resolvers     r"   r   r   T   sH    0M$00::>J1M-'(>?*++r$   )"typingreurllib.parser   flask_babelr   searxr   searx.pluginsr   r   searx.extended_typesr   _corer
   TYPE_CHECKINGsearx.searchr   r   searx.result_typesr   r   r   r   list__annotations__strr=   r#   r&   compiler@   r   r    r$   r"   <module>r^      s     	 "   , - 	.17'  2  c VZ]`V` ( 2 	

(),# ,r$   