
    ah"                         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	 ej
                            d           d dlmZ  G d de          ZdS )    N)AES)PyQueryz..)Spiderc                        e Zd Zg dZd ZddZd Zd Zd Zd Z	d	 Z
d
edefdZdedefdZdedefdZdedefdZd Zd Zd Zd dZd Zd Zd! fd	Zd Z xZS )"r   )z.video-itemz.video-list .itemz
.list-itemz
.post-itemc                     dS )Nu   黑料不打烊 selfs    1   /storage/emulated/0/纯福利/PY1/有声小说.pygetNamezSpider.getName   s    --     c                     d S Nr   )r
   extends     r   initzSpider.init   s      r   c                     i ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'}d(d) |                                 D             iS )*Nu   最新黑料hlcgu   今日热瓜jrrsu   每日TOP10mrrbu   周报精选zbjxu   月榜热瓜ybrgu   反差女友fczqu   校园黑料xycgu   网红黑料whhlu   明星丑闻mxcwu   原创社区ycsqu   推特社区ttsqu   社会新闻shxwu   官场爆料gchlu   影视短剧ysdju   全球奇闻qqqwu   黑料课堂hlktu   每日大赛mrdsjqxsttzzsyzydjbl)u   激情小说u   桃图杂志u   深夜综艺u   独家爆料classc                     g | ]
\  }}||d S ))	type_nametype_idr   ).0kvs      r   
<listcomp>z&Spider.homeContent.<locals>.<listcomp>   s$    QQQsqQ33QQQr   )items)r
   filter
cateManuals      r   homeContentzSpider.homeContent   s    bN6  b.  bf  bUcdj  bky  {A  b  BP  QW  b  Xf  gm  b  n|  }C  b  DR  SY  b  Zh  io  b  p~  E  b  FT  U[  b  \j  kq  b  r@  AG  b  HV  W]  b  ^l  ms  b  tB  CI  b  Y_  ou  EK  [a  b  b  b
QQj>N>N>P>PQQQRRr   c                     i S r   r   r	   s    r   homeVideoContentzSpider.homeVideoContent   s    Rxr   c                     t          |          dk    rd| dnd| d| d}|                     |          }||ddddS )	N   https://heiliao.com//z/page/i'  Z   i?B )listpage	pagecountlimittotal)intget_list)r
   tidpgr2   r   urlvideoss          r   categoryContentzSpider.categoryContent   sa    ,/GGQJJ)3))))<cSV<c<c^`<c<c<c}}S!!B46RRRr   c                 >   	 |                     d          rd|z   }n|                     d          rd|z   }t          j        |ddddd	
          }|j        dk    rdS t	          j        dt          j        d                              |j                  S #  Y dS xY w)N//https:r:   https://heiliao.comsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.7049.96 Safari/537.36r9   z
User-AgentReferer   Fheaderstimeoutverify   r      f5d965df75336270   97b60394abc2fbe1)	
startswithrequestsgetstatus_coder   newMODE_CBCdecryptcontent)r
   rE   rs      r   fetch_and_decrypt_imagezSpider.fetch_and_decrypt_image   s    	~~d## CCC$$B)>s)BSl3  6k  vL  (M  (M  VX  `e  f  f  fA}c!!7.s|<OPPXXYZYbcccssss   AB 7B Bc                     	 t          j        d|                    d          pd          }|r|                    d          ndS #  Y dS xY w)Nz2load(?:Share)?Img\s*\([^,]+,\s*['\"]([^'\"]+)['\"]onloadr   r8   )researchattrgroup)r
   nodems      r   _extract_img_from_onloadzSpider._extract_img_from_onload   sR    	iMtyyYaObObOfdfhhA !(1771:::b(RRRs   AA A
rE   returnc                 f    |pd                                 t          fddD                       S )Nr   c              3       K   | ]}|v V  	d S r   r   )r-   xus     r   	<genexpr>z)Spider._should_decrypt.<locals>.<genexpr>#   s'      'r'r1Q'r'r'r'r'r'rr   )zpic.gylhaa.cnznew.slfpld.cnz/upload_01/z/upload/)lowerany)r
   rE   rn   s     @r   _should_decryptzSpider._should_decrypt"   s;    8



C'r'r'r'r7q'r'r'r$r$rrr   rn   c                 v    |sdS |                     d          rd|z   S |                     d          rd|z   S |S )Nr   rI   rJ   r:   rK   )rW   )r
   rn   s     r   _abszSpider._abs$   sI    rr<<.HQJ.<<:#8#::r   sc                     t          j        |pd                                                                          S #  Y dS xY wNr   )base64	b64encodeencodedecoder
   ru   s     r   e64z
Spider.e64)   :    #QVOO$5$566==???RRR	   9; A c                     t          j        |pd                                                                          S #  Y dS xY wrw   )rx   	b64decoderz   r{   r|   s     r   d64z
Spider.d64,   r~   r   c                 R   |dn+|                     d          p|                     d          pd}|dn|                     |          }|p|}|rD|s|                     |          r-|                                  d|                     |           dn|                     |          S )Nr   srczdata-srcz&url=z&type=hlimg)re   ri   rr   getProxyUrlr}   rt   )r
   img_nodern   encts        r   _imgzSpider._img/   s    ""X]]5%9%9%YHMM*<U<U%YWY!BBt'D'DX'N'N
(FG|C|SWSgSghiSjSj|$""$$CC488A;;CCCCptpypyz{p|p||r   c                    g }| j         D ]} ||                                          D ]}|                    d                                          }|s,|                    d                              d          }|sW|                    |                     |          ||                     |                    d                    |                    d                                          pdd           |r n|S )Nz.title, h3, h4, .video-titleahrefimgz!.date, .time, .remarks, .durationr   )vod_idvod_namevod_picvod_remarks)	SELECTORSr1   findtextre   appendrt   r   )r
   rootvidsselittitlelinks          r   _parse_itemszSpider._parse_items4   s@   > 	 	Cd3iioo'' s sgg<==BBDD%XWWS\\&&v..$HdiiooQUQZQZ[][b[bch[i[iQjQjy{  zA  zA  Be  zf  zf  zk  zk  zm  zm  zq  oq  r  r  s  s  s  sMEEMr   c           	      
   |d         }|                     d          r|nd| }|                     |          }|sdg iS d|_        |j        }t	          |          }n	#  d }Y nxY wt	          |j                  }n	#  d }Y nxY w|r |d                                          ndpd}d|v r|                    dd          }d}	|r |d	                              d
          }
|
rB|
                    d          s*|
                    d          s|
                    d          r|
}	n| 	                     |d                    }	d}|rG |d                              d
          pd}|s% |d                                          d d         }g g }}|rt           |d                                                    D ]\  }}|                    d          }|s|                    dd                              dd                              dd                              dd                              dd                              dd                              dd                              dd          }t          j        |                              d i           pi                     d!d          }n5#  t          j        d"|          }|r|                    d#          nd}Y nxY w|r[|                    d$d%          }|                     |          }|                    d&|d#z               |                    |           |sd'D ]}t          j        ||          D ]i}|                     |          }|                    d&t+          |          d#z               |                    |           t+          |          d(k    r nj|r n|sg d)}|D ]}t          j        ||          }|D ]}d*|v r|                     d+          rd,|z   }n5|                     d%          rd|z   }n|                     d          sd-|z   }|                    d&t+          |          d#z               |                    |           t+          |          d(k    r n|r n|s*|                    d.           |                    d/           d|||	|d0                    |          d0                    |          d1giS )2Nr   httprK   r<   zutf-8r   r   u    - 黑料网zmeta[property="og:image"]r^   z.pngz.jpgz.jpegz.video-item-img imgzmeta[name="description"]z.contentrT   z.dplayerconfigz&quot;"z&#34;z&amp;&z&#38;z&lt;<z&#60;z&gt;>z&#62;videorE   z"url"\s*:\s*"([^"]+)"r8   z\/r:   u   视频)z!https://hls\.[^"\']+\.m3u8[^"\']*z'https://[^"\']+\.m3u8\?auth_key=[^"\']+z//hls\.[^"\']+\.m3u8[^"\']*   )z-video[\s\S]{0,500}?url[\s"\'`:=]+([^"\'`\s]+)zvideoUrl[\s"\'`:=]+([^"\'`\s]+)z*src[\s"\'`:=]+([^"\'`\s]+\.m3u8[^"\'`\s]*)z.m3u8rI   rJ   zhttps://u   示例视频zhttps://hls.obmoti.cn/videos5/b9699667fbbffcd464f8874395b91c81/b9699667fbbffcd464f8874395b91c81.m3u8?auth_key=1760372539-68ed273b94e7a-0-3a53bc0df110c5f149b7d374122ef1ed&v=2z$$$)r   r   r   vod_contentvod_play_fromvod_play_url)rW   fetchencodingr   pqr^   replacere   endswithr   	enumerater1   jsonloadsrY   rc   rd   rf   rt   r   findalllenjoin)r
   arrayrC   rE   rsp	html_text	root_textroot_contentr   picogdetail	play_fromplay_urlipcru   rn   rh   patjs_patternspatternjs_urlsjs_urls                            r   detailContentzSpider.detailContent?   sx   !Hv 6 6V;VQT;V;VSJJsOO$&$sxYmmIIyyyCKLL D|||+4;yy!!&&(((@b
5
 
 u}}^B'G'G 	Ay455::9EEB Abkk&)) ABKK,?,? A"++gBVBV A\^X[X[YYyy)>??@@ 	D9788==iHHL"FC:!6!6!;!;!=!=dsd!C&b(	 	H j!9!9!?!?!A!ABB H H!&&""!yy#..66wsCCKKGTWXX``ahilmmuuv|  ~A  B  B  J  J  KR  SV  W  W  _  _  `f  gj  k  k  s  s  t{  |  @  @A  EI  EO  PQ  ER  ER  EV  EV  W^  _a  Eb  Eb  Ef  df  Dk  Dk  lq  rt  Du  Du  BC  BCV#;A>>qaAVTVqqq Hiic**ATYYq\\1$$^ac^^444X__Q5G5G5G 	" G " "C	22 . .AiillA9#3#34OS^^A=M4O4O#P#P#PQYQ`Q`abQcQcQc8}}a'''!EE! 	" \  \  \K& 	" 	"
7955% 2 2F&&!,,T22 T(6/66#..s33 T;PQW;WFF!'!2!26!:!:S*VBS6!(()D#i..2B)D)DEEEhooV\F]F]F]x==!++EE!EE! 	n^,,,X__  >m  .n  .n  .nRXinisist}i~i~  OT  OY  OY  Zb  Oc  Oc  d  d  e  f  	fs%   A A$'A< <B C K0K31c                     |                      d|           }|sdg iS d|                     t          |j                            iS )Nz&https://heiliao.com/index/search?word=r<   r   r   r   r   )r
   keyquickrD   r   s        r   searchContentzSpider.searchContentr   sL    JJEEEFF$&$d''385566r   c                     dd|ddddS )Nr   r   rL   r9   rM   )parseplayUrlrE   headerr   )r
   flagidvipFlagss       r   playerContentzSpider.playerContentv   s5    2B  G|  G]  9^  9^  _  _  	_r   c                     |                      |          }|sg n&|                     t          |j                            S r   r   )r
   rE   r   s      r   rB   zSpider.get_listx   s6    JJsOO?bb 1 1"SX,, ? ??r   N   TFc	           
      d    |pddd}	t                                          ||||	||||          S )NrL   r9   rM   )paramscookiesrQ   rR   rS   streamallow_redirects)superr   )r
   rE   r   r   rQ   rR   rS   r   r   h	__class__s             r   r   zSpider.fetch{   s^    
  z  #X  cy  z  zww}}SwqQX`fnt  FU}  V  V  	Vr   c                 8   	 |                     d          dk    r|                     |                     d                    }|                    d          rd|z   }n|                    d          rd|z   }t          j         |dd	d
dd          }|j        dk    rg dS t          j        dt
          j        d                              |j	                  }d}|                    d          rd}n|                    d          rd}d||gS n#  Y nxY wg dS )NtypehlimgrE   rI   rJ   r:   rK   rL   r9   rM   rO   FrP   rT   )i  z
text/plainr   rU   rV   z
image/jpegs   PNGz	image/pngs   GIF8z	image/gif)
rY   r   rW   rX   rZ   r   r[   r\   r]   r^   )r
   paramrE   r_   bcts         r   
localProxyzSpider.localProxy~   sY   	yy  '))HHUYYu--..>>$'' GHSL^^C((F-B3-F,s  :o  zP  ,Q  ,Q  Z\  di  j  j  j=#%%,A,A,A&A'-cl;NOOWWXYXabb<<
++ :{BB\\'**9k22aj  * 	tt####s   BD "A-D D)r   )r   )NNNr   TFT)__name__
__module____qualname__r   r   r   r4   r6   rG   r`   ri   strboolrr   rt   r}   r   r   r   r   r   r   rB   r   r   __classcell__)r   s   @r   r   r   	   s       KKKI---!!!!S S S (''S S S    
s st s s s sC #    
3     3     } } }

 
 
2f 2f 2ff7 7 7 7_ _ _@ @ @V V V V V V$ $ $ $ $ $ $r   r   )r   rc   sysrx   rX   Crypto.Cipherr   pyqueryr   r   pathr   base.spiderr   r   r   r   <module>r      s    # " " " " " " " " " " " " " " " " " " "       ! ! ! ! ! !          C$ C$ C$ C$ C$V C$ C$ C$ C$ C$r   