Last active 1771161783

download_shorts.js Raw
1(function() {
2 'use strict';
3
4 function addButton() {
5 // Убираем дубликаты
6 if ($('.download-shorts-button').length) return;
7
8 // Создаём кнопку вручную с иконкой скачивания
9 var button = $(`
10 <div class="player-control__button selector download-shorts-button">
11 <svg width="38" height="38" viewBox="0 0 38 38" aria-hidden="true">
12 <path d="M19 6v13m-7-7l7 7 7-7m-14 14c0 4.97 4.03 9 9 9s9-4.03 9-9-4.03-9-9-9-9 4.03-9 9z" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
13 </svg>
14 <span>Скачать</span>
15 </div>
16 `);
17
18 // Обработчик нажатия (hover:enter — стандарт для Lampa, работает и на ПК, и на ТВ)
19 button.on('hover:enter', function() {
20 // Получаем URL видео из тега <video>
21 var video = $('video')[0];
22 var url = video ? (video.currentSrc || video.src) : null;
23
24 // Запасной вариант через API Lampa
25 if (!url && Lampa.Player && Lampa.Player.video && Lampa.Player.video().url) {
26 url = Lampa.Player.video().url;
27 }
28
29 if (url && url.startsWith('http') && !url.includes('blob:')) {
30 var a = document.createElement('a');
31 a.href = url;
32 a.download = 'shorts_video.mp4';
33 document.body.appendChild(a);
34 a.click();
35 document.body.removeChild(a);
36 Lampa.Noty && Lampa.Noty.show('Скачивание начато!');
37 } else {
38 Lampa.Noty && Lampa.Noty.show('Прямой URL не найден (YouTube или защищённый поток)');
39 }
40 });
41
42 // Добавляем кнопку в правую часть панели плеера
43 $('.player-panel__right').append(button);
44 }
45
46 function removeButton() {
47 $('.download-shorts-button').remove();
48 }
49
50 // Основной listener на открытие/закрытие полноэкранного плеера
51 Lampa.Listener.follow('full', function(e) {
52 if (e.type === 'start') {
53 setTimeout(addButton, 1000); // Задержка, чтобы панель успела отрисоваться
54 } else {
55 removeButton();
56 }
57 });
58
59 // Если плеер уже открыт (для теста в консоли)
60 if ($('.player-panel').length) {
61 setTimeout(addButton, 1000);
62 }
63})();