yumata / lampa-source Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v2.0
License: GNU General Public License v2.0
Приветствую, подскажите, а какой смысл в двухсекундном лаге при нажатии на кнопку "назад" на главном экране:
Date.now() > start_time + (1000 * 2)
в App.js?
Часто создаётся ощущение, что кнопка просто не работает и нужно несколько раз нажимать.
window.Lampa = {
...
};
add:
window.Lampa = {
Torrent: Torrent,
...
};
From the notification area, when I click on the movie title to go to the card page, the movie title is displayed in Russian instead. In the old version, it used to show the text in the language I selected. Is it possible to change it back so that the movie title is displayed in the language I choose?
при запуске видео в плеере лампы в шине webOS появляется запрос com.webos.media метод load, в ответ прилетает mediaId, имея который можно управлять субтитрами и дорожками
описание метода load
https://www.webosose.org/docs/reference/ls2-api/com-webos-media/#load
живой пример лога шины при запуске видео из лампы:
запрос
3628.258 [PUB] call 5 com.webos.media.client._5IC7T01btpYJEV (/var/run/ls2/vnsgcd) com.webos.media (/var/run/ls2/jpn9J7) (null) //load {"payload":{"option":{"appId":"com.lampa.tv","transmission":{"httpHeader":{"referer":"","userAgent":"Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41","cookies":""}},"bufferControl":{"userBufferCtrl":false}}},"uri":"http://127.0.0.1:8090/stream?link=df1c4e7677f1a517fca74111c5e9f79b7f9305ea&index=16&play&preload","type":"media"}
ответ
3628.279 [PUB] return 5 com.webos.media (/var/run/ls2/jpn9J7) com.webos.media.client._5IC7T01btpYJEV (/var/run/ls2/vnsgcd) {"errorCode":0,"returnValue":true,"errorText":"","mediaId":"_MQUBT01X5MiTj4"}
после load происходит подписка на события по mediaId, в числе которых возвращается sourceinfo - инфа об источнике в т.ч. количестве и языках субтитров и дорожек
описание метода subscribe
https://www.webosose.org/docs/reference/ls2-api/com-webos-media/#subscribe
https://www.webosose.org/docs/reference/ls2-api/com-webos-media/#sourceinfo
пример возвращаемого sourceInfo из лога шины webOS
3640.414 [PRV] return 5 com.webos.pipeline._MQUBT01X5MiTj4 (/var/run/ls2/lWULGd) com.webos.pipelinectrl._MQUBT01X5MiTj4 (/var/run/ls2/1XB7fo) «{"sourceInfo":{"numPrograms":1,"container":"mkv","seekable":true,"trickable":true,"programInfo":[{"duration":1295552,"numAudioTracks":4,"audioTrackInfo":[{"bitRate":0,"language":"ru","codec":"ac3","sampleRate":48,"channels":2,"audioType":0},{"bitRate":0,"language":"ru","codec":"ac3","sampleRate":48,"channels":2,"audioType":0},{"bitRate":0,"language":"ru","codec":"ac3","sampleRate":48,"channels":2,"audioType":0},{"bitRate":0,"language":"en","codec":"ac3","sampleRate":48,"channels":6,"audioType":0} ],"numVideoTracks":1,"videoTrackInfo":[{"angleNumber":0,"level":3.1,"width":1280,"height":720,"codec":"H264","profile":"high","frameRate":23.976,"progressive":true} ],"numSubtitleTracks":2,"subtitleTrackInfo":[{"language":"ru","type":"text"},{"language":"en","type":"text"} ]} ],"mediaId":"_MQUBT01X5MiTj4"}}
формат методов для переключения дорожек и субтитров
(они не описаны тут https://www.webosose.org/docs/reference/ls2-api/com-webos-media/)
вкл/выкл отображения субтитров
(параметр enable значение true/false, mediaId - id воспроизводимого потока полученный при запуске)
webOS.service.request("luna://com.webos.media", {
method:"setSubtitleEnable",
parameters: {
"mediaId": "_MQUBT01X5MiTj4",
"enable": true
},
onSuccess: function (result) {
console.log(JSON.stringify(result));
}
},
onFailure: function (result) {
console.log( "[fail][" + result.errorCode + "] " + result.errorText );
}
});
переключение дорожек и субтитров
( параметр type - audio для дорожек, text для субтитров, index - номер дорожки/субтитров, mediaId - id воспроизводимого потока полученный при запуске)
webOS.service.request("luna://com.webos.media", {
method:"selectTrack",
parameters: {
"type": "audio",
"index": 1,
"mediaId": "_MQUBT01X5MiTj4"
},
onSuccess: function (result) {
console.log(JSON.stringify(result));
},
onFailure: function (result) {
console.log( "[fail][" + result.errorCode + "] " + result.errorText );
}
});
When I am using the Chinese language, the movie or TV show titles in the notifications are still in Russian. Could you please determine the language being used and if it is not Russian, change the title to the original language? Replace "title: data.card.title || data.card.name" with "title: data.card.title || data.card.original_name". Thank you.
если в приложеньке для андроида поменять адрес на свою сборку лампы то к торсерверу даже не пытается подключиться, сразу пишет что "не удалось подключиться к torrserver"
пробовал и с http адрес вбивать и без - нет подключения, но с http зелёным ссылку основную подсвечивает
меняешь адрес на lampa.mx и всё начинает работать с теми же настройками.
запускать пробовал на node:20.11.0б
коммит 4dfe741
На большом экране постеры плохого качества.
Желательно увеличить размер постеров с tmdb с w200 до w500
можно удалить
Стандартная и удобная вещь в современных плеерах. Для перемотки обычно используются только по 1/3 (или 2/5) экрана слева и справа.
I have a playlist that requires generating special token, once a day.
So I created a script, that generate this token and replace it in the playlist, then redirect you to newly created playlist.
But IPTV plugin seems doesn't understand this redirect, and don't read it.
Could you update it please.
Here is my script that generates m3u playlist with token
<!DOCTYPE html>
<html lang="en">
<head>
<script>
function generateToken() {
fetch('https://token.example.com/gettoken.json')
.then(response => response.json())
.then(data => {
const tokenRegex = /token=([^&]*)/;
const match = data.variants[0].url.match(tokenRegex);
let token = ''
if (match && match[1]) {
token = match[1];
}
return token;
})
.catch(error => console.error('Error:', error));
return 1;
}
function generateM3UContent(token) {
const m3uContent = `#EXTM3U
#EXTINF:-1 catchup="append" catchup-days="7" catchup-type="flussonic",ch1
http://example.com/ch1/video.m3u8?token=${token}
#EXTINF:-1 catchup="append" catchup-days="7" catchup-type="flussonic",ch2
http://example.com/ch2/video.m3u8?token=${token}
`;
return m3uContent;
}
function useRedirectMethod(content){
const dataUri = 'data:application/x-mpegURL;charset=utf-8,' + encodeURIComponent(content);
// Redirect the user to the data URI
window.location.href = dataUri;
}
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Get M3U File</title>
</head>
<body>
<script>
const new_token = generateToken()
const new_m3uContent = generateM3UContent(new_token);
useRedirectMethod(new_m3uContent);
</script>
</body>
</html>
(Извините, не в той ветке создал тему)
Вывод npm install
в Arch Linux:
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/gulp
npm ERR! dev gulp@"^3.9.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peerOptional gulp@">=4" from [email protected]
npm ERR! node_modules/gulp-autoprefixer
npm ERR! gulp-autoprefixer@"^8.0.0" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/gulp
npm ERR! peerOptional gulp@">=4" from [email protected]
npm ERR! node_modules/gulp-autoprefixer
npm ERR! gulp-autoprefixer@"^8.0.0" from the root project
Задавать вопросы через ошибки на github не очень хорошо но вы не оставили своих контактов так что придётся так вопрос:
Почему вы удалили мой код PWA ? Конечно там были ошибки как например ошибки с путями в manifest.json честно ума не приложу как я такое проморгал
Возможно вы удалили его потому что для работы PWA на мобильныз устройствах нужен https ? из-за чего все плагины ломаются т.к. загружены на http сайтах а загружать http контент на https зайтах нельзя но это легко фиксится добавлением мета тега который заставляет все http запросы переадрисовываться на https при тааком раскладе ломается только этот список плагинов (MODS's,Lampac 4k, Онлайн - Prestige, Телевидение by Skaz, Онлайн просмотр @kmvrus, Переключение между парсерами, Стиль кнопок, Tracks.js). Все остальные исправно работают
Ну и что бы это хоть как-то было похоже на ошибку добавлю что в ходе тестов своего форка на своём хосте я обнаружил что если главной страницей стоит Последняя то сайт показывает страницу с ошибкой изначально я думал что это моя проблема но на lampa.mx ошибку удалось воспроизвести переключив главный источник на Cub если стоит TMDB то этого бага нет в то время как на моём хосте этот баг исправляется переключением с TMDB на Cub
lampa-source/src/interaction/player/panel.js
Line 214 in 740d624
lampa-source/src/interaction/player/panel.js
Line 215 in 740d624
Каналов
и Тип
не попали в переводы интерфейсов, может их (подписи, не значения) вообще убрать/заменить универсальным и менее громоздким вариантом?1 / rus / MVO TVShows / Каналов: 6 / Тип: ac3
1 / rus / MVO TVShows / 6 Ch / ac3
Пожалуйста, рассмотрите возможность добавления торрент-клиента. Например, WebTorrent, torrent-stream, Webtor и т.п.
Ещё немного из API webOS, продвинутые настройки субтитров
сервис com.webos.media
метод: setSubtitleFontSize
параметры: mediaId
, fontSize
Допустимые значения fontSize: 0
, 1
, 2
, 3
, 4
0 - крохотный, 1 - маленький, 2 - стандарный, 3 - большой, 4 -огромный
по умолчанию 2 (стандартный)
метод: setSubtitleColor
параметры: mediaId
, color
Допустимые значения color: 0
, 1
, 2
, 3
, 4
, 5
0 - желтый, 1 - красный, 2 - белый, 3 - зеленый, 4 - синий, 5 - серый
по умолчанию 2 (белый)
метод: setSubtitlePosition
параметры: mediaId
, position
Допустимые значения position: -3
, -2
, -1
,0
, 1
, 2
, 3
, 4
по умолчанию 0 (стандартное положение), -3 самое низкое, 4 самое высокое
метод: setSubtitleCharacterOpacity
параметры: mediaId
, charOpacity
Допустимые значения charOpacity: от 0
(прозрачный) до 255
(непрозрачный)
по умолчанию 255 (непрозрачный)
(делает тоже, что и setSubtitleColor
, но среди цветов есть еще и черный)
метод: setSubtitleCharacterColor
параметры: mediaId
, charColor
Допустимые значения charColor: black
, white
, yellow
, red
, green
, blue
по умолчанию white
метод: setSubtitleBackgroundOpacity
параметры: mediaId
, bgOpacity
Допустимые значения bgOpacity: от 0
(прозрачный) до 255
(непрозрачный)
по умолчанию 0 (прозрачный)
метод: setSubtitleBackgroundColor
параметры: mediaId
, bgColor
Допустимые значения bgColor: black
, white
, yellow
, red
, green
, blue
по умолчанию black
Del pls
Добрый день
Версия для web
https://i.ibb.co/5958mN7/01.jpg
Можно добавить выбор внешнего плеера в Linux ?
У меня работают стрелочки и кнопки "Х", "Escape"(отрабатывают как бек).
Не могу найти "ок", по идее пробел если я правильно понял по коду, но почему-то не работает.
Добрый день
Лампа установлена на Xiaomi Stick 4K. Язык на лампе стоит английский.
Проблемы:
Is there any documentation on how to develop a plugin?
Hi,
Sometimes I find it inconvenient to search for torrents via Lampa+Jackett and manually add things I'd like to watch direct to Torrserver.
Would it be possible to have an option to check what's already on Torrserver and play directly from that list?
Thank you
Всем привет. У меня есть очень странная странная проблема.
Вот захожу, значит, на фильм. Хочу загрузить его торренты.
Но не получается, говорит, что парсер недоступен:
Но это не так, потому что парсер отвечает, и даже говорит, сколько он нашёл торрентов:
Логи лампы (не обращайте внимание на разницу запросов, скрины сделаны в разное время, но суть одна и та же, он отвечает таким образом на любой фильм):
Это очень странно, может с настройками лампы что то не так, вот настройки:
В общем, прошу помощи у работяг, а то без бесплатных фильмов плохо:(
Заранее спасибо.
Было бы полезно выводить создателей у сериалов, там же где у фильмов указываются режиссеры.
lampa-source/src/interaction/player.js
Line 219 in 79990a7
выяснилось, что на webos 6.х они снова поменяли ID приложения плеера на com.webos.app.mediadiscovery
Итого возможные варианты
com.webos.app.photovideo
com.webos.app.smartshare
com.webos.app.mediadiscovery
Возможно ли сделать отдельный выбор для проигрывания в dlna, как это сделано для торрентов?
Хорошо бы иметь более гибкие настройки скопости в плеере с шагом 0.1, но одной дополнительной скорости x1.1 уже было бы достаточно.
Часто бывает что 1.0 — это слишком медленно, а 1.25 уже неестественно быстро. 1.1 обычно оптимально в таких случаях, где ускорения и не заметно :) Можно конечно ради этого на VLC переключаться, но это не очень удобно.
Каждый день в группе лампы для андройд ТВ звучат дурацкие вопросы, типа:
у меня сейчас установлена версия 1.3.9, всё вроде работает, стоит ли обновлятся на 7.7.7 -80 ?
https://t.me/lampa_android/94788
Предлагаю в about добавить версию apk полученную через AndroidJS.appVersion()
В api настроек некорректно определён параметр data.
Текущее определение
data:{
component:string,
name:string,
type:string,
values:string|object,
default:string|boolean
}
Более кореектно будет так:
data: {
component:string,
param:{
name:string,
type:string,
values:string|object,
default:string|boolean
},
field:{
name:string,
description:string|undefined,
},
onRender:((item)=>void)|undefined,
onChange:((e)=>void)|undefined
}
Идеально так:
data: {
component:string,
param:{
name:string,
}&({
type:'input',
values:string,
default:string
}|{
type:'select',
values:{[key:string]:value:string},
default:string
}|{
type:'trigger',
values:{
'true':string,
'false':string
}|undefined,
default:boolean
}|{
type:'label',
values:string,
}|{
type:'button'
}|{
type:'static'
}),
field:{
name:string,
description:string|undefined,
},
onRender:((item)=>void)|undefined,
onChange:((e)=>void)|undefined
}
The application takes a very long time to launch, about 2 minutes.
After loading, an error is displayed in the console
./plugins_black_list.json - no network connection.
All other things are working.
The application is installed from App market Samsung
Samsung Tizen (2501.1)
Lampa v2.0.2
lampa-source/src/utils/plugins.js
Line 154 in 840bba3
I'm wondering whether there are any plans to support touchscreen navigation (e.g. from browser on mobile device)? If there are no such plans, I'm wondering whether the decision intentional?
Если включена Basic авторизация на torrserve сейчас копируется ссылка:
http://192.168.1.100/stream/video.mkv
А должна быть
http://username:[email protected]/stream/video.mkv
Компонент описанный в /src/components/settings/component.js
не генерирует элементы [data-type="button"]
добавленные через SettingsApi
Привет, для Lampa.Activity
Можно добавить параметры
Сейчас все три опции масштаба (Меньше - Нормальный - Больше) всё равно очень крупные для ПК интерфейса. Хорошо бы иметь процентное масштабирование интерфейса или хотя бы добавить ещё 2 уровня уменьшения.
line 248
u = Utils.addUrlComponent(u, 'Category[]=' + (params.movie.number_of_seasons > 0 ? 5000 : 2000) + (params.movie.original_language == 'ja' ? ',5070' : ''))
ruins the search in many cases!
if(!params.clarification){
u = Utils.addUrlComponent(u,'title='+encodeURIComponent(params.movie.title))
u = Utils.addUrlComponent(u,'title_original='+encodeURIComponent(params.movie.original_title))
}
u = Utils.addUrlComponent(u,'year='+encodeURIComponent(((params.movie.release_date || params.movie.first_air_date || '0000') + '').slice(0,4)))
u = Utils.addUrlComponent(u,'is_serial='+(params.movie.first_air_date || params.movie.last_air_date ? '2' : params.other ? '0' : '1'))
u = Utils.addUrlComponent(u,'genres='+encodeURIComponent(genres.join(',')))
u = Utils.addUrlComponent(u, 'Category[]=' + (params.movie.number_of_seasons > 0 ? 5000 : 2000) + (params.movie.original_language == 'ja' ? ',5070' : ''))
Весь софт крутится на Ubuntu Server 22.04.3 amd64 LTS, Jackett отрабатывает, в TorrServer ничего не прилетает, а LAMPA при попытке воспроизвести любой релиз вываливает ошибку, «не удаётся получить HASH». Перезапустил всё вплоть до ОС — не помогло. В логах ничего. Куда копать?
LAMPA из GIT от 01.05.2024
Jackett из GIT от 30.04.2024
TorrServer MatriX.132
It's ready to be added in PR
#162
Hi @yumata , I hope you're doing well, I'm the dev lead at Stremio, we talked some years ago on telegram (not sure if you remember)
I was hoping we could get your input on an issue we have in Stremio, the WebOS video player (available at: https://github.com/Stremio/stremio-video/blob/master/src/WebOsVideo/WebOsVideo.js ) uses very similar logic to the Lampa video player.
What we do is:
video.src
to the streaming URL (where video
is the HTML5 video element)result.sourceInfo
(this is where the issue is, sometimes the sourceInfo object is never retrieved, and this happens frequently for us..)video.load()
video.play()
I've been trying to figure out what the issue is with our implementation for weeks but had no success, so I'm writing you in hopes that you could help us figure it out.
Sometimes the subscribe method fails with {"errorCode":0,"returnValue":false,"errorText":"No Error","mediaId":"<invalid mediaId>"}
(retrying seems to fix this though..) other times it fails with {"serviceName":"com.webos.pipeline._2aviVu524UNA9e","returnValue":false,"errorCode":-1,"errorText":"com.webos.pipeline._2aviVu524UNA9e is not running."}
(this one sometimes retrieves sourceInfo, but not always) and there are even times where there is no error at all, yet it still does not get sourceInfo
Users say that if they close the stream and start it again a few times, the sourceInfo is retrieved correctly at some point.
What we noticed is that when it does not work at all, the result.bufferRange
always shows 0
for details. (it is like it doesn't try to load the video at all)
Here is an example of logs when it does not work: (and had no error)
And here is an example of logs when it does work:
We're really hoping that you could offer some clues on getting this working properly, thanks in advance!
Текущие размеры постеров в ПК версии кажутся чрезмерно большими. Если на начальном экране ещё ладно, то во вкладке "Ещё" с бесконечным скроллингом вниз — 5 постеров горизонтально и 1,5 вертикально — это не очень удобно.
Для меня оптимальным было бы 8-10 в ряд, как это было сделано в FS клиенте (там размер постеров статичен, а количество менялось от размеров окна):
Поэтому хорошо было бы самому задавать количество постеров в ряд в настройках.
После показа рекламы в сериале плейлист со списком серий становится пустым и не работает кнопка перехода на следующую серию (не переключает и пропадает отображение текста с названием серии)
Если выйти из плеера после просмотра рекламы и снова открыть серию то все ок
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.