
    K^i                     B   d dl Z d dl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mZ d dlZd dlZdej                   vr! ej"                  d      Zeej                   d<   dej                   vrd dlZeej                   d<   	 ej(                  j+                  d	       i Zd
 Z G d dee      Z G d de      ZddZedk(  rNd dlZ ej<                         ZejA                  de!dd       ejE                         Z# ee#jH                         yy# e$ r Y {w xY w)    N)
HTTPServerBaseHTTPRequestHandler)ThreadingMixIn)SourceFileLoader)urlparseparse_qsbasezbase.spiderutf-8)encodingc                    | t         v r
t         |    }nt        j                  j                  t        j                         |  d      }t        j                  j                  |      st        d|       t        | |      j                         }|t         | <   |j                         }t        |d      r|j                  d       t        d|         |S )Nz.pyzSpider file not found: init )extendu   [载入] 已初始化 Spider: )_spider_module_cacheospathjoingetcwdexistsFileNotFoundErrorr   load_moduleSpiderhasattrr   print)spider_namemoduler   spider_instances       &/storage/emulated/0/lz/py/sy/server.pyload_spiderr   $   s    **%k2ww||BIIKK=)<=ww~~d##&=dV$DEE!+t4@@B,2[) mmoO'B'	*;-
89    c                       e Zd ZdZdZy)ThreadingHTTPServerT
   N)__name__
__module____qualname__daemon_threadstimeout r    r   r"   r"   :   s    NGr    r"   c                       e Zd Zd Zy)SpiderHandlerc                 @   | j                   j                  d       t        | j                        j                  }t        |      }i }|j                  dd g      d   }|j                  dd g      d   }|j                  ddg      d   }|j                  dd g      d   }|j                  dd g      d   }|j                  d	d g      d   }	|j                  d
d g      d   }
|j                  dd g      d   }i }|rL	 t        j                  |      j                  d      }|j                         rt        j                  |      ni }|s| j                  dd       y 	 t        |      }|s|s|s|	r
|
r|s|s|s|	s |j                   |
      }d}ny|r |j"                  |g      }d}na|r |j$                  d|d       }d}nH|	r |j&                  |	d      }d}n/|r |j(                  ||d |      }d}n |j                   |
      }d}| j+                  d       | j-                  dd       | j/                          	 | j0                  j3                  t        j4                  |d      j7                  d             	 d| d| d| }t;        |j7                  dd      j                  d             y # t        $ r i }Y zw xY w# t8        $ r t;        d       Y y w xY w# t        $ r}t;        d |       Y d }~y d }~ww xY w# t8        $ r t;        d       Y y t        $ r}}| j+                  d!       | j/                          	 | j0                  j3                  t=        |      j7                  d             n# t        $ r Y nw xY wt;        d"|        Y d }~y d }~ww xY w)#Nr#   spr   tpg1idsplaywdfilterextr
   i  z&Missing 'sp' parameter (e.g. ?sp=Iktv))r4   homedetailr   F)keyquicksearchcategory   zContent-typezapplication/json; charset=utf-8)ensure_asciiu6   [警告] 客户端已断开连接（BrokenPipeError）u   [访问] Spider=u	   , 类型=z	, params=ignoreu   [日志错误]i  u	   [错误] )
connection
settimeoutr   r   queryr   getbase64	b64decodedecodestripjsonloads	Exception
send_errorr   homeContentdetailContentplayerContentsearchContentcategoryContentsend_responsesend_headerend_headerswfilewritedumpsencodeBrokenPipeErrorr   str)selfrA   paramsresponser-   r.   r/   r1   r2   r3   filter_paramr5   ext_objext_jsonspideraccess_typelog_line	log_errores                      r   do_GETzSpiderHandler.do_GETC   s   ""2&#))%ZZtf%a(JJsTF#A&ZZse$Q'jj'*zz&4&)!,ZZtf%a(zz(TF3A6 jj'*!++C077@2:..2B$**X. OOC!IJ9	# _F
 c$r|TU^ajnwy-6--\B$/6//6&/6//D$?$/6//BeD&1611!RwG(-6--\B$
 s#^-NO

  H5!I!P!PQX!YZ3-bT;-yQWPXYhoogx8??HIg  X # NO  3&	223  	LJK 	#s#

  Qw!78 IaS/""	#s   =AJ4 CL >?K >5K  4KKKL KL  	K?)K:5L :K??L NN !N3M65N6	N?NNNNN)r$   r%   r&   rd   r)   r    r   r+   r+   A   s    U#r    r+     c                     	 t        | |ft              }t        d|  d| d       |j                          y # t        $ r}t        d|        Y d }~y d }~ww xY w)Nu/   [提示] 动态 Spider 服务已启动: http://:z/?sp=YourSpideru   [错误] 服务启动失败: )r"   r+   r   serve_foreverrI   )hostportserverrc   s       r   
run_serverrl      s^    3$dD\=A?vQtfO\] 3-aS1223s   47 	A AA__main__z--portu	   端口号)typedefaulthelp)rj   )z0.0.0.0re   )%r   sysrG   	threadinghttp.serverr   r   socketserverr   importlib.machineryr   urllib.parser   r   typesrC   modules
ModuleTypebase_moduler_   stdoutreconfigurerI   r   r   r"   r+   rl   r$   argparseArgumentParserparseradd_argumentint
parse_argsargsrj   r)   r    r   <module>r      s    	 
   : ' 0 +  
 
"%""6*K%CKK#!'CKK
	JJG,  ,.* W#* W#x3 z$X$$&F
sD{KDDII Y  		s   D DD