
    i                     &   U d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	d
ddddZdgZdZdZ	  ej&                  dej(                  ej*                  z        ZdZdZdddddddddddddZeed<   	 d Zd  Zd! Zd"edz  fd#Zy)$z/SoundCloud is a German audio streaming service.    N)
quote_plus	urlencode)parser)html)get)EngineCachehttps://soundcloud.comQ568769z0https://developers.soundcloud.com/docs/api/guideFJSON)websitewikidata_idofficial_api_documentationuse_official_apirequire_api_keyresultsmusicTz$https://api-v2.soundcloud.com/searchzclient_id:"([^"]*)"
   modeldeenesfritnlplpt_BRsv)r   r   r   r   ocr   r   r   szlptpapr   CACHEc           
      6   t         j                  d      }|#t               }|rt         j                  d|       | |d   dz
  t        z  t        t
        |t        j                  |d   j                  d      d   d      d	}t         d
t        |       |d<   |S )Nguest_client_id)keyvaluepageno   language-r   r   )qoffsetlimitfacet	client_id
app_locale?url)
r"   r   get_client_idsetresults_per_pagesoundcloud_facetapp_locale_mapsplit
search_urlr   )queryparamsr$   argss       )/root/searxng/searx/engines/soundcloud.pyrequestr>   9   s     ii 12O'/II+?IC (#a'+;;!!$$((
);)A)A#)Fq)I4PD "l!IdO#45F5MM    c           	         g }| j                         }|j                  dg       D ]T  }|d   dv s|j                  d      }|s t        |j                  d            }|j                  d      |j                  d      g}||d   d	j                  |D cg c]  }|s|	 c}      t	        j
                  |d
         d|z   |j                  d      d}|d   xs |d   d   }	|	xs d |d<   t        |j                  dd      dz        }
|
rt        j                  |
      }
|
|d<   |j                  dd      xs d |d<   |j                  di       j                  d      xs d |d<   |j                  |       W |S c c}w )N
collectionkind)trackplaylistpermalink_urluridescription
label_nametitlez / last_modifiedz%https://w.soundcloud.com/player/?url=likes_count)r2   rI   contentpublishedDate
iframe_srcviewsartwork_urluser
avatar_url	thumbnaildurationr   i  )secondslengthplayback_countrO   	full_nameauthor)
jsonr   r   joinr   parseintdatetime	timedeltaappend)respr   dataresultr2   rF   rL   cresrS   rV   s              r=   responserf   R   s   G99;D((<,  &>22**_-CVZZ./C

=)

<(G
  ::'&?QQq&?@!'f_.E!FEKM2C }-M1MI(0DCJ2T9:F!++F; &H!::&6:BdCL"JJvr266{CKtCMNN37 : N '@s   E?E?c                      t        | d         ay )Nname)r   r"   )engine_settingss    r=   initrj   v   s    /0Er?   returnc                     d} d}t        |d      }|j                  st        j                  d|       | S t	        j
                  |j                        }|j                  d      }|D cg c]  }||j                  d       }}|d d d   D ]  }t        |      }|j                  st        j                  d	|       1t        j                  |j                  j                               }|sat        |j                               s{|j                         d
   }  n | rt        j                  d|        nt        j                  d       | xs d S c c}w )N r	      )timeoutzinit: GET %s failedz$//script[contains(@src, '/assets/')]srczinit: app_js GET %s failedr   z*using client_id '%s' for soundclud queriesz-missing valid client_id for soundclud queries)http_getokloggererrorr   
fromstringrL   xpathr   cid_researchdecodelengroupsinfowarning)r/   r2   ra   treescript_tagstagapp_js_urlscidss           r=   r3   r3   {   s"   I
"CC#D77*C0??4<<(D**CDK-8LcCO3775>LKL 4R4   }wwLL5s;}}T\\0023C&a(I @)LFG- Ms   *E2E) __doc__rer^   urllib.parser   r   dateutilr   lxmlr   searx.networkr   rr   searx.enginelibr   about
categoriespagingr9   compileIUrx   r5   r6   r7   __annotations__r>   rf   rj   strr3    r?   r=   <module>r      s    5 	  .   ) ' ("T	 Y
	3
 
*BDD244K	8   








  2!H1
"sTz "r?   