
    #`i'                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
  G d d      Z G d d      Z G d	 d
e      Zy)    N)etree)ABCMeta)SourceFileLoaderc                   .    e Zd Zedd       Zed        Zy)Proxyc                      y)Nzhttp://127.0.0.1:9978 )locals    &/storage/emulated/0/lz/py/sy/spider.pygetUrlzProxy.getUrl   s    &    c                       y)Ni&  r	   r	   r   r   getPortzProxy.getPort   s    r   NT)__name__
__module____qualname__staticmethodr   r   r	   r   r   r   r      s(    ' '  r   r   c                   0    e Zd Z G d d      Zed        Zy)Pythonc                       e Zd Zd Zd Zd Zy)Python.Platformc                 r    t         j                  j                  t        j                         d      | _        y )Npy_cache)ospathjoingetcwd	cache_dirselfs    r   __init__zPython.Platform.__init__   s    WW\\"))+zBDNr   c                     | S Nr	   r    s    r   getApplicationzPython.Platform.getApplication   s    Kr   c                 *      G  fdd      } |       S )Nc                       e Zd Z fdZy)*Python.Platform.getCacheDir.<locals>.Cachec                     j                   S r$   )r   )
inner_selfr!   s    r   getAbsolutePathz:Python.Platform.getCacheDir.<locals>.Cache.getAbsolutePath"   s    >>)r   N)r   r   r   r+   r    s   r   Cacher(   !   s    *r   r,   r	   )r!   r,   s   ` r   getCacheDirzPython.Platform.getCacheDir    s    * * 7Nr   N)r   r   r   r"   r%   r-   r	   r   r   Platformr      s    	C		r   r.   c                  *    t         j                         S r$   )r   r.   r	   r   r   getPlatformzPython.getPlatform&   s      r   N)r   r   r   r.   r   r0   r	   r   r   r   r      s       ! !r   r   c                        e Zd ZdZd Z fdZd"dZd Zd Zd#dZ	d Z
d$d	Zd%d
Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd&dZd Zd Zd'dZd(dZd Zd Zd Zd)dZd Z d Z!d  Z"d! Z# xZ$S )*SpiderNc                     d| _         y N extendr    s    r   r"   zSpider.__init__1   s	    r   c                 t    | j                   r| j                   S t        | 	  |       | _         | j                   S r$   )	_instancesuper__new__)clsargskwargs	__class__s      r   r;   zSpider.__new__4   s.    ==== !GOC0CM== r   c                     || _         y r$   r6   )r!   r7   s     r   initzSpider.init;   s	    r   c                     g g dS )N)classlistr	   )r!   filters     r   homeContentzSpider.homeContent?   s    R((r   c                     g S r$   r	   r    s    r   homeVideoContentzSpider.homeVideoContentB       	r   c                 >    t        d| d| d|        dddgg |dS )Nu)   [调试] categoryContent called with cid=z, page=z, ext=u   示例分类1)	type_nametype_id)rC   rD   page)print)r!   cidrN   rE   exts        r   categoryContentzSpider.categoryContentF   s7    9#gdV6RUQVWX(63GHRT^bccr   c                     d|ddgiS )NrD   u   示例视频vod_idvod_namer	   )r!   idss     r   detailContentzSpider.detailContentK   s    C^DEFFr   c                     ddd| dgiS )NrD   rK   u   搜索结果: rT   r	   )r!   keyquickpgs       r   searchContentzSpider.searchContentN   s    C~cU5KLMNNr   c                 p    |t        | d      r| j                  }t        d| d| d|        d| dddS )	Nidu(   [调试] playerContent called with flag=z
, flag_id=z, vipFlags=zhttp://example.com/.m3u8r   )urlparse)hasattrr_   rO   )r!   flagflag_idvipFlagss       r   playerContentzSpider.playerContentQ   sL    ?wtT2ggG8j	Q\]e\fgh,WIU;aHHr   c                     i S r$   r	   r!   ra   s     r   liveContentzSpider.liveContentX   rI   r   c                     i S r$   r	   )r!   params     r   
localProxyzSpider.localProxy[   rI   r   c                 $    |j                  d      S )N)z.mp4r`   )endswithri   s     r   isVideoFormatzSpider.isVideoFormat^   s    ||-..r   c                      y)NFr	   r    s    r   manualVideoCheckzSpider.manualVideoChecka   s    r   c                     i S r$   r	   )r!   actions     r   rt   zSpider.actiond   rI   r   c                      y r$   r	   r    s    r   destroyzSpider.destroyg   s    r   c                      y)Nr2   r	   r    s    r   getNamezSpider.getNamej   s    r   c                     g S r$   r	   r    s    r   getDependencezSpider.getDependencem   rI   r   c                 @    | j                  |      j                         S r$   )
loadModuler2   )r!   names     r   
loadSpiderzSpider.loadSpiderq   s    t$++--r   c                    t         j                         j                         j                         j	                         }t
        j                  j                  || d      }t
        j                  j                  |      s5t
        j                  j                  t        j                         | d      }t        ||      j                         S )Nz.py)r   r0   r%   r-   r+   r   r   r   existsr   r   load_module)r!   r}   r   r   s       r   r|   zSpider.loadModulet   s    &&(779EEGWWY	ww||I$s|4ww~~d#77<<		vS\:Dd+7799r   c                 X    t        j                  ||      }|r|j                  |      S dS r4   )researchgroup)r!   regsrcr   ms        r   regStrzSpider.regStr|   s'    IIc3!"qwwu~**r   c                 Z    t        j                  d      }t        j                  |d|      S )Nz<.*?>r5   )r   compilesubr!   r   cleans      r   removeHtmlTagszSpider.removeHtmlTags   s#    

7#vveR%%r   c                 4    t        j                  dd|      }|S )Nu&   [😀-🙏🌀-🗿🚀-🛿🇠-🇿]r5   )r   r   r   s      r   	cleanTextzSpider.cleanText   s    oqsuxyr   c	           
      N    t        j                  ||||||||      }	d|	_        |	S )N)paramscookiesheaderstimeoutverifystreamallow_redirectsutf-8)requestsgetencoding)
r!   ra   r   r   r   r   r   r   r   rsps
             r   fetchzSpider.fetch   s5    ll3vwY`iox~  Q`  a
r   c                 R    t        j                  |||||||||	|

      }d|_        |S )N)	r   datajsonr   r   r   r   r   r   r   )r   postr   )r!   ra   r   r   r   r   r   r   r   r   r   r   s               r   r   zSpider.post   sB    mmCTg_fpw  AG  PV  hw  x
r   c                 ,    t        j                  |      S r$   )r   HTML)r!   contents     r   htmlzSpider.html   s    zz'""r   c                 ,    t        j                  |      S r$   )r   loadsr!   ss     r   str2jsonzSpider.str2json   s    zz!}r   c                 0    t        j                  |d      S NF)ensure_ascii)r   dumpsr   s     r   json2strzSpider.json2str   s    zz!%00r   c                 2    t         j                  |       dS )Nz?do=py)r   r   )r!   r
   s     r   getProxyUrlzSpider.getProxyUrl   s    ,,u%&f--r   c                     t        |t        t        f      r!t        t	        j
                  |d             y t        |        y r   )
isinstancedictrD   rO   r   r   )r!   msgs     r   logz
Spider.log   s,    cD$<($**Su56SEOr   c                      y r$   r	   r!   rZ   s     r   getCachezSpider.getCache   s    r   c                      yNsucceedr	   )r!   rZ   values      r   setCachezSpider.setCache       r   c                      yr   r	   r   s     r   delCachezSpider.delCache   r   r   )r5   )NrK   NN)rK   )NN)   )NNN   TFT)	NNNNNr   TFTr   )%r   r   r   r9   r"   r;   rA   rF   rH   rR   rX   r]   rg   rj   rm   rp   rr   rt   rv   rx   rz   r~   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r?   s   @r   r2   r2   .   s    I!)d
GOI/.:+&

#1.r   r2   )	metaclass)r   r   r   timer   lxmlr   abcr   importlib.machineryr   r   r   r2   r	   r   r   <module>r      s?    	 	      0 ! !.~w ~r   