
    VGh                     |    d dl Z d dlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZ  G d de      Z G d d	e      Zy)
    N   )InfoExtractor   )
ExtractorErrorOnDemandPagedList
clean_htmlextract_attributesget_element_by_classget_element_html_by_idparse_count
remove_end
update_urlurlencode_postdatac                   f    e Zd ZdZdddddddd	d
eeed
ddddddddd	deeed
dgZd Zd Zd Zy)
MurrtubeIEa7  (?x)
                        (?:
                            murrtube:|
                            https?://murrtube\.net/(?:v/|videos/(?P<slug>[a-z0-9-]+?)-)
                        )
                        (?P<id>[A-Z0-9]{4}|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})
                    zQhttps://murrtube.net/videos/inferno-x-skyler-148b6f2a-fdcc-4902-affe-9c0f41aaaca0 70380878a77e8565d4aea7f68b8bbb35%ca885d8456b95de529b6723b158032e11115dmp4zInferno X Skylerz+Humping a very good slutty sheppy (roomate)zInferno Wolf   zMhttps://storage.murrtube.net/murrtube-production/ekbs3zcfvuynnqfx72nn2tkokvsd)
idexttitledescriptionuploader	age_limit	thumbnailcomment_count
view_count
like_count)urlmd5	info_dictzhttps://murrtube.net/v/0J2Q 31262f6ac56f0ca75e5a54a0f3fefcb6%8442998c52134968d9caa36e473e1a6bac6caHayelzWho's in charge now?z$md5:795791e97e5b0f1805ea84573f02a997zMhttps://storage.murrtube.net/murrtube-production/fb1ojjwiucufp34ya6hxu5vfqi5s)
r   r   r   r   r   r   r   r   r   r   c                 F    t        | j                  d| d||d             S )Nz([\d,]+)\s+<span[^>]*>z</span>default)r   _search_regex)selfnamehtmls      b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/murrtube.py_extract_countzMurrtubeIE._extract_count;   s6    4--%dV73T4 . O P 	P    c           
          | j                  dd d      }| j                  dd dt        | j                  |                   y )Nzhttps://murrtube.netzGetting session token)notez%https://murrtube.net/accept_age_checkzSetting age cookie)data)_download_webpage_request_webpager   _hidden_inputs)r*   homepages     r-   _real_initializezMurrtubeIE._real_initialize?   sO    ))"D/F * H3T;O#D$7$7$AB 	 	Dr/   c                 B   | j                  |      }|j                  d      rt        d      | j                  ||      }t	        t        d|            }t        |d   d       }| j                  d|d      }|t        | j                  |      d      d	| j                  ||d
      | j                  |      t        | j                  |d      d       xs d t        t        d|            | j                  d|      | j                  d|      | j                  d|      d
S )Nz	murrtube:z+Support for murrtube: prefix URLs is brokenvideozdata-url)queryz/([\da-f]+)/index.m3u8zvideo idz - Murrtuber   r    r'   zpl-1 is-size-6 has-text-lighterViewsLikesComments)
r   r   r   formatsr   r   r   r   r   r   )	_match_id
startswithr   r3   r	   r   r   r)   r   _og_search_title_extract_m3u8_formats_og_search_description_og_search_thumbnailr   r
   r.   )r*   r    video_id
video_pagevideo_attrsplaylists         r-   _real_extractzMurrtubeIE._real_extractF   s   >>#&{+ !NOO++C:
()?)TUk*5TB%%&?:V  5 5j A=Q11(HeL66zB#D$=$=jRT$=$U]abjfj"#78Y[e#fg--gzB--gzB!00ZH
 	
r/   N)	__name__
__module____qualname__
_VALID_URLint_TESTSr.   r7   rJ    r/   r-   r   r      s    J c19'H&h 
  -19,Ah 
F@PD
r/   r   c                   B    e Zd ZdZdZdZdddiddgZd	ZddZd Z	d Z
y
)MurrtubeUserIEFzMurrtube user profilez%https?://murrtube\.net/(?P<id>[^/]+)$zhttps://murrtube.net/stormyr   stormy   )r    r"   playlist_mincount
   Nc           	          | j                  d||t        j                  |      j                         |ddi      }|d   S )Nzhttps://murrtube.net/graphqlzContent-Typezapplication/json)r2   fatalheadersr2   )_download_jsonjsondumpsencode)r*   rF   opr1   rY   results         r-   _download_gqlzMurrtubeUserIE._download_gqlj   sI    $$*dB!6!6!8#%78 % : f~r/   c           	   #   ,  K   | j                  |d| j                  || j                  z  d|dddd|dz          }|t        d|dz          |d	   }|D ]:  }| j                  d
j	                  |d         t
        j                                < y w)NMedialatest)limitoffsetsortuserIdzquery Media($q: String, $sort: String, $userId: ID, $offset: Int!, $limit: Int!) {
  media(q: $q, sort: $sort, userId: $userId, offset: $offset, limit: $limit) {
    id
    __typename
  }
}operationName	variablesr:   zDownloading page r   z'Failed to retrieve video list for page mediazmurrtube:{}r   )ra   
_PAGE_SIZEr   
url_resultformatr   ie_key)r*   usernameuser_idpager2   rl   entrys          r-   _fetch_pagezMurrtubeUserIE._fetch_pageq   s     !!($0 !	-  qz*,  < #J4RS8*!UVVW 	ZE//-"6"6uT{"CZEVEVEXYY	Zs   BBc           	      &   | j                  |      }| j                  |dd|iddd      }|t        d      |d   }t        t	        j
                  | j                  ||j                  d            | j                        }| j                  ||      S )NUserr   zDquery User($id: ID!) {
  user(id: $id) {
    id
    __typename
  }
}ri   zDownloading user infozFailed to fetch user infouser)
r@   ra   r   r   	functoolspartialru   getrm   playlist_result)r*   r    rq   r2   rx   entriess         r-   rJ   zMurrtubeUserIE._real_extract   s    >>#&!!(#h- $% < !<==F|#I$5$5h%89=J ##GX66r/   )NT)rK   rL   rM   _WORKINGIE_DESCrN   rP   rm   ra   ru   rJ   rQ   r/   r-   rS   rS   ]   sF    H%G9J,(
   F JZ27r/   rS   )ry   r\   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   rS   rQ   r/   r-   <module>r      s:      !  G
 G
TD7] D7r/   