U
    gA                     @   sH   d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
 G dd deZdS )   )InfoExtractor   )ExtractorErrordetermine_extint_or_nonemerge_dicts
str_to_intunified_strdateurl_or_noneurljoinc                   @   sZ   e Zd ZdZdgZddddddd	d
deddd
ddddddddddgZdd ZdS )	RedTubeIEzZhttps?://(?:(?:\w+\.)?redtube\.com(?:\.br)?/|embed\.redtube\.com/\?.*?\bid=)(?P<id>[0-9]+)zN<iframe[^>]+?src=["\'](?P<url>(?:https?:)?//embed\.redtube\.com/\?.*?\bid=\d+)z https://www.redtube.com/38864951Z 4fba70cbca3aefd25767ab4b523c9878Z38864951mp4zCPublic Sex on the Balcony in Freezing Paris! Amateur Couple LeoLuluzWatch video Public Sex on the Balcony in Freezing Paris! Amateur Couple LeoLulu on Redtube, home of free Blowjob porn videos and Blonde sex movies online. Video length: (10:46) - Uploaded by leolulu - Verified User - Starring Pornstar: LeoluluZ20210111i_i     z0re:https://\wi-ph\.rdtcdn\.com/videos/.+/.+\.jpg)
idexttitledescriptionupload_date	timestampduration
view_count	age_limit	thumbnail)urlmd5Z	info_dictz3http://embed.redtube.com/?bgcolor=000000&id=1443286T)r   Zonly_matchingzhttp://it.redtube.com/66418z$https://www.redtube.com.br/103224331c                    s  |  |}| d| | d}|D ]6\}}t fdd|D r$td| d| ddq$| j |i d	}|d
s| jd d
d
d dp|  |d
< g }| j| j	d ddd	|dd}|rt
|tr| D ]"\}	}
|
r||
|	t|	d q| j| j	d ddd	|dd}t
|tr"|ng D ]}td|d}
|
sFq&|d}	|d}|	dkst|	dkr|s| j|
|dd}n|g}t
|tr|ng D ]}t|d}
|
sq|d}	|	dkst|
dkr|| j|
|dd|	pddd q|d}	||
d|	t|	d qq&|sR| d d }||dd! |  }t| j	d" d#d d	}t| jd$ d d	p| j	d% d&d d	}t| j	d' d(d d	}d)}t||d||||||d*S )+Nzhttps://www.redtube.com/)))zvideo-deleted-infoz>This video has been removedzhas been removed))Zprivate_video_textz>This video is privatez9>Send a friend request to its owner to be able to view itz
is privatec                 3   s   | ]}| kV  qd S )N ).0pZwebpager   </tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/redtube.py	<genexpr>6   s     z*RedTubeIE._real_extract.<locals>.<genexpr>zVideo  T)expected)defaultr   )za<h(\d)[^>]+class="(?:video_title_text|videoTitle|video_title)[^"]*">(?P<title>(?:(?!\1).)+)</h\1>z;(?:videoTitle|title)\s*:\s*(["\'])(?P<title>(?:(?!\1).)+)\1)groupr#   zsources\s*:\s*({.+?})sourcez{}F)fatal)r   	format_idheightz)mediaDefinition["\']?\s*:\s*(\[.+?}\s*\])zmedia definitionszhttps://www.redtube.comZvideoUrlformatqualityZhlsr   Zm3u8Zm3u8_native)Zentry_protocolZm3u8_idr&   )r   r   r'   r(   z%<source src="(.+?)" type="video/mp4">z	video URL)r   r   z*<span[^>]+>(?:ADDED|Published on) ([^<]+)<zupload datezvideo:durationzvideoDuration\s*:\s*(\d+)r   )z.<div[^>]*>Views</div>\s*<div[^>]*>\s*([\d,.]+)z2<span[^>]*>VIEWS</span>\s*</td>\s*<td>\s*([\d,.]+)z9<span[^>]+\bclass=["\']video_view_count[^>]*>\s*([\d,.]+)z
view countr   )r   r   r   r   r   r   r   formats)Z	_match_idZ_download_webpageanyr   Z_search_json_ldgetZ_html_search_regexZ_og_search_titleZ_parse_jsonZ_search_regex
isinstancedictitemsappendr   listr   Z_download_jsonr
   r   extendZ_extract_m3u8_formatsZ_og_search_thumbnailr	   Z_og_search_propertyr   r   )selfr   Zvideo_idZERRORSpatternsmessageinfor+   sourcesr'   Z
format_urlZmediasZmediar*   Z
more_mediaZ	video_urlr   r   r   r   r   r   r   r   _real_extract+   s    
  
      
   


   
  
         zRedTubeIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_EMBED_REGEXintZ_TESTSr9   r   r   r   r   r      s6   r   N)commonr   utilsr   r   r   r   r   r	   r
   r   r   r   r   r   r   <module>   s   (