CoolFace
Apppublic

sourav-das/stem-separator

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

2�ϻir$�	�8�SSKrSSKrSSKrSSKrSSKJr SSKJr SSKJ	r	J3r4JrJr SSK
JrJr SSKJr SSKJr SSKJr SS	KJr SS5KJrJrJr SSKJrJrJrJ r  SSK!r!\	"SS
9r"Sr#Sr$\"\%5RLS-\$-r'\'S-r(Sr)SSSSSSS.r*\"RWS5S5r,\"R[S5\"S54S\64Sjj5r."S S!\5r/"S"S#\5r0\"R[S$5S%\/4S&j5r1\"R[S'5S%\04S(j5r2\"RgS)5S*5r4\"RgS+5S,\54S-j5r6\"RgS.5S,\5S/\54S0j5r7\"RgS15S,\54S2j5r8\"RgS35S,\5S/\54S4j5r9\"RuS55S,\54S6j5r;\"RgS75S85r<\"RgS95S/\54S:j5r=\"RgS;5S<5r>\"RgS=5S/\54S>j5r?\"\%5RLRLS?-S@-r@\@R�5(a\"R�SA\"\5"\@5SBSC9S?SD9 SMSE\SF\CSG\5S-SH\4SIjjrDSNS/\5SJ\CSH\4SKjjrESH\54SLjrFg)O�N)�Path)�Literal)�FastAPI�7UploadFile�File�
HTTPException)�FileResponse�StreamingResponse)�StaticFiles)�	BaseModel��EventSourceResponse)�file_manager)�SourceImportError�
import_source�run_network_diagnostics)�enqueue_job�get_job_progress�worker_loop�jobszStem Separator)�titlei@�default�examplesz	README.mdzoriginal.mp3z8Vocals.mp3z	Drums.mp3zBass.mp3z9Guitar.mp3z	Piano.mp3z	Other.mp3)�Vocals�Drums�Bass�Guitar�Piano�Other�startupc��# �[R"[55 [R"[R"55 g7f)N)�asyncio�create_taskrr�cleanup_loop���backend\main.pyr r +s,�������
�&�����1�1�3�4�s�A	Az/api/upload.�filec��# �UR5IShv�Nn[U5[:�a[SS5e1Skn[	UR10=(d S5RR5nX2;a[SSU35e[R"5n[R"X@R11=(d SU5 X@R12S.$N�7f)	Ni�zFile too large (max 100MB)>�.aac�.m4a�.mp3�.ogg�.wav�.wma�.flac�.opuszfile.wav�zUnsupported format: z	input.wav)�job_id�filename)�read�len�MAX_UPLOAD_SIZErrr4�suffix�lowerr�13create_job�save_upload)r(�content�allowed_ext�extr3s     r'�upload_filer?3s�����I�I�K��G�14�7�|�o�%��C�!=�>�>�T�K�15�t�}�}�*�16�17+�182�192�208�218�22:�C�23���C�#7��u�!=�>�>�
�
$�
$�
&�F����V�]�]�%A�k�7�K��-�-�8�8� �s�C�C�B?Cc�D�\rSrSr%\\S'\\\S'Sr\S\S'Sr	g)	�SeparateRequest�Dr3�stems�wav)rD�mp3�aac�
output_formatr%N)24�__name__�25__module__�__qualname__�__firstlineno__�str�__annotations__�listrGr�__static_attributes__r%r&r'rArADs!���K���9��27�M�7�.�/�7r&rAc� �\rSrSr%\\S'Srg)�ImportUrlRequest�J�urlr%N)rHrIrJrKrLrMrOr%r&r'rQrQJs��	�Hr&rQz
/api/separate�reqc��# �[R"UR5nUR5(d[	SS5e1SknUR26Vs/sHo3U;dM27UPM nnU(d[	SS5e[
URX@R5IShv�NnU(d[	SS5eSURS	.$s snfN+7f)28N��
Job not found>rrrrrrr2zNo valid stems selectedi�zQueue full, try again later�queued)�statusr3)r�get_job_dirr3�existsrrCrrG)rT�job_dir�valid_stems�s�	requested�oks      r'�separateraNs�����&�&�s�z�z�2�G��>�>����C��1�1�I�K��I�I�:�I�q�k�)9��I�I�:���C�!:�;�;��3�:�:�y�2C�2C�D�	D�B�
��C�!>�?�?��#�*�*�5�5��;�29E�s$�AC�	C�#C�)8C�!C
�",Cz/api/import-urlc��~# �[R"[UR5IShv�NnURURURURURURS.$NI![an[S[
U55UeSnAf[an[SSU35UeSnAff=f7f)Nr2i�zFailed to import source: )r3r4�30source_url�resolved_urlr�platform)r"�	to_threadrrSrrrL�	Exceptionr3r4rcrdrre)rT�imported�excs   r'�31import_urlrj`s����M� �*�*�=�#�'�'�B�B���/�/��%�%��)�)� �-�-�����%�%�
��
C���4��C��S��*��3���M��C�#<�S�E�!B�C��L��M�sD�B=�(A8�A6�A8�AB=�6A8�832B:�B�
B:�%B5�5B:�:B=z/api/diag/networkc��V# �S[R"[5IShv�N0$N7f)N�hosts)r"rfrr%r&r'�network_diagnosticsrmss(���	�w�(�(�)@�A�A���A�s�)�'�)z/api/progress/{job_id}r3c��6^# �U4Sjn[U"5SS9$7f)Nc��># �Sn[T5nUc S[R"SSSS.507v� gURURUR33S.nURbURUS'URbURUS'[R"U5nX0:wa	SU07v� UnURS;ag[R"S	5IShv�N M�N7f)34N�data�unknownrrW)�state�progress�messagerC�error)�donerug333333�?)35r�json�dumpsrrrsrtrCrur"�sleep)�	last_sent�prog�current�current_jsonr3s    �r'�event_generator�(progress_stream.<locals>.event_generator|s������	��#�F�+�D��|��t�z�z�I�1�Yh�*i�j�k�k����� �M�M��<�<��G�36�z�z�%�#'�:�:��� ��z�z�%�#'�:�:��� � �:�:�g�.�L��(��|�,�,�(�	��z�z�.�.���-�-��$�$�$�3�2
%�s�CC(�C&� C(�37)�pingr
)r3r~s` r'�progress_streamr�zs����%�:��0�r�:�:�s�z/api/audio/{job_id}/{filename}r4c��h# �[R"X5nUc[SS5e[USS9$7f)NrV�File not foundT��inline�r�
get_file_pathr�build_file_response�r3r4�paths   r'�serve_audior��s5����%�%�f�7�D��|��C�!1�2�2��t�D�1�1�s�02z/api/download/{job_id}/allc��# �[R"U5nU(d[SS5e[R"5n[38R"US[39R5nUR5HLupE[R"X5nU(dM$UR5(dM;URXe5 MN SSS5 URS5 [USSS0S9$!,(df   N,=f7f)	NrVzNo stems found�wr�application/zip�Content-Dispositionzattachment; filename=stems.zip��40media_type�headers)r�list_stem_filesr�io�BytesIO�zipfile�ZipFile�ZIP_DEFLATED�itemsr�r[�write�seekr41)r3rC�buf�zf�	stem_namer4�filepaths       r'�download_allr��s�����(�(��0�E���C�!1�2�2�42�*�*�,�C�	����c�7�#7�#7�	8�B�#(�;�;�=��I�#�1�1�&�C�H��x�H�O�O�-�-�����,�$1�439�44�H�H�Q�K���$�&�(H�I���459�	8�s*�A%C?�'1C.�C.�3C.�&C?�.46C<�8C?z!/api/download/{job_id}/{filename}c��f# �[R"X5nUc[SS5e[X!S9$7f)NrVr���
download_namer�r�s   r'�
download_stemr��s3����%�%�f�7�D��|��C�!1�2�2��t�<�<�s�/1z/api/job/{job_id}c��l# �[R"U5 [R"US5 SS0$7f)NrY�deleted)r�47delete_jobr�pop)r3s r'r�r��s,������F�#��H�H�V�T���i� � �s�24z/api/examples/defaultc48��# �[[SS9n[5n/n[R	5HXup4[U5nURUURS[SUR3S[SUR3S.5 MZ UURS[SUR3US.US[S3S	.$7f)49NT��allow_originalz/api/examples/z/audio/z50/download/)�namer4�audioUrl�downloadUrl)r4r��songNamez
/download/all)�song�originalrC�downloadAllUrl)�get_example_file�EXAMPLE_ORIGINAL_FILE�get_example_song_name�EXAMPLE_STEM_FILESr��appendr��EXAMPLE_NAME)�
original_path�	song_namerCr�r4�	stem_paths      r'�get_example_outputr��s����$�%:�4�P�M�%�'�I��E�1�7�7�9��	�$�X�.�	�
���!�%�N�N�,�\�N�'�)�.�.�AQ�R�!/��~�Z�	���GW�X�	
�	51� :��%�*�*�(���g�m�>P�>P�=Q�R�!�52�53�*�<�.�
�F�	�	�s�B<B>z&/api/examples/default/audio/{filename}c��2# �[USS9n[USS9$7f)NTr�r�)r�r��r4r�s  r'�serve_example_audior��s����H�T�:�D��t�D�1�1�s�z"/api/examples/default/download/allc��r# �[R"5n[R"US[R5n[54R
5H)n[U5nURX3R5 M+ SSS5 URS5 [USSS0S9$!,(df   N,=f7f)Nr�rr�r�z&attachment; filename=example-stems.zipr�)r�r�r�r�r�r��valuesr�r�r�r�r55)r�r�r4r�s    r'�download_all_example_stemsr��s����56�*�*�,�C�	����c�7�#7�#7�	8�B�*�1�1�3�H�#�H�-�D��H�H�T�9�9�%�4�579��H�H�Q�K���$�&�(P�Q���
589�	8�s�<B7�AB&�&B7�&59B4�0B7z)/api/examples/default/download/{filename}c��F# �[U5n[XRS9$7f)Nr�)r�r�r�r�s  r'�download_example_filer��s����H�%�D��t�9�9�=�=�s�!�frontend�dist�/T)�	directory�html)r�r�r�r��returnc���[R"UR5S=(d SnSS0nUb60SUS3US'OU(aSURS3US'[XUS	9$)61Nrzapplication/octet-streamz
Accept-Ranges�byteszattachment; filename="�"r�zinline; filename="r�)�	mimetypes�62guess_typer�r	)r�r�r�r�r�s     r'r�r�sn���%�%�d�i�i�0��3�Q�7Q�J���(�G�� �+A�-��PQ�)R��%�&�	�+=�d�i�i�[��)J��%�&���W�E�Er&r�c���[[R55nU(aUR[5 X;a[SS5e[U-nUR5(d[SSU35eU$)NrVzExample file not foundzMissing example asset: )�setr�r��addr�r�EXAMPLE_DIRr[)r4r��valid_filesr�s    r'r�r�si���(�/�/�1�2�K�����-�.��"��C�!9�:�:���!�D��;�;�=�=��C�#:�8�*�!E�F�F��Kr&c�8�Sn[R5(dU$[RSS9R5HWnUR	5RS5(dM)UR
SS5SR5nU(dMUUs $ U$)NzExample Songzutf-8)�encodingzsong:�:�)�EXAMPLE_READMEr[�	read_text�63splitlinesr9�64startswith�split�strip)�default_name�line�values   r'r�r�!s���!�L�� � �"�"����(�(�'�(�:�E�E�G���:�:�<�"�"�7�+�+��J�J�s�A�&�q�)�/�/�1�E��u���	H��r&)FN)F)Gr"r�r�r��pathlibr�typingr�fastapirrrr�fastapi.responsesr	r65�fastapi.staticfilesr�pydanticr�sse_starlette.sser�backendr�backend.source_importrrr�backend.task_queuerrrrrw�appr7r��__file__�parentr�r�r�r��on_eventr �postr?rArQrarj�getrmrLr�r�r�r��deleter�r�r�r�r��
frontend_distr[�mount�boolr�r�r�r%r&r'�<module>r�sO���	�����<�<�=�+��1� ���66P�O��
�$�%��#�����8�n�#�#�j�0�<�?���{�*��&���
���
�
�
�����i��5��5����-��)-�c��
9�J�
9��
9� 8�i�8�
�y�
����/��6��6��6�"���67���*����$���	��������	!�"�;�#�;�#�;�B���	)�*�2�c�2�S�2�+�2����	%�&��s��'��(���	,�-�=��=�s�=�.�=����� �!�S�!�!�!����	 �!��"��6���	1�2�2��2�3�2�68���	-�.��/�����	4�5�>�#�>�6�>��X��%�%�,�,�z�9�F�B�
�������I�I�c�;��]�);�$�G�j�I�Y�F�d�F�D�F��t��F�_k�F��s��D��T���s�r&