Список пользователей

1
Админ
Постов: 101
2
Элита
Постов: 34
3
Элита
Постов: 28
4
VIP
Постов: 26
5
Дизайнер
Постов: 25
6
Пользователи
Постов: 25
7
Пользователи
Постов: 24
8
Проверенные
Постов: 21

  • Страница 1 из 1
  • 1
NeonWave Audio Player для форума - версия UCOZ Edition v1.0
Дата: Суббота, 01.11.2025, 19:01 | Сообщение # 1 | | Написал: Начинающий
Автор темы
Мурчанн не в сети
        Сообщений:101
         Регистрация:20.10.2016

NeonWave Player v1.0 - Неоновый аудиоплеер для форума UCOZ

Иногда хочется добавить на форум немного жизни , чтобы музыка звучала красиво, а не просто стояла ссылкой. Так родился NeonWave Player, неоновый визуальный аудиоплеер, который можно вставить прямо в сообщение на форуме UCOZ, без доступа к HTML.

Этот проект я сделал "по-быстрому, но со вкусом", чтобы каждый пользователь мог пользоваться стильным плеером, не залезая в код.



И как всегда , если уж что-то создаю, то делюсь с вами, иначе зачем всё это?

Как работает NeonWave Player

Система построена на всплывающем окне с формой, которая генерирует специальный BB-код:

Когда сообщение публикуется, скрипт автоматически распознаёт этот BB-код, раскодирует параметры и превращает их в полноценный плеер с анимацией.

Таким образом, плеер работает через шифровку тегов , ведь на UCOZ обычные HTML-теги в постах доступны только администраторам и привилегированным группам.

А этот метод позволяет любому пользователю форума вставлять аудиоплеер безопасно, без нарушений политики безопасности.

Как использовать

Подключаем файлы плеера
Вставь в шаблон страницы эти строчки:

Код
<link rel="stylesheet" href="https://jordan.moy.su/css/playpink.css">
<script src="https://jordan.moy.su/musik/pink_player2.js"></script>


Это добавит стили и скрипты визуализации.

Добавляем кнопку вызова

Код
<a class="pink-popup-btn" href="javascript:void(0);" onclick="showPinkPlayerPopup()" title="Открыть плеер">
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18" fill="#ffffff">
    <path d="M9 18V5l12-2v13a4 4 0 1 1-2-3.464V6.157L11 7.5v10.5a4 4 0 1 1-2-3.464z"/>
  </svg>
</a>


Последняя справа.


Это та самая фиолетово-неоновая кнопка, которая открывает всплывающее окно добавления трека.

Во всплывающем окне заполняем:

1. ссылку на MP3

2. ссылку на обложку

3. название трека

4. имя исполнителя



После заполнения "скрипт" автоматически составляет карту , находит автоматически картинку.



После нажатия "Добавить" BB-код автоматически вставится в поле сообщения.

После публикации сообщение автоматически преобразует BB-код в плеер NeonWave, и можно наслаждаться результатом



Визуализация и дизайн

NeonWave Player -это не просто кнопка "Play".
Он включает:

1. Реакцию на частоты музыки через canvas-анализатор

2. Плавную неоновую подсветку и спектральные линии

3. Отображение обложки, названия трека и исполнителя

4. Регулировку громкости через ionRangeSlider

5. Режим loop, mute, pause/play

6. И стильный вертикальный логотип AUDIO PLAYER NeonWave

Плеер адаптируется под размер блока, а его визуализация подсвечивается под цвет трека, создавая эффект живой волны

Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
Дата: Суббота, 01.11.2025, 19:09 | Сообщение # 2 | | Написал: Начинающий
Автор темы
Мурчанн не в сети
        Сообщений:101
         Регистрация:20.10.2016

Скрипт настолько силен что не могу вставить код через bb код.

Вставляем в форму добавления сообщения , туда где хотите видеть кнопку.

Ссылка в текстовом варианте

Сам плеер вставляем в общий вид страниц форум в самый низ перед закрывающем тегом body.



Код
<!-- Подключаем библиотеки -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ion-rangeslider@2.3.1/css/ion.rangeSlider.min.css">
<script src="https://cdn.jsdelivr.net/npm/ion-rangeslider@2.3.1/js/ion.rangeSlider.min.js"></script>

<link rel="stylesheet" href="https://jordan.moy.su/css/playpink.css">
<script src="https://jordan.moy.su/musik/pink_player2.js"></script>

<script>
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.pink-player').forEach(el => {
const cover = el.dataset.cover;
const src = el.dataset.src;
const title = el.dataset.title;
const artist = el.dataset.artist;

// Вставляем HTML плеера с canvas и логотипом

el.innerHTML = `
<div class="pink-player-vertical-logo">
<div class="vertical-strip"></div>
<div class="vertical-text">AUDIO PLAYER </div>
</div>

<div class="pink-player-logo">
<div class="logo-strip"></div>
<div class="logo-text"> NeonWave</div>
</div>
<canvas class="visualizer"></canvas>
<div class="cover" style="background-image:url('${cover}')"></div>
<div class="info">
<div class="title">${title}</div>
<div class="artist">${artist}</div>
</div>
<div class="progress"><div class="progress-bar"></div></div>
<div class="controls">
<button class="btn play"><i class="fas fa-play"></i></button>
<button class="btn pause" style="display:none;"><i class="fas fa-pause"></i></button>
<button class="btn loop"><i class="fas fa-repeat"></i></button>
<button class="btn mute"><i class="fas fa-volume-mute"></i></button>
</div>
<div class="volume-wrapper">
<input type="text" class="volume-slider" value="" />
</div>
<audio src="${src}"></audio>
`;

const canvas = el.querySelector('.visualizer');
const ctx = canvas.getContext('2d');
canvas.width = el.clientWidth;
canvas.height = 150;

const audio = el.querySelector('audio');
const playBtn = el.querySelector('.play');
const pauseBtn = el.querySelector('.pause');
const loopBtn = el.querySelector('.loop');
const muteBtn = el.querySelector('.mute');
const progress = el.querySelector('.progress');
const bar = el.querySelector('.progress-bar');

// Ion.RangeSlider
$(el).find(".volume-slider").ionRangeSlider({
min: 0, max: 1, step: 0.01, from: 1, grid: false,
onChange: data => { audio.volume = data.from; }
});

let audioCtx, analyser, dataArray, sourceNode;

function initVisualizer() {
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
analyser = audioCtx.createAnalyser();
sourceNode = audioCtx.createMediaElementSource(audio);
sourceNode.connect(analyser);
analyser.connect(audioCtx.destination);
analyser.fftSize = 128;
dataArray = new Uint8Array(analyser.frequencyBinCount);
}

function draw() {
if(!audioCtx) return;
requestAnimationFrame(draw);
analyser.getByteFrequencyData(dataArray);
ctx.clearRect(0, 0, canvas.width, canvas.height);

const barWidth = canvas.width / dataArray.length;
ctx.lineWidth = 2;

for(let i=0;i<dataArray.length;i++){
const barHeight = dataArray[i];
const x = i * barWidth;
const y = canvas.height - barHeight;

const hue = (i*5 + Date.now()/10) % 360;
ctx.strokeStyle = `hsl(${hue}, 100%, 60%)`;
ctx.shadowBlur = 15;
ctx.shadowColor = `hsl(${hue}, 100%, 60%)`;

ctx.beginPath();
ctx.moveTo(x, canvas.height);
ctx.lineTo(x, y);
ctx.stroke();
}
}

playBtn.onclick = () => {
if(!audioCtx) initVisualizer();
audioCtx.resume();
audio.play();
playBtn.style.display='none';
pauseBtn.style.display='inline-block';
draw();
};
pauseBtn.onclick = () => { audio.pause(); playBtn.style.display='inline-block'; pauseBtn.style.display='none'; };
loopBtn.onclick = () => { audio.loop = !audio.loop; loopBtn.style.opacity = audio.loop?1:0.5; };
muteBtn.onclick = () => { audio.muted = !audio.muted; muteBtn.style.opacity = audio.muted?0.5:1; };

audio.ontimeupdate = () => { bar.style.width = (audio.currentTime/audio.duration)*100 + '%'; };
progress.onclick = e => { audio.currentTime = (e.offsetX/progress.offsetWidth)*audio.duration; };
});
});
</script>


Вот и всё. В самом начале статьи я объясняю, как работает плеер. А там, где даются инструкции по вставке, нужно вставлять код именно туда. В разделе, где я описываю работу, ничего вставлять не нужно.

Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
Дата: Суббота, 01.11.2025, 19:17 | Сообщение # 3 | | Написал: Начинающий
Автор темы
Мурчанн не в сети
        Сообщений:101
         Регистрация:20.10.2016

{player|cover=https://i.ibb.co/7t8gBDCg/rch-C33-4-FQ.jpg|src=https://jordan.moy.su/musik/001.mp3|title=МакSим - Знаешь ли ты|artist=МакSим}

Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
Дата: Суббота, 01.11.2025, 19:18 | Сообщение # 4 | | Написал: Начинающий
Автор темы
Мурчанн не в сети
        Сообщений:101
         Регистрация:20.10.2016

{player|cover=https://i.ibb.co/MxBFf0F9/scale-1200.jpg|src=https://jordan.moy.su/musik/001.mp3|title=МакSим - Знаешь ли ты|artist=МакSим}

Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
  • Страница 1 из 1
  • 1
Поиск: