CoolFace
Apppublic

sourav-das/stem-separator

sourceHugging Facemitupdated 6mo agoView on Hugging Face
3likes
source_import.cpython-313.pyc162 linesDownload Raw Back to __pycache__
1�

2�ϻi�J���SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J3r4JrJr SSK
Jr SSKJrJrJr SSKJrJr SSKJr SSKJr \R4"\5rSr\"\R>"S	S555r \"\R>"SS55r!\R>"S
S5RE5S;r#\R>"SS5RE5S;r$/SQr%\"SS55r&\"SS55r'"SS\(5r)S\*S\&4Sjr+S\*S\*4Sjr,S\*S\*4Sjr-S@S\*S\S\*S-S\.\*\*\/44S jjr0S!\*S\.\*\/44S"jr1S\*S\.\*\*44S#jr2S\*S\*4S$jr3S%\S\4S&jr4S%\S\/4S'jr5S\6\/4S(jr7SAS)\*S*\S\/4S+jjr8S,\(S-\*S)\*S-S\)4S.jr9S/\)S0\*S)\*S-S1\/S-S2\6\/SS4S3jr:S4\S5\;S/\)S\/4S6jr<S4\SS4S7jr=S\*S\*S-4S8jr>S9\*S:\6\*S\*S-4S;jr?S<\*S\*4S=jr@S<\*S\*4S>jrAS<\*S\*4S?jrBg)B�N)�asdict�	dataclass�field)�Path)�parse_qs�quote�urlparse)�Request�urlopen)�	YoutubeDL)�file_managerzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36�IMPORT_RETRY_COUNT�3�IMPORT_RETRY_BASE_DELAY_MS�800�IMPORT_FORCE_IPV4�1>�0�no�false�IMPORT_DIAGNOSTICS_ENABLED)zwww.youtube.com�youtube.com�music.youtube.com�youtu.bez6google.comc�X�\rSrSr%\\S'\\S'\\S'\S-\S'\\S'\\S'S	rg)7�
ImportedTrack�)�job_id�filename�8source_urlN�resolved_url�title�platform�)�__name__�9__module__�__qualname__�__firstlineno__�str�__annotations__�__static_attributes__r$��backend\source_import.pyrr)s%���K��M��O���*���J��Mr,rc�r�\rSrSr%\\S'Sr\S-\S'Sr\\S'Sr	\10S-\S'\"\S9r
\\11\S	'S12rg)�ImportFailureContext�3�stageN�hostF�	retryable�diagnostics)�default_factory�attemptsr$)r%r&r'r(r)r*r2r3�boolr4�dictr�listr6r+r$r,r-r/r/3s@���J��D�#��*���I�t��#�K����#� ��6�H�d�4�j�6r,r/c�l^�\rSrSrSSSSSS.S\S\S\S-S	\S13\S-S\\S-4U4SjjjrS
r	U=r14$)�SourceImportError�<�downloadNF�r1r2r3r4r6�messager1r2r3r4r6c�Z>�[TU]U5 [UUUUU=(d /S9Ulg)Nr>)�super�__init__r/�context)�selfr?r1r2r3r4r6�	__class__s       �r-rB�SourceImportError.__init__=s1���	����!�+����#��^��15��r,)rC)r%r&r'r(r)r7r8r9rBr+�
__classcell__)rEs@r-r;r;<si���16 ���#'�&*�17��18��	19�20�D�j�21��
22��D�[�23��t�*�t�#�24�25r,r;�url�returnc26�"�[U5n[U5n[R"5n[R"U5nUS;a<[UU5upVnUUUUUUS.n[R"X85 [UUUUUUS9$[U5up�U	SU27S3n[U5up�[UUU	SU283S9upVnSUUUUU	U29U
US	.S30.n[R"X85 [UUUUUSS9$![a [R"U5 ef=f)N>�youtube�ytmusic)�source_kindr r!r"r�import_diagnostics)rrr r!r"r#� z audioz - )�31title_hint�spotify)�searchr=)rMr r!r"r�spotify_track_title�spotify_primary_artistrN)�
normalize_url�classify_platformr
�32create_job�get_job_dir�download_youtube_source�save_job_metadatar�fetch_spotify_track_metadata�resolve_youtube_search�	Exception�33delete_job)rH�normalized_urlr#r�job_dirr"�display_filename�import_diag�metadata�track_title�primary_artist�search_queryr!�search_diag�
download_diags               r-�
import_sourceriQso��"�3�'�N� ��0�H�
�
$�
$�
&�F��&�&�v�.�G�8��-�-�3J���4�0�E�[�34 (�,� .��,�&1�
�H�
�*�*�6�<� ��)�)�+��!�
�
�'C�>�&R�#��%��a��'7�v�>��$:�<�$H�!��1H���%��c�.�)9�:�235�.���%�(�(��(�#.�&4�%�)�#�36��	�&�&�v�8���%�%�%���
37�	38��������'�
��s�AC,�A&C,�,"Dc�H�UR5nU(d39[SSS9eU$)Nz5Paste a YouTube, YouTube Music, or Spotify track link�40validation�r1)�stripr;)rH�values  r-rUrU�s*���I�I�K�E���C��41�	42��Lr,c�P�[U5nURR5RS5nURn[UR5nUS;a�SU;a43[SSS9eUS:XagURS	5(dURS445(agURS5(d,URS5(dURS
5(a45[SSS9e[SSS9eUS:Xa1SU;a46[SSS9eURS	5(ag[SSS9eUS:XafURS5Vs/sH
oU(dMUPM nn[U5S:�a47USS:XagU(aUSS;a48[SSS9e[SSS9e[SSS9es snf)Nzwww.>rr�
m.youtube.comr9z$Playlist links are not supported yetrkrlrrKz/watchz/shorts/z	/playlistz	/channel/z/@z-Only single YouTube video links are supportedzUnsupported YouTube linkrrLz3Only single YouTube Music track links are supportedzopen.spotify.com�/�r�trackrQ>�show�album�artist�episode�playlistz-Only single Spotify track links are supportedzUnsupported Spotify linkzCUnsupported link. Use YouTube, YouTube Music, or Spotify track URLs)r	�netloc�lower�removeprefix�pathr�queryr;�49startswith�split�len)rH�parsedr2r|r}�part�partss       r-rVrV�s���
�c�]�F��=�=��� �-�-�f�5�D��;�;�D��V�\�\�"�E��;�;��U�?�#�$J�R^�_�_��:����?�?�8�$�$����50�(C�(C���?�?�;�'�'�4�?�?�;�+G�+G�4�?�?�[_�K`�K`�#�$S�[g�h�h�� :�,�O�O��"�"��U�?�#�$J�R^�_�_��?�?�8�$�$��� U�]i�j�j��!�!�"&�*�*�S�/�:�/�$�T��/��:��u�:��?�u�Q�x�7�2���U�1�X�!S�S�#�$S�[g�h�h�� :�,�O�O�51�M�����;s�52F#�F#r r`rPc	���[U5n/nU(a[U5OSnSn[S[S-5GH0n[	[53R"S[U5S95n[R"5n	[U5n54[U555nURUSS9nSSS5 [U5n
U
R5n[U=(d$ WR!S5=(d U
R"5nUS3n[$R&"UR(UU5 UR+US[R"5U	-56S	.5 UUS57UUS.4[,R."USS9 s $ Ub[9X`X5U5 Ue[1SS58USUUS9e!,(df   N�=f![0a�nUR+[3XyU55 UR4R6(aUOSnUR4R6(a59U[:Xa[9UXXT5 Ue[;U5 SnAO�SnAf[<a�n[?US60US
9nUR+[3XyU55 UR4R6(aUOSnUR4R6(a61U[:Xa[9UXXT5 Ue[;U5 SnAOSnAff=f[,R."USS9 GM�![,R."USS9 f=f)N�zimport-)�prefix�dirT�r=r"�.wav�success��attempt�status�duration_secondsr=�r1�	preflightr6)�
ignore_errors�r1r2�2Temporary YouTube connectivity issue, please retryr>) �extract_host�run_host_diagnostic�rangerr�tempfile�mkdtempr)�time�perf_counter�build_ytdlp_optionsr�extract_info�find_downloaded_audio�62read_bytes�sanitize_title�get�stemr
�save_imported_audio�name�append�shutil�rmtreer;�build_attempt_recordrCr3�attach_and_log_diagnostics�
backoff_sleepr]�wrap_external_error)r r`rPr2r6r��retryable_error�
attempt_index�temp_dir�attempt_started�options�ydl�info�output_path�content�
display_titlera�exc�wrappeds                   r-rYrY�s���63�64�#�D��H�-1�#�D�)�t�I�04�O��q�"4�q�"8�9�
���(�(�	�s�7�|�L�M���+�+�-��'	8�)�(�3�G��7�#�s��'�'�65�T�'�B��$�0��9�K�!�,�,�.�G�*�:�+^����'�9J�+^�k�N^�N^�_�M�"/���5���,�,�W�\�\�;K�W�U��O�O�,�'�(,�(9�(9�(;�o�(M��
�!�"2�#�&�$�5��*
�M�M�(�$�7�W:�Z�"�"�?��QY�Z���66�<��
����
��W$�#��*!�	)��O�O�0��QT�U�V�%(�[�[�%:�%:�c��O��;�;�(�(�M�=O�,O�*�3�67�)�V��	��-�(�(���	)�)�#�Z�d�K�G��O�O�0��QX�Y�Z�)0���)B�)B�g��O��?�?�,�,�
�AS�0S�*�7�J�i�Z��
��-�(�(��	)��
�M�M�(�$�7��F�M�M�(�$�7�sW�8F�F�B3F�68F	�F�69K�'A9H%� K�%
K�2BJ;�6K�;K�K�K2r}c	���Sn[U5nU(a[U5OSn/n[S[S-5GH�n[R70"5nSSSSS.n[(aSUS'[U5nURSU3S	S719n	SSS5 W	R#S
5=(d /nU(d6[%SSUS	S9n
UR[XVU
55 [X�X#U5 U
eUSnUR#S5=(d UR#S5nU(a>['U5R)S5(dUR#S5=(d UnSU3nU(d6[%SSUS	S9n
UR[XVU
55 [X�X#U5 U
eURUS[R72"5U-73S.5 USX4S.4s $ [%SSUSUUS9e!,(df   GNZ=f![aqn74[U75SUS9nUR[XVU55 URR(a76U[:Xa[X�X#U5 Ue[!U5 Sn77A78GM+Sn79A80ff=f)Nzhttps://www.youtube.com/resultsr�T�in_playlist)�quiet�no_warnings�extract_flat�81noplaylist�0.0.0.0�source_addressz82ytsearch1:Fr�rRr��entriesz;No matching YouTube source was found for this Spotify track�r1r2r3r�webpage_urlrH�http�idz https://www.youtube.com/watch?v=z9Resolved YouTube match did not include a downloadable URLr�r�r�r�r>)r�r�r�rr�r�rrr�r]r�r�r�rCr3r�r�r�r;r)r~)r}�83search_urlr2r�r6r�r�r�r�r�r�r�r��error�entryr!�video_ids                 r-r\r\s\��2�J��84�#�D�-1�#�D�)�t�I��H��q�"4�q�"8�9�
��+�+�-��	��#� -�"�	�G�!� �,5��(�)��7�#�s��'�'�*�U�G�(<�u�'�M��$��(�(�9�%�+����%�M����	�E�
�O�O�0��QV�W�X�&�u�T�h�O��K���85���y�y��/�C�5�9�9�U�3C����L� 1� <� <�V� D� D��y�y���6�,�H�=�h�Z�H�L��%�K����	�E�
�O�O�0��QV�W�X�&�u�T�h�O��K����(�#�$(�$5�$5�$7�/�$I�
�	86��x�i�^�^�^�u:�x�<��
����
��a$�#���	�)�#�X�D�I�G��O�O�0��QX�Y�Z��?�?�,�,�
�AS�0S�*�7�4�H�U��
��-�(���	�s7�"G,�3G�G,�87G)	�$G,�)G,�,88I'�6A%I"�"I'c�b�S[USS93n[US[0S9n[USS9n[R89"UR
5RS55nSSS5 WRS	S5R5nURS90S5R5nU(a91U(aXV4$[U5n[USS/5n[U/S
Q5nU(aU(d92[SSS9e[U5UR54$!,(df   N�=f![a Nwf=f)Nz$https://open.spotify.com/oembed?url=�)�safe�93User-Agent��headers���timeout�utf-8r"�author_namez+<meta property="og:title" content="([^"]+)"z<title>([^<]+)</title>)z9<meta name="music:musician_description" content="([^"]+)"z0"artists"\s*:\s*\[\s*\{\s*"name"\s*:\s*"([^"]+)"z,"byArtist"\s*:\s*\{\s*"name"\s*:\s*"([^"]+)"z:Could not read Spotify track metadata from the public pagercrl)rr94�95USER_AGENTr�json�loads�read�decoder�rmr]�96fetch_text�first_matchr;�clean_spotify_title)rH�97oembed_url�request�response�payloadr"rv�htmls        r-r[r[Ts!��7��c��8K�7L�M�J��j�<��*D�E�G�
�
�W�b�
)�X��j�j�����!7�!7��!@�A�G�*����G�R�(�.�.�0�����]�B�/�5�5�7���V��=� ��c�?�D���:�%�	98�
�E���	99��F����H��100�	101�102�u�%�v�|�|�~�5�5�A*�
)���
��
�s)�103D!�4D�AD!�104D�D!�!105D.�-D.c��[US[0S9n[USS9nUR5R	SSS9sSSS5 $!,(df   g=f)Nr�r�r�r�r��ignore)�errors)r106r�rr�r�)rHr�r�s   r-r�r�|sD���c�L�*�#=�>�G�	��"�	%���}�}��%�%�g�h�%�?�107&�	%�	%�s�A�108Ar�c���[UR5Vs/sH<nUR5(dMURR	5S;dM:UPM> snSSS9nU(d109[SSS9eUS$s snf)	N>�.aac�.m4a�.mp3�.oggr��.flac�.opusc�6�UR5R$�N)�stat�st_mtime)r|s r-�<lambda>�'find_downloaded_audio.<locals>.<lambda>�s������-�-r,T)�key�reversez7Downloaded source did not produce a playable audio file�postprocessrlr)�sorted�iterdir�is_file�suffixrzr;)r�r|�audio_filess   r-r�r��s����!�(�(�*�	110�*���|�|�~�
����!�!�#�'a�a�
�*�	111�
.��	�K���E��112�	113��q�>���	114s�A9�A9�A9c�b�SS[U50SS0SSSSSSSS	S115./S.116n[(aSUS
'U$)Nzbestaudio/best�home�defaultzdownloaded.%(ext)sTFr��FFmpegExtractAudio�wav)r��preferredcodec)117�format�paths�outtmplr�r�r�r��retries�fragment_retries�postprocessorsr�r�)r)r)r�r�s  r-r�r��s]��"��#�h�-�(��3�4�������,�"'�
�118��G�"��$-�� �!��Nr,c�L�[Vs/sHn[U5PM sn$s snfr�)�DEFAULT_DIAG_HOSTSr�)r2s r-�run_network_diagnosticsr�s"��2D�E�2D�$���%�2D�E�E��Es�!r2�portc��XS.n[R"5n[R"UU[(a[R119O[R[RS9nUSSSnSUS'XRS'[R"5U-120US121'[R"5nUSup�p�n[R"X�U1225n
U
RS5 U
RU5 [R"5nURX�S9 SSS5 SSS5 SUS
'[R"5U-123US'U$![a:nSUS'[U5US	'[R"5U-124US125'UsSnA$SnAff=f!,(df   N=f!,(df   N�=f![anSUS
'[U5US'SnAN�SnAff=f)N)r2r)�family�typer�T�dns_ok�resolved_ipF�	dns_error�dns_seconds�)�server_hostname�https_ok�https_error�
https_seconds)r�r��socket�getaddrinfor�AF_INET�	AF_UNSPEC�SOCK_STREAMr]r)�126settimeout�connect�ssl�create_default_context�wrap_socket)r2r�result�dns_startedr��ipr��connect_startedr	�socktype�proto�_�sockaddr�raw_sockrCs               r-r�r��s��� �/�F��#�#�%�K���!�!���%6�%6�6�>�>�F�<L�<L��#�#�	127���!�W�Q�Z��]����x�� "�}��!�-�-�/�+�=�F�=���'�'�)�O�)�/3�A�w�,��%�H�
�]�]�6�U�
3�x�����"����X�&��0�0�2�G��$�$�X�$�D��E�	4�"��z��#�/�/�1�O�C�F�?���M��+�� ��x��!�#�h��{�� $� 1� 1� 3�k� A��}���
��	��E�D��	4�
3���)�"��z�� #�C���}���)�sg�A"E	�. F2�AF!�F�F!�
F2�	128F
�/F�F
�F
�129F	�F!�!130F/�+F2�2131G�<G�Gr�r1c��^�[U5nUR5mST;dST;dST;a[SSUSS9$[U4SjS	55(a[S132UUSS9$[SUS3UUS
S9$)Nzfailed to resolvez$temporary failure in name resolutionz#no address associated with hostnamez5Could not resolve YouTube host from the Space runtime�dnsTr�c3�,># �UH	oT;v� M g7fr�r$)�.0�tokenrzs  �r-�	<genexpr>�&wrap_external_error.<locals>.<genexpr>�s����H�(G�e�E�>�(G�s�)z	timed outr�zconnection resetznetwork is unreachable�transporterrorrr�zYouTube z request failed after retriesF)r)rzr;�any)r�r1r2r?rzs    @r-r�r��s�����#�h�G��M�M�O�E��e�#�'M�QV�'V�Z�DI�[I� �C����	133�	134��H�(G�H�H�H� �@����	135�	136��137�5�'�6�7��
��	�r,r��targetr�r6c138�L�U=(d URRURlX0RlX@Rl[(aK[139R
S[R"U[U5[UR5S.55 gg)Nzsource_import_failure %s)r1r?rC)rCr2r4r6r�logger�warningr��dumpsr)r)r�r1r2r�r6s     r-r�r��st���3����!3�!3�E�M�M�� )�M�M��%�M�M��!�!����&��J�J�$�"�5�z�%�e�m�m�4��
�		140�"r,r�r�c��US[R"5U-141URRURR[U5S.$)Nr�)r�r�r�r1r3r?)r�r�rCr1r3r))r�r�r�s   r-r�r�	sF��!�� �-�-�/�/�A����$�$��]�]�,�,��u�:�
�r,c�T�[S-SUS-142--n[R"U5 g)Ng@�@rrr�)rr��sleep)r��delays  r-r�r�s'��
'�&�
0�Q�=�1�;L�5M�N�E��J�J�u�r,c�B�[U5nUR=(d S$r�)r	ry)rHr�s  r-r�r�s��
�c�]�F��=�=� �D� r,�text�patternsc��UHKn[R"X [R5nU(dM1[UR	S55s $ g)Nr�)�rerR�143IGNORECASE�
unescape_html�group)r;r<�pattern�matchs    r-r�r�"s=�����	�	�'����7���5� ����Q��0�0��r,rnc��[R"SSU5n[R"SSU5R5RS5nUSS=(d S$)Nz[\\/:*?\"<>|]+rOz\s+�.�xzImported Track)r>�subrm)rn�cleans  r-r�r�*sM���F�F�$�c�5�1�E��F�F�6�3��&�,�,�.�4�4�S�9�E���#�;�*�*�*r,c���URSS5R5nSUR5;a'[R"SU[R144S9SnUR5$)Nz145 | Spotifyr�z - song and lyrics by z\s+-\s+song and lyrics by\s+)�flagsr)�replacermrzr>rr?)rnr"s  r-r�r�0sR���M�M�,��+�1�1�3�E��5�;�;�=�0����8�%�r�}�}�U�VW�X���;�;�=�r,c��URSS5RSS5RSS5RSS5$)Nz&amp;�&z&quot;�"z&#x27;�'z&#39;)rK)rns r-r@r@7s9��
�
�
�g�s�#�	���3�	�	���3�	�	���#�	�	r,r�)i�)Cr��logging�osr>r�rrr�r��dataclassesrrr�pathlibr�urllib.parserrr	�urllib.requestr146r�yt_dlpr�backendr
�	getLoggerr%r3r��int�getenvrrrzrrrrr/r]r;r)rirUrV�tupler8rYr\r[r�r�r�r9rr�r�r��floatr�r�r�r�r�r�r@r$r,r-�<module>r]sJ����	�	�
�
�147���0�0��2�2�+�� �	�	�	�8�	$��%������#7��=�>�� ����+G��!O�P���I�I�1�3�7�=�=�?�G[�[���Y�Y�'C�S�I�O�O�Q�Ym�m����������7�7��7�148�	�149�*>�s�>�}�>�B�s��s��#�3�#�3�#�R"�C��C�
�C��d�150�C��3��T�>��	C�LI�#�I�%��T�	�*:�I�X%6�c�%6�e�C��H�o�%6�P@�C�@�C�@��D��T��&�$��4��.F��d��F�#�c�#��#�t�#�L�Y��#��S�4�Z��L]��8151��152��153���*�154��d�{�	155�156�4�j�157�158�
159�.�������160�	������161!�c�!�c�D�j�!�162�c��T�#�Y��3��:��+�#�+�#�+��s��s������r,