From 0fb7bc6f9e1ddff5826124b288588212c439a121 Mon Sep 17 00:00:00 2001 From: computertech312 Date: Fri, 2 Jan 2026 20:00:10 +0000 Subject: [PATCH] moo --- .gitignore | 3 +++ __pycache__/downloader.cpython-312.pyc | Bin 0 -> 4897 bytes index.html | 2 +- script.js | 13 ++++++++----- server.py | 8 +++++--- style.css | 2 +- youtube_cookies.txt | 25 +++++++++++++++++++++++++ 7 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 .gitignore create mode 100644 __pycache__/downloader.cpython-312.pyc create mode 100644 youtube_cookies.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59dd477 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +music +.venv +.env diff --git a/__pycache__/downloader.cpython-312.pyc b/__pycache__/downloader.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..617a4d84f2314ad706e507a4f1ebafeae804770d GIT binary patch literal 4897 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 F{{YU2g3tf} literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 0ca66f4..852d1be 100644 --- a/index.html +++ b/index.html @@ -470,4 +470,4 @@ - \ No newline at end of file + diff --git a/script.js b/script.js index bfcbeca..a66a2e8 100644 --- a/script.js +++ b/script.js @@ -1517,17 +1517,20 @@ window.addEventListener('DOMContentLoaded', () => { updateManualGlow('A', settings.glowA); updateManualGlow('B', settings.glowB); - // Dual-Port Logic: Port 5001 is for Listeners, 5000 is for DJs + // Check if this is the listener page based on hostname or port const isListenerPort = window.location.port === '5001'; + const isListenerHostname = window.location.hostname.startsWith('music.') || window.location.hostname.startsWith('listen.'); const urlParams = new URLSearchParams(window.location.search); - if (isListenerPort || urlParams.get('listen') === 'true') { + if (isListenerPort || isListenerHostname || urlParams.get('listen') === 'true') { initListenerMode(); } - if (!isListenerPort) { - // Set stream URL to the dedicated listener port (5001) - const streamUrl = `${window.location.protocol}//${window.location.hostname}:5001`; + if (!isListenerPort && !isListenerHostname) { + // Set stream URL to the listener domain + const streamUrl = window.location.hostname.startsWith('dj.') + ? `${window.location.protocol}//music.${window.location.hostname.split('.').slice(1).join('.')}` + : `${window.location.protocol}//${window.location.hostname}:5001`; const streamInput = document.getElementById('stream-url'); if (streamInput) streamInput.value = streamUrl; } diff --git a/server.py b/server.py index afd6b19..12be00e 100644 --- a/server.py +++ b/server.py @@ -120,10 +120,12 @@ def setup_shared_routes(app): if not file.filename.endswith('.mp3'): return jsonify({"success": False, "error": "Only MP3 files are allowed"}), 400 - # Sanitize filename + # Sanitize filename (keep extension) import re - filename = re.sub(r'[^\w\s-]', '', file.filename) - filename = re.sub(r'[-\s]+', '-', filename) + name_without_ext = os.path.splitext(file.filename)[0] + name_without_ext = re.sub(r'[^\w\s-]', '', name_without_ext) + name_without_ext = re.sub(r'[-\s]+', '-', name_without_ext) + filename = f"{name_without_ext}.mp3" filepath = os.path.join(MUSIC_FOLDER, filename) diff --git a/style.css b/style.css index 46d6457..6a5efea 100644 --- a/style.css +++ b/style.css @@ -3789,4 +3789,4 @@ body.listening-active .landscape-prompt { position: relative; padding-left: 40px; padding-right: 40px; -} \ No newline at end of file +} diff --git a/youtube_cookies.txt b/youtube_cookies.txt new file mode 100644 index 0000000..79e1134 --- /dev/null +++ b/youtube_cookies.txt @@ -0,0 +1,25 @@ +# Netscape HTTP Cookie File +# This file is generated by yt-dlp. Do not edit. + +.youtube.com TRUE / TRUE 1801589734 LOGIN_INFO AFmmF2swRAIgHdagSv3AtixYxCW7IHLf47R0KcQaW8NADbzvMuNuy3gCIDXXOJZWFSfAZ1jxxCUVVFuFyf1xoS3OhZtjQRiRGtaD:QUQ3MjNmeERNNlZib3lnSWN5ZkVWMWllUVpYNmNhMFROXzd3YWl2TnVMdHIyTlU2ZE92Z2R4aEJDZDRWb0RVZ01XMXUwSGlueTZYRU0zV1RNRXdJdzdhQmU1MlMwN1NaeXd0S2RBbUNQMU1UbVpuRmNqeC1Nekgxb01zajZCdnBZTkpPNVpOV3J3RDZ1QVNyNGpud3lCRTZjSUhpeVpwNFBn +.youtube.com TRUE / FALSE 1801593439 SID g.a0005AjCJ-US8_6a2mKBHcNy8J5xGdIRFU5-3J24Rh__ueKgYF87AJIWypIb2Ik6XVFT5EqrnwACgYKATgSARcSFQHGX2MiGk_57qzeI-IPJkM8tmm03xoVAUF8yKpSfHahHvTEK-ia_rVzU4Yi0076 +.youtube.com TRUE / TRUE 1801593439 __Secure-1PSID g.a0005AjCJ-US8_6a2mKBHcNy8J5xGdIRFU5-3J24Rh__ueKgYF87qT1WAfdS7sFekPiWVXKIfAACgYKAUMSARcSFQHGX2MiuiQpTAzra30LEmDxkHp2-RoVAUF8yKpWWOikkri1UB3MugOGq6e_0076 +.youtube.com TRUE / TRUE 1801593439 __Secure-3PSID g.a0005AjCJ-US8_6a2mKBHcNy8J5xGdIRFU5-3J24Rh__ueKgYF87tL2jiqzMehdfEubeYBuVTQACgYKAYUSARcSFQHGX2MiLLWEo22MP59Bv_AQnTvuIhoVAUF8yKo2FXEl9xZI7eV_iJwo3c9t0076 +.youtube.com TRUE / FALSE 1801593439 HSID AB0zrN4IKxe-HrA0n +.youtube.com TRUE / TRUE 1801593439 SSID Ab6kKLl9bmrQL_Hni +.youtube.com TRUE / FALSE 1801593439 APISID 22L8tjFyV2jsGKge/AZ2PhPO3ivukTdkWs +.youtube.com TRUE / TRUE 1801593439 SAPISID trR-s5Kb4rJZa0jz/AMQf8wrRhlN1gozvu +.youtube.com TRUE / TRUE 1801593439 __Secure-1PAPISID trR-s5Kb4rJZa0jz/AMQf8wrRhlN1gozvu +.youtube.com TRUE / TRUE 1801593439 __Secure-3PAPISID trR-s5Kb4rJZa0jz/AMQf8wrRhlN1gozvu +.youtube.com TRUE / FALSE 0 PREF f6=80&repeat=NONE&tz=UTC&hl=en +.youtube.com TRUE / TRUE 1801508383 __Secure-YENID 12.YTE=S5qLwonI5Vef0tWqM9BVf_no2FGqTz8wCQjAEW6w_bCkldGIesWCVwHjY7lM6hILbuvAm-SQkWeGzqXn42Lz12xLJSRy8ew3DZjHDIsihRhcJx1mdRMlEBrUFZh0kguQ_VAyva8GIrM_3szB4UBUh5EYpiuJcnTFieCEA7vsvEOygkM2bVO-aDcvDCo2KkjcorJ0rFrozxvjNG1gIdgRZb-_eCqLmrHRPrSaBMqSjIQVCYr0UURNAt7jnY4u_ngRfd4gedGFAAigASCRq64Hg0PoA3jlZrRVq-ZTFXrXnAdKDoCJ4NQM_k29X8DLLGPNTtrAzxKn7_u7PeWbeHWfKg +.youtube.com TRUE / TRUE 1801508384 __Secure-YEC CgtfZncxejAtTU92ZyjJruDKBjInCgJFUxIhEh0SGwsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJiAVYuACCt0CMTIuWVRFPVM1cUx3b25JNVZlZjB0V3FNOUJWZl9ubzJGR3FUejh3Q1FqQUVXNndfYkNrbGRHSWVzV0NWd0hqWTdsTTZoSUxidXZBbS1TUWtXZUd6cVhuNDJMejEyeExKU1J5OGV3M0RaakhESXNpaFJoY0p4MW1kUk1sRUJyVUZaaDBrZ3VRX1ZBeXZhOEdJck1fM3N6QjRVQlVoNUVZcGl1SmNuVEZpZUNFQTd2c3ZFT3lna00yYlZPLWFEY3ZEQ28yS2tqY29ySjByRnJvenh2ak5HMWdJZGdSWmItX2VDcUxtckhSUHJTYUJNcVNqSVFWQ1lyMFVVUk5BdDdqblk0dV9uZ1JmZDRnZWRHRkFBaWdBU0NScTY0SGcwUG9BM2psWnJSVnEtWlRGWHJYbkFkS0RvQ0o0TlFNX2syOVg4RExMR1BOVHRyQXp4S243X3U3UGVXYmVIV2ZLZw%3D%3D +.youtube.com TRUE / TRUE 1798916391 __Secure-1PSIDTS sidts-CjQBflaCdeAx2SdtKMD9zUQdw365y09bcjcMAEVt7wunyzZ8vOXra2-sNlYpujrgrSAB4Oi4EAA +.youtube.com TRUE / TRUE 1798916391 __Secure-3PSIDTS sidts-CjQBflaCdeAx2SdtKMD9zUQdw365y09bcjcMAEVt7wunyzZ8vOXra2-sNlYpujrgrSAB4Oi4EAA +.youtube.com TRUE / FALSE 1798916809 SIDCC AKEyXzXV3xIB5WrVkJilMKV2wq5se8ySH9nuVzyMGS1n32jUeRk4DlqdxAUye7CFMbOYvnuCNA +.youtube.com TRUE / TRUE 1798916809 __Secure-1PSIDCC AKEyXzUqPSmDU8y0QdEdwdIXdKqwnLgAhdkYJPvfudfujzh-JsXcj61JSiUbYmuaxQDVi9COJQ +.youtube.com TRUE / TRUE 1798916809 __Secure-3PSIDCC AKEyXzWBfqFbiZ36NLiL0rulHLMnJZUo5BiDTKTXTkSWCUq15QRHigVH3ZZK9gghuCUVnqfZKw +.youtube.com TRUE / TRUE 1767381013 CONSISTENCY APeVyi9ugkVMpG4vJpUcbJphFq3pD5vJDWaAdsKzDA5ewHpf3ooaflF7egA5RflAGECOzj2iLWP_rYEjQo86XJgjJmh9rD0AUqm6RY1w3FqyfXz7wQ0glrBVgLqqAlmsCb6LVxECHmznH21ZZq88PVQ9m6xdY_IWj6a47_ISRqGIOtOuPztFCXy1bYh78qR8RWJ6DnEPGyI5l8cB0W3O_Q2o11gU35e7MY-ycVMjnt0zq48T +.youtube.com TRUE / TRUE 1782911361 __Secure-ROLLOUT_TOKEN COHd58SY0cK-vgEQqK6mtKvjkQMYi7Ss1_bskQM%3D +.youtube.com TRUE / TRUE 0 YSC Z10UFLfjCRM +.youtube.com TRUE / TRUE 1801508809 VISITOR_PRIVACY_METADATA CgJFUxIhEh0SGwsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJiAV