
Часто кончаются кредиты для генерации песни. Но когда вообще надо просто скачать песню, чтобы послушать ее на улице и чтобы появились идеи, отсутствие ресурсов = жесть. F12>Консоль Разработчиков > Магия поиска ресурса, с которого осуществляется проигрывание. Видимо, именно поэтому Suno для новой модели не дает возможность воспроизводить целиком песню, а дает только первую минуту записи как итог.
// 🔥 Точный скрипт для песни «Ты пришла…»
// ID: 03067d35-a8b1-42bd-a5d1-e7a32884b700
(async () => {
const SONG_ID = ‘03067d35-a8b1-42bd-a5d1-e7a32884b700’;
const SONG_TITLE = ‘Ты пришла…’;
console.log(`🎵 Скачивание: «${SONG_TITLE}» [${SONG_ID}]`);
// Реальные паттерны CDN Suno для превью
const candidates = [
`https://cdn2.suno.ai/${SONG_ID}.mp3`, // Основной
`https://cdn1.suno.ai/${SONG_ID}.mp3`,
`https://cdn2.suno.ai/audio_${SONG_ID}.mp3`, // С префиксом
`https://cdn1.suno.ai/audio_${SONG_ID}.mp3`,
`https://cdn2.suno.ai/preview_${SONG_ID}.mp3`, // Явный превью
`https://cdn2.suno.ai/audio/${SONG_ID}.mp3`, // В папке
`https://cdn2.suno.ai/${SONG_ID}_preview.mp3`, // Суффикс
];
// Проверка через HEAD (быстро, не скачивает контент)
const checkUrl = async (url) => {
try {
const res = await fetch(url, { method: ‘HEAD’, mode: ‘cors’, cache: ‘no-store’ });
return res.ok ? url : null;
} catch {
return null;
}
};
// Если HEAD блокируется CORS — пробуем через <audio>
const checkViaAudio = (url) => {
return new Promise((resolve) => {
const audio = new Audio();
audio.preload = ‘metadata’;
const cleanup = () => {
audio.onloadedmetadata = null;
audio.onerror = null;
audio.src = »;
};
audio.onloadedmetadata = () => { cleanup(); resolve(url); };
audio.onerror = () => { cleanup(); resolve(null); };
audio.src = url;
setTimeout(() => { cleanup(); resolve(null); }, 3000);
});
};
console.log(‘🔍 Проверяю URL…’);
// 1. Пробуем HEAD
for (const url of candidates) {
const ok = await checkUrl(url);
if (ok) {
console.log(`✅ Найдено: ${ok}`);
const a = document.createElement(‘a’);
a.href = ok;
a.download = `suno_${SONG_TITLE.replace(/[^a-z0-9а-яё]/gi, ‘_’)}_${SONG_ID}.mp3`;
a.click();
console.log(‘🎧 Скачивание началось…’);
return;
}
}
// 2. Пробуем через <audio> (если CORS блокирует HEAD)
console.log(‘🔄 HEAD не сработал, пробую через <audio>…’);
for (const url of candidates) {
const ok = await checkViaAudio(url);
if (ok) {
console.log(`✅ Найдено через audio: ${ok}`);
try {
const res = await fetch(ok);
const blob = await res.blob();
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement(‘a’);
a.href = blobUrl;
a.download = `suno_${SONG_TITLE.replace(/[^a-z0-9а-яё]/gi, ‘_’)}_${SONG_ID}.mp3`;
a.click();
setTimeout(() => URL.revokeObjectURL(blobUrl), 1000);
console.log(‘🎧 Скачивание через blob началось…’);
} catch (e) {
console.warn(‘⚠️ Не удалось скачать через blob, открываю в новой вкладке’);
window.open(ok, ‘_blank’);
}
return;
}
}
// 3. Если ничего не сработало — выводим инструкцию
console.error(‘❌ Не найдено ни по одному паттерну’);
console.log(`
💡 Ручной способ:
1. Нажми ещё раз Play на превью «${SONG_TITLE}»
2. Открой DevTools → Network → Media (или Fetch/XHR)
3. Найди запрос с .mp3 и скопируй URL
4. Вставь в новую вкладку → ПКМ → «Сохранить как…»
🔗 Попробуй открыть напрямую (может сработать):
${candidates[0]}
`);
})();
Итого в Qwen я мучал нейросеть, чтобы от «Мы с тобой на Малибу» она привела меня к этим словам:
🎵 Ingirl, Meurch — «Твой Сигнал» (Club Version)
[Интро] (Глубокий бас, нарастающий синтезатор, звук открывающейся двери) Ты пришла… Город остался там. Здесь только мы. Поймали сигнал…
[Куплет 1] За дверью город гасит огни,
Но нам с тобой не нужны они.
Ты сняла пальто, шагнула в тишину,
Я почувствовал ток, я почувствовал волну.
Не надо слов, просто смотри мне в глаза,
В этом ритме сейчас решается всё, что нельзя.
Твоё дыхание — мой главный бит,
Этот вечер нас больше не отпустит, не съедит.
[Пре-хорус] (Нарастание, снейр учащается) Кожа к коже, искра в темноте,
Мы растворимся в этой частоте.
Гравитация тянет вниз, к земле,
Но мы с тобой в другом измерении, на волне!
[Припев] (Взрыв баса, драйвовый бит) Мы включили клуб прямо здесь, внутри,
В глазах неон, ты только смотри.
На одной волне, в диком огне,
Никто не нужен больше мне.
Время застыло, мир замер в тишине,
Я ловлю твой сигнал, ты ловишь меня.
Мы главные в этом хаосе дней,
Танцуй со мной, ничего не жалей!
[Куплет 2] (Бит продолжается, но чуть мягче, бас глубже) Пульс в унисон, это наш код доступа,
Между нами напряжение, это не просто.
Сжигаем мосты, остаётся только момент,
Твоё движение — мой основной элемент.
Выше облаков, выше чужих правил,
Мы эту ночь сами с тобой прославим.
Не надо света, пусть горит лишь экран,
Ты мой личный, секретный, ночной таран.
[Пре-хорус] (Нарастание) Кожа к коже, искра в темноте,
Мы растворимся в этой частоте.
Гравитация больше не властна над нами,
Мы стали ночью, мы стали огнями!
[Припев] (Максимальная энергия) Мы включили клуб прямо здесь, внутри,
В глазах неон, ты только смотри.
На одной волне, в диком огне,
Никто не нужен больше мне.
Время застыло, мир замер в тишине,
Я ловлю твой сигнал, ты ловишь меня.
Мы главные в этом хаосе дней,
Танцуй со мной, ничего не жалей!
[Бридж] (Музыка затихает, остаётся пульсирующий бас и шёпот) Время застыло…
Только твой силуэт…
Ярче тебя в этом мире нет…
(Шёпотом)
Твой сигнал…
Мой сигнал…
Мы поймали сигнал…
[Дроп] (Мощный бас, вокальные нарезки) НА ВОЛНЕ!
В ОГНЕ!
ТЫ И Я!
СИГНАЛ!
[Припев] (Финальный взрыв) Мы включили клуб прямо здесь, внутри,
В глазах неон, ты только смотри.
На одной волне, в диком огне,
Никто не нужен больше мне.
Время застыло, мир замер в тишине,
Я ловлю твой сигнал, ты ловишь меня.
Мы главные в этом хаосе дней,
Танцуй со мной, ничего не жалей!
[Аутро] (Затухание, эхо) Ничего не жалей…
Только мы…
На волне…
Твой сигнал…
(Ingirl… Meurch…)
Внутри…
Далее просто зашел на Suno, чуть погенерил треков и получил вот эту запись на выходе с учетом, что скачал ее скриптом:
Что там слушает твой ребенок?)
