U
    SD8e6                     @   s   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 zd dl	m
Z
 dZeZW n ek
rl   dZY nX G dd	 d	ZdS )
    N)addon)cRequestHandler)cUtil)
HTMLParserTFc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zd#ddZ	dd Z
d$ddZdd Zdd Zdd Zdd Zdd Zd d! Zd"S )%Cryptc                 C   sj   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g| _d | _d | _d!| _d"| _d#| _d S )$Nzchmo.:ABCDEGIKLMNOPRSTUWYbpstuxZ>Wq97wQmdlPOJBGvNnbxcDHzFj2gkYURftEKV163A5MeSp0r8IXoZTyiuCLh4asZ>KdSiCM8nf9tIbwDzH04X325O67mRuBFNWkQvVTEcpexGy1agZYqAPLsUolJjrhZ>9Y6kURti4gzhCIGwZM0PpBXuoVcl3e5Ky7fNFSTjms8AbHErxWDO2dnLaJQvq1Z>AfEeszp0ZRgJuqtyGOokvFjhHPrVb4cB2NIXnU6KxaS8dlQ57TLCi39wMWY1DmZ>yBhlVjFDA1EKYuoGZ2NqnxUesdMS3Ofp0arzwtRIc8kb9JPQ4WH5Tvg6iCX7mLZ>wTfLtya01MnzeYSW9d4FoHcNkJZCvXQ3bgiGpEu825RrjP7OVKUxDqAIlsBh6mZ>ButrYenv6fX9NmCUI3Rs2V7hTAWHDkKglLc50jFQOpSPqy8w1EiZ4abJGodMzxZ>2gcSr0w8YeiXM4sAd6uxthnbqJ9BpQO7ZzKG3HTFUIVjlkEvL1oWRNmDyC5afPZ>R3ExPNnUhDyujmK4LAMVd52vIZtplqiHragzoekJ1TSb9W6GcOYfFBC0X87QswZ>ZgtAmxakYKD0zpcsqLT9wHndP5B4Ir2huCRFQfb8M67UlVN3eGyvOEjWSJoiX1Z>YZt86WeN3ECKHA1x9vdhF4jzISL2RGurgpPsDwlJ7n0mOaBoyMUVcfib5TkXqQZ>uhl8iYHO6poTIvgDQ904PayfcrZ1J5zkmREFLVqBsUdNMxj7XCnGwtbW3AeKS2Z>VaU8utB2lSwpNq0yHhF7RMTJncDbIZYXs9dAiCzmj613QxOEW4PgfGL5oKvrekZ>zOFWr7JetVh0yN6vslDxn24fwHukXmEUj5qCSTRbgiYQPIZAM1aGL9dB8oKc3pZ>kM1AUuqnNfrKWRj0tOzm7C9lYShZGcQBL5J4DyF3wXT2aEd8VvoPHpbiexgsI6Z>9HYjEcLTutQpI0rO3M75ZvwA4GFK2koqzhUiCny6xNSdmRfJegDaVBXbs1PW8lZ>0UScdanhjeNVLrFXpx3wOD7ikZ4PBsmzJM8QI5RoyqWAtfEvY1l926TuHKCgGbZ>Bb3cNFeDkW5fwvVJm2QzgPiUL9nTZE4apdMSIqHhlxYrjC0AoK81uXRsOtGy76Z>n4tmQckyLRd13vPebl9EzhBa0MKXGj7NUf26CH8r5AFYWOopuxSDZwsiVIqJgTZ>ceQ68PDBs4huny23trq7ClvFWiAKHzZ1bgURwo9pXIOxdLNYVSkEfa0GJ5jmMTZ>jxMyhCUpStFgzs81lBvrXEOHAK6PbwiRDNd4ZTJ2oI03Lk9mucaY5V7WnQefGqZ>j4vcoE9lfpNwTsiDRQCdUbYu5k28JBWH7SeZrqyh3L6PxKGAXVOnm1tFIMazg0Z>Xk4teWwfzEBR9bHuUZoJ3Y0NxQO8phmGT1aFiyncj7KLqvPIrAlDsSC256dgVMZ>mWKyZVEilfpHD752LJRGvQuqIe0MawOnP81BFz69khdCSUsXjc4NYg3xrtboTAZ>8LzXWwKhl2oGdTYAM6yIaJ3bBce4fsg9rUuQktCxpi7VD0OZPnvFNSEHqmRj15Z>kopQbKsUMz4FCn0aqwyNAc23DlET7GWSfmd1IHO8PtevxrV6ZLghjYRXBJu5i9Z>rz5wTkpAKgYH32OuRl4nD0yNQva186FM7eJiScBIXhbVsdUE9oGqxPCtjLmWfZZ>H5KQUnLCvgWSYOka3PFAjhJ0cw61z2yR8tqmMXIlsupeZfoVNxT74EirdbDBG9Z>zvlEitNwd0bPqasYDArjgnJKIOoCSp589mM2TFy6WZk1RuxGBQL3hX7cHfeVU4Z>d5hjmCsA34nZu9pV76Sbz1NRYO8iFGlTLcMqUxHBgKvofXawDytIkeEWQPrJ02r   z!https://anotepad.com/note/read/%szhttps://rentry.co/%s/rawz3.*<div class="plaintext *">(?P<txAnote>.+?)</div>.*)stabKeynumRotposTableadrPbiZadrPbi2motifAnotepad)self r   C:\dev\Crypt\pasteCrypt.py__init__"   sF                      
zCrypt.__init__c           
   
   C   s   |  |}| |}t| j| }|d |dd | }t| j	|tj
tjB }|s`g S z4|d}tszt|d}t |}| ||}W n& tk
r }	 zg }W 5 d }	~	X Y nX |S )N   zContent-Typez0application/x-www-form-urlencoded; charset=UTF-8ZtxAnotezutf-8)_decryptNumPaste	_numDecalr   r   Z
setTimeoutZaddHeaderEntryrequestrematchr   	MULTILINEDOTALLgrouppy3unicoder   Zunescape_decrypt	Exception)
r   numPastenumposDecaloRequestHandlerZsContentrtxligneser   r   r   loadFile4   s$    




zCrypt.loadFilec                 C   s    |d@ }|d? }|d | dA S )N            r   )r   nZlowZhighr   r   r   _revBit]   s    zCrypt._revBitc                 C   s$   t dd |D }| |d }|S )Nc                 S   s   g | ]}t |qS r   ord.0xr   r   r   
<listcomp>c   s     z#Crypt._numDecal.<locals>.<listcomp>F   )sumr,   )r   r   v1r   r   r   r   b   s    zCrypt._numDecalc           	      C   s   t dd}| j|d  }d}d}t|D ]B\}}|||d |  t| }|t|| 7 }||| 7 }q*| |d@ }|dM }||N }|tt	|dd  7 }|S )N   r'    r   r*      )
randomZrandintr   	enumerateindexlenr.   r,   strhex)	r   crrotr#   ZtxCryptvitposr   r   r   cryptNumPasteg   s    zCrypt.cryptNumPastec           
      C   s   zt d|dd   d}|d d }tdd |D d@ }| |}|dM }||A }| j|d  }d	}t|D ]2\}}|||d |  t| }	|||	 7 }qnW n   d	}Y nX |S )
Nz0x%s   r)   c                 S   s   g | ]}t |qS r   r-   r/   r   r   r   r2   z   s     z*Crypt._decryptNumPaste.<locals>.<listcomp>r*   r'   r6   r7   )intr4   r,   r   r:   r;   r<   )
r   Ztx2rA   r5   r@   r#   ZtxdecrB   rC   rD   r   r   r   r   v   s    

zCrypt._decryptNumPaster6   c                    s\   |dkr d9  t ttdd |D  fdd|D }tsRd|dS d|S )Nr   c                 S   s   g | ]}|qS r   r   r/   r   r   r   r2      s     z'Crypt._cryptDecrypt.<locals>.<listcomp>c                    s&   g | ]} |  t  qS r   )r;   r<   )r0   rC   decalZtabr   r   r2      s     r7   utf8)sortedlistsetr   joinencode)r   r#   rJ   cryptr?   r   rI   r   _cryptDecrypt   s    zCrypt._cryptDecryptc           	   
   C   s   dd |  D }|d dkr"|S g }zXt|D ]J\}}|dkrdt|}| j||}d|}|| j||dd q0W n& t	k
r } zg }W 5 d }~X Y nX |S )Nc                 S   s   g | ]}|r|qS r   r   r/   r   r   r   r2      s      z"Crypt._decrypt.<locals>.<listcomp>r   #r7   )rQ   )

splitlinesr:   rM   r   r;   poprO   appendrR   r   )	r   r#   r    r$   Z
tabDecryptjZlignerJ   r%   r   r   r   r      s    
zCrypt._decryptr7   r8   c                    s<  |r|dkr|sg dfS | dd }||d}t|dkrD|}n
| |}tdd |D t| j }t|d t| jd  }	t|d	 t| jd  }
t|d
 t| jd  }t|d t| jd  }| | j|t| j  |	}| | j|d	 t| j  |
}| | j|d
 t| j  |}| | j|d t| j  | |||g} fddt D }| 	|||}|dkr|| ddfg}d}n|dkr| 
||| \}}nx|d	kr| ||| \}}nXg }|dkr
| ||\}}|r
|| |dkr4| ||\}}|r4|| ||fS )z]mode 0 = alldebrid, mode 1 = realdebrid, 2 = uptobox, 3 = uptostram, 4 = uptobox + uptostreamr   err/rH   r7   rF   c                 S   s   g | ]}t |qS r   r-   r/   r   r   r   r2      s     z%Crypt.resolveLink.<locals>.<listcomp>r6   r8      c                    s    i | ]\}}| |d    qS )r6   r   )r0   rB   r1   ZrotReflr   r   
<dictcomp>   s      z%Crypt.resolveLink.<locals>.<dictcomp>oriok)r8   r(   )rZ   r(   )splitreplacer<   r   r4   r   r.   _swapKeyr:   _decryptLink_linkDownloadAlldebrid_linkDownloadRealdebrid_linkDownloadUptoboxextend_linkDownloadUptostream)r   r   linkkeymodecodeZurlr   r5   Zpos1Zpos2Zpos3ZposReflZrot1Zrot2Zrot3tabRot
reflecteurZlinkFstatuslinksr   r[   r   resolveLink   sH    
   







zCrypt.resolveLinkc                 C   s   d| _ d| _d}d}|D ]f}|d d d D ]}||| }q*|| }|D ]}||| }qJ||7 }| || j  d|| j < q|S )Nr   r7   Z>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzrH   r6   )r	   r
   r;   ra   )r   rl   rm   rh   ZfichCrZalphaZlCrr@   r   r   r   rb      s    zCrypt._decryptLinkc                    sl   |  j d7  _ |  j t ;  _ | j dkrF|  jd7  _|  jd;  _d fddtt D   S )Nr6   r   rZ   r7   c                    s    g | ]} | t    qS r   )r<   )r0   rB   ri   swapr   r   r2      s     z"Crypt._swapKey.<locals>.<listcomp>)r
   r<   r	   rO   range)r   ri   rr   r   rq   r   ra      s    
"zCrypt._swapKeyc              
   C   s   d||f }g }zt |}|jdd}|d }|dkr`|d d }|dd	}|d
d
fg}d}	nD|dkrnd}	n6|dkr|d d }	|	d|d d  7 }	ndt| }	W n* tk
r }
 zg }|
}	W 5 d }
~
X Y nX ||	fS )Nz3https://uptobox.link/api/link?token=%s&file_code=%sTZ
jsonDecode
statusCoder   datadlLinkz.comz.linkr]   r^   r)   zPas de compte Premium   messagez - zErreur inconnue : )r   r   r`   r=   r   )r   ri   fileCodeurl1rw   r!   
dict_liensru   ZsUrlrn   r%   r   r   r   re      s*    zCrypt._linkDownloadUptoboxc              
   C   s   d||f }zt |}|jdd}|d }|dkr@d |d fW S d}|d }|d	 d
krt|d }dd | D }	n|d }
|d d |
dfg}	W n* tk
r } zg }	|}W 5 d }~X Y nX |	|fS )Nz8https://uptobox.link/api/streaming?token=%s&file_code=%sTrt   ru   r   ry   r^   rv   versionr6   ZstreamLinksc                 S   s,   g | ]$\}}|  D ]\}}|||fqqS r   )items)r0   krA   Zk1r5   r   r   r   r2     s     
  z1Crypt._linkDownloadUptostream.<locals>.<listcomp>Zmax_qualitysrcr]   )r   r   r~   r   )r   ri   rz   r{   r!   r|   rn   rv   ro   rw   resr%   r   r   r   rg     s$    zCrypt._linkDownloadUptostreamc           
   
   C   s   g }d}t  }|d}|r.|| |f }nd| |f }t|}|jdd}z2|d dkrv|d d	 d
d
fg}n|d d }W n& tk
r }	 z|	}W 5 d }	~	X Y nX ||fS )Nr^   Zhoster_alldebrid_urlzGhttp://api.alldebrid.com/v4/link/unlock?agent=vStream&apikey=%s&link=%sTrt   rn   Zsuccessrv   rh   r]   errorrk   )r   Z
getSettingstripr   r   r   )
r   ri   lienrw   rn   ZaddonsZurlADr!   r|   r%   r   r   r   rc   0  s     
zCrypt._linkDownloadAlldebridc           	      C   sx   dd| i}|dd}t jd||d}| }d| krZg d|d  d	d
  }}n|d ddfgd }}||fS )NZAuthorizationz	Bearer %sr7   )rh   Zpasswordz4https://api.real-debrid.com/rest/1.0/unrestrict/link)rv   headersr   zRealDebrid - _ Zdownloadr]   r^   )requestsZpostZjsonkeysupperr`   )	r   ri   r   r   rv   r"   ZdictDataro   rn   r   r   r   rd   F  s    
 zCrypt._linkDownloadRealdebridN)r6   )r7   r8   )__name__
__module____qualname__r   r&   r,   r   rE   r   rR   r   rp   rb   ra   re   rg   rc   rd   r   r   r   r   r       s   )

.	$r   )r   r   r9   Zresources.lib.comaddonr   Z$resources.lib.handler.requestHandlerr   Zresources.lib.utilr   Zhtml.parserr   r   r=   r   ImportErrorr   r   r   r   r   <module>   s   
