
    i                         d Z ddlZddlmZ ddl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dZdZdgZdZd Zd Zd ZdefdZy)znOdysee_ is a decentralized video hosting platform.

.. _Odysee: https://github.com/OdyseeTeam/odysee-frontend
    N)datetime)	urlencode)EngineTraits)language_taghttps://odysee.com/
Q102046570FJSON)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsT   videosz#https://lighthouse.odysee.tv/searchc                     ddddd}|d   dz
  t         z  }| t         |dd	d
}t        j                  |d   d       }|||d<   |d   |v r||d      |d<   t         dt	        |       |d<   |S )Ntodaythisweek	thismonththisyear)dayweekmonthyearpageno   z=channel,thumbnail_url,title,description,duration,release_timevideo)ssizefrominclude	mediaTypesearxng_localelanguage
time_rangetime_filter?url)results_per_pagetraitsget_languagebase_urlr   )queryparamstime_range_dictstart_indexquery_paramslangs         %/root/searxng/searx/engines/odysee.pyrequestr4   $   s    	O (#a'+;;K RL v&67>D#'Z l.&5f\6J&K]#j)L"9!:;F5MM    c                     t        |       }t        j                  |      }|j                  rt        j                  d|      S t        j                  d|      S )Nz%H:%M:%Sz%M:%S)inttimegmtimetm_hourstrftime)durationsecondslengths      r3   format_durationr?   A   sB    (mG[[!F~~}}Z00==&))r5   c                    | j                         }g }|D ]  }|d   }|d   }|d   }|d   }|d   xs d}|d   }	|d   }
|d	   }t        j                  |
j                  d
      d   d      }t        j                  |j                               }d| d| }d| d| }d| }t        |      }|j                  ||||	||||dd	        |S )NnameclaimIdtitlethumbnail_urldescription channelrelease_timer<   Tr   z%Y-%m-%dr   :zhttps://odysee.com/$/embed/z@https://thumbnails.odycdn.com/optimize/s:390:0/quality:85/plain/zvideos.html)	rC   r(   contentauthorpublishedDater>   	thumbnail
iframe_srctemplate)jsonr   strptimesplitfromtimestamp	timestampr?   append)respdatar   itemrA   claim_idrC   rD   rE   rG   rH   r<   release_dateformatted_dater(   
iframe_urlodysee_thumbnailformatted_durations                     r3   responser`   I   s   99;DG 
F|	?W_-=)/Ry/N+
#((););C)@)CZP!//0F0F0HI#D68*524&(D
]^k]lm,X6&!!/,-()
	
%
@ Nr5   engine_traitsc           	      ,   ddl m}  |dd      }|j                  st        d      |j                  j                  d      dd	 D ]  }|j                         j                  d
      d   j                  dd      }	 t        t        j                  j                  |d            }| j                  j                  |      }|r||k7  rt        d|d|d|       || j                  |<    y# t        j                  $ r t        d|z         Y w xY w)z4
    Fetch languages from Odysee's source code.
    r   )getzohttps://raw.githubusercontent.com/OdyseeTeam/odysee-frontend/master/ui/constants/supported_browser_languages.js   )timeoutzResponse from Odysee is not OK.
r   z: 'rF   -)sepzERROR: %s is unknown by babelzCONFLICT: babel z --> z, N)searx.networkrc   okRuntimeErrortextrS   stripreplacer   babelLocaleparseUnknownLocaleErrorprint	languages)ra   rc   rW   linelang_tagsxng_tagconflicts          r3   fetch_traitsr{   p   s    "yD 77<==		%a+ 5::<%%d+A.66sB?	#ELL$6$6xS$6$IJH
 !**..x88#8XVW,4)5
 '' 	1H<=	s   <*C//!DD)__doc__r8   r   urllib.parser   rq   searx.enginelib.traitsr   searx.localesr   aboutpagingtime_range_supportr)   
categoriesr,   r4   r?   r`   r{    r5   r3   <module>r      sv   
   "  / & %"&	 
  Z
 1:*$N5 5r5   