
    6io2                     J   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZej                            d           dZddiZ G d de
          Z
dS )u   

作者 丢丢喵 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
                    ====================Diudiumiao====================

    unpad)pad)unquote)ARC4)quote)SpiderAES)datetime)BeautifulSoup)	b64decode)OptionalNz..zhttps://wanwuu.comz
User-AgentzlMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36c                       e Zd Zd Zd Zd Zd Zd*dedefdZd	 Z	d
 Z
d Zd Zd ZdededefdZdedefdZdededefdZdedefdZd Zd Zd Z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)S ),r	   c                     dS )Nu	   丢丢喵 selfs    7   /storage/emulated/0/纯福利/py1/乐哥玩物社区.pygetNamezSpider.getName-   s    {    c                     d S Nr   )r   extends     r   initzSpider.init0       r   c                     d S r   r   )r   urls     r   isVideoFormatzSpider.isVideoFormat3   r   r   c                     d S r   r   r   s    r   manualVideoCheckzSpider.manualVideoCheck6   r   r    start_index1
end_index2c           
      x   |dk    rg }	 |                     |          }|dk    rny|                     ||t          |          z             }	|	dk    rnL||t          |          z   |	         }
|                    |
           |                    ||
z   |z   d          }t          |          dk    rd}t	          t          |                    D ]}t          j        |||                   }d}|D ]{}t          j        d|d                   }|r|                    d          }nd}d|d         vr!|d	|d          d
| t           |d          z  }b|d	|d          d
| |d          z  }||dd          }||z   dz   }|d d         }|S dS |                     |          }|dk    rdS |                     ||t          |          z             }	|	dk    rdS |dk    r0||t          |          z   |	         }
|
                    dd          S |dk    rH||t          |          z   |	         }
t          j        ||
          }|rd
                    |          }|S |dk    rT||t          |          z   |	         }
t          j        ||
          }|r%d |D             }d
                    |          }|S d S d S )N   Tr"   r   z(?:^|[^0-9])(\d+)(?:[^0-9]|$)   http#$z$$$\    c                     g | ]}| S r   r   ).0items     r   
<listcomp>z.Spider.extract_middle_text.<locals>.<listcomp>r   s    :::$tI:::r   )findlenappendreplacerangerefindallsearchgroupxurljoin)r   text	start_strend_strplr#   r$   plxstart_index	end_indexmiddle_textpurlimatchesoutputmatchmatch3numberjgnew_lists                       r   extract_middle_textzSpider.extract_middle_text9   s)   77C	K"ii	22"$$ IIg{S^^/KLL	??";Y#?	#IJ

;'''||I$;g$ErJJ	K 3xx!||s3xx 1 1A js1v>>GF!( 	H 	H!#+KUSTX!V!V! '%+\\!__FF%&F!q11"&M%(&M&MV&MT&M58&M&MMFF"&G%(&G&GV&GU1X&G&GGFF#ABBZF&=50DDCRCyr))I..Kb  r		';Y+GHHIBr77{S^^;IEFK&&tR00077{S^^;IEFKj{;;G XXg&&	77{S^^;IEFKj{;;G ::':::ZZ))	 7 r   c                 ^    |                     dd          }|                    d          }|S )Nulztext-nowrapclass_li)r4   find_all)r   docsoupsvodss       r   get_category_listzSpider.get_category_listv   s-    m44~~d##r   c                 z    |j                                         }|                    d          d         }|d|z   dS )Nahrefu
   乐哥🌠)type_id	type_name)r?   stripr4   )r   vodnameids       r   extract_category_infozSpider.extract_category_info{   s:    x~~XXc]]6"<$+>???r   c                     t          j        t          t                    }d|_        |j        }t          |d          }|S Nr   headersutf-8lxml)requestsgetr=   headerxencodingr?   r   )r   detailresrW   s       r   fetch_documentzSpider.fetch_document   s8    $888!kC((
r   c                     dg i}|                                  }|                     |          }|D ]2}|                     |          }|d                             |           3|S )Nclass)rq   rZ   rd   r6   )r   filterresultrW   rY   ra   category_infos          r   homeContentzSpider.homeContent   sq    2!!##%%c** 	2 	2C 66s;;M7O""=1111r   c                     d S r   r   r   s    r   homeVideoContentzSpider.homeVideoContent   r   r   encrypted_bytesimage_extensionreturnc                    ddddd}ddl m} ddlm}  |j        |d	                             d
          |j        |d                             d
                    }	 |                    |          }n# t          $ r}Y d }~d S d }~ww xY w	  |||j	                  }	|	S # t          $ r}Y d }~d S d }~wt          $ r}Y d }~d S d }~ww xY w)Nf5d965df7533627097b60394abc2fbe1CBCPKCS7)keyivmodepaddingr   r
   r   r   ri   r   )r   r   r   )Crypto.Cipherr   Crypto.Util.Paddingr   newencodeMODE_CBCdecrypt
ValueError
block_size	Exception)
r   rz   r{   CONFIGr   r   cipherdecrypted_padded_bytesefinal_image_bytess
             r   decrypt_imagezSpider.decrypt_image   s<   %$	  	&%%%%%------u$$W--d|""7++  
	%+^^O%D%D"" 	 	 	44444		 %&<cn M M$$ 	 	 	44444 	 	 	44444	s*   A5 5
B
B
B! !
C	1C	C	r   c                    dd l }	  |j        |t          d          }|                                 |j                            d          r|j                            d          }|j        d|                             d          }|                    d          d	         }|j                            d
          }|d	k    rdS |j        |dz   d          }n4|j        }|                    d          d	         	                                }| 
                    ||          }	|	r|	|fS dS # |j        j        $ r}
Y d }
~
dS d }
~
ww xY w)Nr      )rh   timeouts   data:   ;   ri   /r'      ,)NNr(   .)rk   rl   rm   raise_for_statuscontent
startswithr4   decodesplitlowerr   
exceptionsRequestException)r   r   rk   responsemime_end	mime_typer{   	comma_posencrypted_raw_bytesdecrypted_image_bytesr   s              r   download_and_decrypt_imagez!Spider.download_and_decrypt_image   se   	#x|C"EEEH%%'''**844 
=#+0066$,QxZ8??HH	"+//#"6"6r":$,11$77	??%:&.&6y1}~~&F##&.&6#"%))C.."4":":"<"<$($6$67JO$\$\!$ ",o==!z"3 	 	 	:::::	s   B=D* A"D* *E?Eimage_bytesc                     dd l }|sd S  |j        |                              d          }|dk    rd| nd}|dk    rd}n|dk    rd}nd| }d| d	| }|S )
Nr   ri   jpgzimage/z
image/jpegsvgzimage/svg+xmlzdata:z;base64,)base64	b64encoder   )r   r   r{   r   base64_encodedr   base64_image_urls          r   convert_to_base64_imagezSpider.convert_to_base64_image   s     	4))+66==gFF2AU2J2J._...P\	e##$II%%'II222IF9FFnFFr   encrypted_image_urlc                 b    |                      |          \  }}|                     ||          }|S r   )r   r   )r   r   final_image_data	extensionbase64_images        r   process_encrypted_imagezSpider.process_encrypted_image   s8    &*&E&EFY&Z&Z#)334DiPPr   c                    i }g }|rt          |          nd}t           | dt          |           d}|                     |          }	|	                    dd          }
|
D ]F}|                    d          }|D ],}|                     |          }|                    |           -Gd|i}||d	<   d
|d<   d|d<   d|d<   |S )Nr(   /page/r   rR   video-itemsrS   rU   listpage'  	pagecountZ   limit?B total)intr=   strfetch_category_documentrV   extract_video_infor6   )r   cidpgrt   extru   videosr   r   rW   rX   souprY   ra   videos                  r   categoryContentzSpider.categoryContent   s    #s2www!.s..#d))...**3//T-88 	% 	%D==&&D % %//44e$$$$% &!v"{w wr   c                 x    t          j        |t                    }d|_        |j        }t          |d          }|S rf   rk   rl   rm   rn   r?   r   r   r   ro   rp   rW   s        r   r   zSpider.fetch_category_document   8    #w777!kC((
r   c                 |   |                     d          d         }|                     dd          }|d         }|                     d          d         }|                     |          }|                     dd	          }|r|j                                        nd
}|                    dd
          }||||d}|S Nimgaltr\   zmy-1rS   r]   zdata-srcdivtruncater"   
)vod_idvod_namevod_picvod_remarksr4   r   r?   r`   r7   	r   ra   rb   idsrc   picremarksremarkr   s	            r   r   zSpider.extract_video_info       xxu%hhs6h**[hhuooj)**3//((5(44)08##%%%bb))!	  r   c                    |d         }i }g }|                      |          }|                     |          }|                     |          }|                     |          }|                    ||d|d           ||d<   |S )Nr   u   乐哥专线)r   vod_contentvod_play_fromvod_play_urlr   )process_video_idfetch_video_detailextract_video_contentextract_embed_urlr6   )r   r   didru   r   rp   r   bofangs           r   detailContentzSpider.detailContent  s    !f##C((%%c**,,S11'',,"+"	  	 	 	  vr   c                 "    d|vr
t           |z   }|S )Nr)   )r=   )r   r   s     r   r   zSpider.process_video_id  s    *C
r   c                 X    t          j        |t                    }d|_        |j        }|S Nrg   ri   rk   rl   rm   rn   r?   )r   r   ro   rp   s       r   r   zSpider.fetch_video_detail  s)    #w777!k
r   c                 <    d|                      |ddd          z   }|S )Nu    😸乐哥为您介绍剧情📢z"description": ""r   rP   )r   rp   r   s      r   r   zSpider.extract_video_content   s)    4t7O7OPSUgilno7p7ppr   c                 6    |                      |ddd          }|S )Nz"embedUrl": "r   r   r   )r   rp   r   s      r   r   zSpider.extract_embed_url$  s     ))#QGGr   c                     |                      |          }|                     |          }i }d|d<   d|d<   ||d<   t          |d<   |S )Nr   parser"   playUrlr   header)fetch_player_pageextract_video_urlrm   )r   flagrc   vipFlagsrp   r   ru   s          r   playerContentzSpider.playerContent(  sX    $$R(($$S))wyu"xr   c                 X    t          j        |t                    }d|_        |j        }|S r   r   )r   rc   ro   rp   s       r   r   zSpider.fetch_player_page2  s)    "g666!k
r   c                 ^    |                      |ddd                              dd          }|S )Nz<source src="r   r   r-   r"   )rP   r7   )r   rp   r   s      r   r   zSpider.extract_video_url8  s1    &&sOS!DDLLTSUVV
r   c                    i }g }|rt          |          nd}t           d| dt          |           d}|                     |          }|                    dd          }	|	D ]F}
|
                    d          }|D ],}|                     |          }|                    |           -G||d	<   ||d
<   d|d<   d|d<   d|d<   |S )Nr(   z/videos/search/r   r   rR   r   rS   rU   r   r   r   r   r   r   r   r   )r   r=   r   fetch_search_documentrV   extract_search_video_infor6   )r   r   quickr   ru   r   r   r   rW   rX   r   rY   ra   r   s                 r   searchContentPagezSpider.searchContentPage<  s    #s2www!==c==T===((--T-88 	% 	%D==&&D % %66s;;e$$$$%  vv"{w wr   c                 x    t          j        |t                    }d|_        |j        }t          |d          }|S rf   r   r   s        r   r  zSpider.fetch_search_documentO  r   r   c                 |   |                     d          d         }|                     dd          }|d         }|                     d          d         }|                     |          }|                     dd	          }|r|j                                        nd
}|                    dd
          }||||d}|S r   r   r   s	            r   r  z Spider.extract_search_video_infoV  r   r   1c                 0    |                      ||d          S )Nr  )r	  )r   r   r  r   s       r   searchContentzSpider.searchContentg  s    %%c5#666r   c                     |d         dk    r|                      |          S |d         dk    r|                     |          S |d         dk    r|                     |          S d S )Ntypem3u8mediats)	proxyM3u8
proxyMediaproxyTs)r   paramss     r   
localProxyzSpider.localProxyj  sj    &>V##>>&)))F^w&&??6***F^t##<<'''tr   N)r"   r"   )r  )$__name__
__module____qualname__r   r   r   r!   r   rP   rZ   rd   rq   rw   ry   bytesr   tupler   r   r   r   r   r   r   r   r   r   r   r  r   r   r	  r  r  r  r  r   r   r   r	   r	   +   sS               ; ;c ;dg ; ; ; ;z  
@ @ @
      U S U    4c e    0 5  3  SV        3 3    
  &    "  "  
              &    "7 7 7 7    r   r	   ) __doc__r   r   r   urllib.parser   r   r   r   base.spiderr	   r   r   bs4r   r   r   typingr   urllib.requesturllibrk   binasciijsontimesysr9   ospathr6   r=   rm   r   r   r   <module>r+     s    & % % % % % # # # # # #                                                                            



 				 				       AF F F F FV F F F F Fr   