(function() { 'use strict'; var Defined = { use_api: 'exsena', localhost: 'http://api.xsena.red/sisi', framework: '' }; var luid = Lampa.Storage.get('lampac_unic_id', ''); if (!luid) { luid = Lampa.Utils.uid(8).toLowerCase(); Lampa.Storage.set('lampac_unic_id', luid); } Lampa.Lang.add({ lampac_sisiname: { ru: 'Клубничка', en: 'Strawberry', uk: 'Полуничка', zh: '草莓' } }); var network = new Lampa.Reguest(); var preview_timer, preview_video; function sourceTitle(title) { return Lampa.Utils.capitalizeFirstLetter(title.split('.')[0]); } function isVIP(element) { return /vip.mp4/.test(element.video); } function getAndroidVersion() { if (Lampa.Platform.is('android')) { try { var current = AndroidJS.appVersion().split('-'); return parseInt(current.pop()); } catch (e) { return 0; } } else { return 0; } } var hostkey = 'http://api.xsena.red'.replace('http://', '').replace('https://', ''); if (!window.rch_nws || !window.rch_nws[hostkey]) { if (!window.rch_nws) window.rch_nws = {}; window.rch_nws[hostkey] = { type: Lampa.Platform.is('android') ? 'apk' : Lampa.Platform.is('tizen') ? 'cors' : undefined, startTypeInvoke: false, rchRegistry: false, apkVersion: getAndroidVersion() }; } window.rch_nws[hostkey].typeInvoke = function rchtypeInvoke(host, call) { if (!window.rch_nws[hostkey].startTypeInvoke) { window.rch_nws[hostkey].startTypeInvoke = true; var check = function check(good) { window.rch_nws[hostkey].type = Lampa.Platform.is('android') ? 'apk' : good ? 'cors' : 'web'; call(); }; if (Lampa.Platform.is('android') || Lampa.Platform.is('tizen')) check(true); else { var net = new Lampa.Reguest(); net.silent('http://api.xsena.red'.indexOf(location.host) >= 0 ? 'https://github.com/' : host + '/cors/check', function() { check(true); }, function() { check(false); }, false, { dataType: 'text' }); } } else call(); }; window.rch_nws[hostkey].Registry = function RchRegistry(client, startConnection) { window.rch_nws[hostkey].typeInvoke('http://api.xsena.red', function() { client.invoke("RchRegistry", { host: location.host, rchtype: Lampa.Platform.is('android') ? 'apk' : Lampa.Platform.is('tizen') ? 'cors' : (window.rch_nws[hostkey].type || 'web'), apkVersion: Lampa.Platform.is('android') ? (window.rch_nws[hostkey].apkVersion || 0) : 0, player: Lampa.Storage.field('player') }); if (window.rch_nws[hostkey].rchRegistry) return; window.rch_nws[hostkey].rchRegistry = true; var handled = false; client.on('RchRegistry', function (clientIp, connectionId, rchtype) { if (startConnection && !handled) { handled = true; startConnection(); } }); client.on("RchClient", function(rchId, url, data, headers, returnHeaders) { var network = new Lampa.Reguest(); function sendResult(uri, html) { $.ajax({ url: 'http://api.xsena.red/rch/' + uri + '?id=' + rchId, type: 'POST', data: html, async: true, cache: false, contentType: false, processData: false, success: function(j) {}, error: function() { client.invoke("RchResult", rchId, ''); } }); } function result(html) { if (Lampa.Arrays.isObject(html) || Lampa.Arrays.isArray(html)) { html = JSON.stringify(html); } if (typeof CompressionStream !== 'undefined' && html && html.length > 1000) { var compressionStream = new CompressionStream('gzip'); var encoder = new TextEncoder(); var readable = new ReadableStream({ start: function(controller) { controller.enqueue(encoder.encode(html)); controller.close(); } }); var compressedStream = readable.pipeThrough(compressionStream); new Response(compressedStream).arrayBuffer() .then(function(compressedBuffer) { var compressedArray = new Uint8Array(compressedBuffer); if (compressedArray.length > html.length) { sendResult('result', html); } else { sendResult('gzresult', compressedArray); } }) .catch(function() { sendResult('result', html); }); } else { sendResult('result', html); } } if (url == 'eval') { console.log('RCH', url, data); result(eval(data)); } else if (url == 'evalrun') { console.log('RCH', url, data); eval(data); } else if (url == 'ping') { result('pong'); } else { console.log('RCH', url); network["native"](url, result, function(e) { console.log('RCH', 'result empty, ' + e.status); result(''); }, data, { dataType: 'text', timeout: 1000 * 8, headers: headers, returnHeaders: returnHeaders }); } }); client.on('Connected', function(connectionId) { console.log('RCH', 'ConnectionId: ' + connectionId); window.rch_nws[hostkey].connectionId = connectionId; }); client.on('Closed', function() { console.log('RCH', 'Connection closed'); }); client.on('Error', function(err) { console.log('RCH', 'error:', err); }); }); }; window.rch_nws[hostkey].typeInvoke('http://api.xsena.red', function() {}); function rchInvoke(json, call) { if (!window.nwsClient) window.nwsClient = {}; var client = window.nwsClient[hostkey]; if (client && client.connectionId != null) { call(); } else if (client) { console.log('RCH', 'Reconnecting...'); client.reconnect(function() { call(); }); } else { window.nwsClient[hostkey] = new NativeWsClient(json.nws, { autoReconnect: true }); window.nwsClient[hostkey].on('Connected', function(connectionId) { window.rch_nws[hostkey].Registry(window.nwsClient[hostkey], function() { call(); }); }); window.nwsClient[hostkey].connect(); } } function rchRun(json, call) { if (typeof NativeWsClient == 'undefined') { Lampa.Utils.putScript(["http://api.xsena.red/js/nws-client-es5.js?v21042026"], function() {}, false, function() { rchInvoke(json, call); }, true); } else { rchInvoke(json, call); } } function modal(text) { var id = Lampa.Storage.get('sisi_unic_id', '').toLowerCase(); var controller = Lampa.Controller.enabled().name; var content = "
\n
"+(text||'Добавьте идентификатор устройства в init.conf')+"
\n
\n
\nunic_id
\n"+luid+"\n
\n\n
\nbox_mac
\n"+id+"\n
\n
\n
"; // "
\n
\u042D\u0442\u043E \u0432\u0438\u0434\u0435\u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E \u0441 VIP \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u043E\u0439. \u0414\u043B\u044F \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F VIP \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0438, \u043F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043D\u0430 \u0441\u0430\u0439\u0442 \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0443\u043A\u0430\u0437\u0430\u043D \u043D\u0438\u0436\u0435 \u0438 \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0432\u0430\u0448 ID
\n
\n
\n \u0421\u0430\u0439\u0442
\n{vip_site}\n
\n\n
\n\u0412\u0430\u0448 ID
\n".concat(id, "\n
\n
\n
"); Lampa.Modal.open({ title: 'Доступ ограничен', html: $(content), size: 'medium', // small|medium onBack: function onBack() { Lampa.Modal.close(); Lampa.Controller.toggle(controller); } }); } function qualityDefault(qualitys) { var preferably = Lampa.Storage.get('video_quality_default', '1080') + 'p'; var url; if (qualitys) { for (var q in qualitys) { if (q.indexOf(preferably) == 0) url = qualitys[q]; } if (!url) url = qualitys[Lampa.Arrays.getKeys(qualitys)[0]]; } return url; } function play(element) { var controller_enabled = Lampa.Controller.enabled().name; if (isVIP(element)) { return modal(); } if (true && !element.history_uid && element.bookmark && Lampa.Storage.field('sisi_history')) { network.silent(Api.account(Defined.localhost + '/history/add'), function(e) {}, function() {}, JSON.stringify(element), { headers: { 'Content-Type': 'application/json' } }); } if (element.json) { Lampa.Loading.start(function() { network.clear(); Lampa.Loading.stop(); }); Api.account(element.video + '&json=true'); Api.qualitys(element.video, function(data) { if (data.error) { Lampa.Noty.show(Lampa.Lang.translate('torrent_parser_nofiles')); Lampa.Loading.stop(); return; } var qualitys = data.qualitys || data; var recomends = data.recomends || []; Lampa.Loading.stop(); for (var i in qualitys) { qualitys[i] = Api.account(qualitys[i], true); } var video = { title: element.name, url: Api.account(qualityDefault(qualitys), true), url_reserve: data.qualitys_proxy ? Api.account(qualityDefault(data.qualitys_proxy), true) : false, quality: qualitys, headers: data.headers_stream }; Lampa.Player.play(video); if (recomends.length) { recomends.forEach(function(a) { a.title = Lampa.Utils.shortText(a.name, 50); a.icon = ''; a.template = 'selectbox_icon'; a.url = function(call) { if (a.json) { Api.qualitys(a.video, function(data) { a.quality = data.qualitys; a.url = Api.account(qualityDefault(data.qualitys), true); if (data.qualitys_proxy) a.url_reserve = Api.account(qualityDefault(data.qualitys_proxy), true); call(); }); } else { a.url = a.video; call(); } }; }); Lampa.Player.playlist(recomends); } else { Lampa.Player.playlist([video]); } Lampa.Player.callback(function() { Lampa.Controller.toggle(controller_enabled); }); }, function() { Lampa.Noty.show(Lampa.Lang.translate('torrent_parser_nofiles')); Lampa.Loading.stop(); }); } else { if (element.qualitys) { for (var i in element.qualitys) { element.qualitys[i] = Api.account(element.qualitys[i], true); } } var video = { title: element.name, url: Api.account(qualityDefault(element.qualitys) || element.video, true), url_reserve: Api.account(qualityDefault(element.qualitys_proxy) || element.video_reserve || '', true), quality: element.qualitys }; Lampa.Player.play(video); Lampa.Player.playlist([video]); Lampa.Player.callback(function() { Lampa.Controller.toggle(controller_enabled); }); } } function fixCards(json) { json.forEach(function(m) { m.background_image = m.picture; m.poster = m.picture; m.img = m.picture; m.name = Lampa.Utils.capitalizeFirstLetter(m.name).replace(/\&(.*?);/g, ''); }); } function hidePreview() { clearTimeout(preview_timer); if (preview_video) { var vid = preview_video.find('video') var pausePromise; try{ pausePromise = vid.pause() } catch(e){ } if (pausePromise !== undefined) { pausePromise.then(function(){ }) .catch(function(e){ }); } preview_video.addClass('hide'); preview_video = false; } } function preview(target, element) { hidePreview(); preview_timer = setTimeout(function() { if (!element.preview || !Lampa.Storage.field('sisi_preview')) return; var video = target.find('video'); var container = target.find('.sisi-video-preview'); if (!video) { video = document.createElement('video'); container = document.createElement('div'); container.addClass('sisi-video-preview'); container.style.position = 'absolute'; container.style.width = '100%'; container.style.height = '100%'; container.style.left = '0'; container.style.top = '0'; container.style.overflow = 'hidden'; container.style.borderRadius = '1em'; video.style.position = 'absolute'; video.style.width = '100%'; video.style.height = '100%'; video.style.left = '0'; video.style.top = '0'; video.style.objectFit = 'cover'; container.append(video); target.find('.card__view').append(container); video.src = element.preview; // 'https://thumb-v4.xhcdn.com/a/og0z25CtaTIZXgzkV7qJ8Q/023/463/094/526x298.44.t.webm' video.addEventListener('ended', function() { container.addClass('hide') }) video.load(); } preview_video = container; var playPromise; try{ playPromise = video.play() } catch(e){ } if (playPromise !== undefined) { playPromise.then(function(){ }) .catch(function(e){ }); } container.removeClass('hide'); }, 1500); } function fixList(list) { list.forEach(function(a) { if (!a.quality && a.time) a.quality = a.time; }); return list; } function menu$2(target, card_data) { if (!card_data.bookmark) return; var cm = [{ title: !card_data.bookmark.uid ? 'В закладки' : 'Удалить из закладок' }]; if (card_data.history_uid) { cm.push({ title: 'Удалить из истории', history: true }); } if (card_data.related) { cm.push({ title: 'Похожие', related: true }); } if (card_data.model) { cm.push({ title: card_data.model.name, model: true }); } if (Lampa.Platform.is('android') && Lampa.Storage.field('player') !== 'inner') { cm.push({ title: 'Плеер Lampa', lampaplayer: true }); } Lampa.Select.show({ title: 'Меню', items: cm, onSelect: function onSelect(m) { if (m.model) { Lampa.Activity.push({ url: Defined.localhost.replace('/sisi', '') + '/' + card_data.model.uri, title: 'Модель - ' + card_data.model.name, component: 'sisi_view_' + Defined.use_api, page: 1 }); } else if (m.related) { Lampa.Activity.push({ url: card_data.video + '&related=true', title: 'Похожие - ' + card_data.title, component: 'sisi_view_' + Defined.use_api, page: 1 }); } else if (m.history) { Api.history(card_data, function(status) { Lampa.Noty.show('Успешно'); }); Lampa.Controller.toggle('content'); } else if (m.lampaplayer) { Lampa.Controller.toggle('content'); play(card_data); } else { Api.bookmark(card_data, !card_data.bookmark.uid, function(status) { Lampa.Noty.show('Успешно'); }); Lampa.Controller.toggle('content'); } }, onBack: function onBack() { Lampa.Controller.toggle('content'); } }); } var Utils = { sourceTitle: sourceTitle, play: play, fixCards: fixCards, isVIP: isVIP, preview: preview, hidePreview: hidePreview, fixList: fixList, menu: menu$2 }; var menu$1; function ApiPWA() { var _this = this; var network = new Lampa.Reguest(); this.menu = function(success, error) { if (menu$1) return success(menu$1); DotNet.invokeMethodAsync("JinEnergy", 'sisi', '').then(function(data) { if (data) { menu$1 = data; success(menu$1); } else { error(data.msg); } })["catch"](function() { console.log('Sisi', 'no load menu'); error(); }); }; this.view = function(params, success, error) { var u = this.account(Lampa.Utils.addUrlComponent(params.url, 'pg=' + (params.page || 1))); DotNet.invokeMethodAsync("JinEnergy", u.path, u.query).then(function(json) { if (json.list) { json.results = Utils.fixList(json.list); json.collection = true; json.total_pages = json.total_pages || 30; Utils.fixCards(json.results); delete json.list; success(json); } else { error(); } })["catch"](function() { console.log('Sisi', 'no load', u.path + '+' + u.query); error(); }); }; this.bookmark = function(element, add, call) { call(true); }; this.account = function(u, join) { if (join) { if (Defined.use_api == 'lampac' && u.indexOf(Defined.localhost.replace('/sisi', '')) == -1) return u; } var unic_id = Lampa.Storage.get('sisi_unic_id', ''); var uid = Lampa.Storage.get('lampac_unic_id', ''); var email = Lampa.Storage.get('account', {}).email; if (u.indexOf('box_mac=') == -1) u = Lampa.Utils.addUrlComponent(u, 'box_mac=' + unic_id); if (email) { if (u.indexOf('account_email=') == -1) u = Lampa.Utils.addUrlComponent(u, 'account_email=' + encodeURIComponent(email)); } if (uid) { if (u.indexOf('uid=') == -1) u = Lampa.Utils.addUrlComponent(u, 'uid=' + encodeURIComponent(uid)); } if (u.indexOf('token=') == -1) { var token = ''; if (token != '') u = Lampa.Utils.addUrlComponent(u, 'token='); } if (join) return u; return { path: u.split('?')[0], query: u.split('?')[1] }; }; this.playlist = function(add_url_query, oncomplite, error) { var load = function load() { var status = new Lampa.Status(menu$1.length); status.onComplite = function(data) { var items = []; menu$1.forEach(function(m) { if (data[m.playlist_url] && data[m.playlist_url].results.length) items.push(data[m.playlist_url]); }); if (items.length) oncomplite(items); else error(); }; menu$1.forEach(function(m, i) { var separator = m.playlist_url.indexOf('?') !== -1 ? '&' : '?'; var url_query = add_url_query.indexOf('?') !== -1 || add_url_query.indexOf('&') !== -1 ? add_url_query.substring(1) : add_url_query; var u = _this.account(m.playlist_url + separator + url_query); var b = false; var w = setTimeout(function() { b = true; status.error(); }, 1000 * 8); DotNet.invokeMethodAsync("JinEnergy", u.path, u.query).then(function(json) { clearTimeout(w); if (b) return; if (json.list) { json.title = Utils.sourceTitle(m.title); json.results = Utils.fixList(json.list); json.url = m.playlist_url; json.collection = true; json.line_type = 'none'; json.card_events = { onMenu: Utils.menu, onEnter: function onEnter(card, element) { Utils.hidePreview(); Utils.play(element); } }; Utils.fixCards(json.results); delete json.list; status.append(m.playlist_url, json); } else { status.error(); } })["catch"](function() { console.log('Sisi', 'no load', u.path + '+' + u.query); clearTimeout(w); status.error(); }); }); }; if (menu$1) load(); else { _this.menu(load, error); } }; this.main = function(params, oncomplite, error) { this.playlist('', oncomplite, error); }; this.search = function(params, oncomplite, error) { this.playlist('?search=' + encodeURIComponent(params.query), oncomplite, error); }; this.qualitys = function(video_url, oncomplite, error) { var u = this.account(video_url + '&json=true'); DotNet.invokeMethodAsync("JinEnergy", u.path, u.query).then(oncomplite)["catch"](function(e) { console.log('Sisi', 'no load', u.path + '+' + u.query); error(); }); }; this.clear = function() { network.clear(); }; } var ApiPWA$1 = new ApiPWA(); var menu; function ApiHttp() { var _this = this; var network = new Lampa.Reguest(); this.menu = function(success, error) { if (menu) return success(menu); var url = this.account(Defined.localhost); url += (url.indexOf('?') === -1 ? '?' : '&') + 'rchtype=' + ((window.rch_nws && window.rch_nws[hostkey] ? window.rch_nws[hostkey].type : window.rch && window.rch[hostkey] ? window.rch[hostkey].type : '') || ''); network.silent(url, function(data) { if (data.channels) { menu = data.channels; success(menu); } else { error(data.msg); } }, error); }; this.view = function(params, success, error, waiting_rch) { var u = Lampa.Utils.addUrlComponent(params.url, 'pg=' + (params.page || 1)); network.silent(this.account(u), function(json) { if (json.rch) { if (waiting_rch){ error(); return; } rchRun(json, function() { _this.view(params, success, error, true); }); } else if (json.accsdb) { error(); Lampa.Noty.show(json.denymsg || json.msg, {style: 'error', time: 8000}); } else if (json.list) { json.results = Utils.fixList(json.list); json.collection = true; json.total_pages = json.total_pages || 30; Utils.fixCards(json.results); delete json.list; success(json); } else { error(); } }, error); }; this.bookmark = function(element, add, call) { var u = Defined.localhost + '/bookmark/' + (add ? 'add' : 'remove?id=' + element.bookmark.uid); network.silent(this.account(u), function(e) { call(true); }, function() { call(false); }, JSON.stringify(element), { headers: { 'Content-Type': 'application/json' } }); }; this.history = function(element, call) { var u = Defined.localhost + '/history/remove?id=' + element.history_uid; network.silent(this.account(u), function(e) { call(true); }, function() { call(false); }); }; this.account = function(u) { u = u.replace(/^[\?&]+/, ''); u = u.replace(/[\?&]+$/, ''); if (u.replace(/[\?&]+$/, '').indexOf('http://api.xsena.red'.replace(/https:/, '').replace(/http:/, '')) === -1) return u; var unic_id = Lampa.Storage.get('sisi_unic_id', ''); var uid = Lampa.Storage.get('lampac_unic_id', ''); var email = Lampa.Storage.get('account', {}).email; if (u.indexOf('box_mac=') === -1) u = Lampa.Utils.addUrlComponent(u, 'box_mac=' + unic_id); if (email) { if (u.indexOf('account_email=') === -1) u = Lampa.Utils.addUrlComponent(u, 'account_email=' + encodeURIComponent(email)); } if (uid) { if (u.indexOf('uid=') === -1) u = Lampa.Utils.addUrlComponent(u, 'uid=' + encodeURIComponent(uid)); } if (u.indexOf('token=') === -1) { var token = ''; if (token != '') u = Lampa.Utils.addUrlComponent(u, 'token='); } var profile_id = Lampa.Storage.get('lampac_profile_id', ''); if (profile_id != '') u = Lampa.Utils.addUrlComponent(u, 'profile_id='+profile_id); if (u.indexOf('nws_id=') === -1) { var nws_id = Lampa.Storage.get('lampac_nws_id', ''); if (nws_id) u = Lampa.Utils.addUrlComponent(u, 'nws_id=' + encodeURIComponent(nws_id)); } return u; }; this.playlist = function(add_url_query, oncomplite, error) { var load = function load() { var status = new Lampa.Status(menu.length); status.onComplite = function(data) { var items = []; menu.forEach(function(m) { if (data[m.playlist_url] && data[m.playlist_url].results.length) items.push(data[m.playlist_url]); }); if (items.length) oncomplite(items); else error(); }; menu.forEach(function(m) { function loadThis() { var separator = m.playlist_url.indexOf('?') !== -1 ? '&' : '?'; network.silent(_this.account(m.playlist_url.replace(/[\?&]+$/, '') + separator + add_url_query.replace(/^[\?&]+/, '')), function(json) { if (json.rch) { rchRun(json, function() { loadThis(); }); } else if (json.accsdb) { status.error(); Lampa.Noty.show(json.denymsg || json.msg, {style: 'error', time: 8000}); } else if (json.list) { json.title = Utils.sourceTitle(m.title); json.results = Utils.fixList(json.list); json.url = m.playlist_url; json.collection = true; json.line_type = 'none'; json.card_events = { onMenu: Utils.menu, onEnter: function onEnter(card, element) { Utils.hidePreview(); Utils.play(element); } }; Utils.fixCards(json.results); delete json.list; status.append(m.playlist_url, json); } else { status.error(); } }, status.error.bind(status)); } loadThis(); }); }; if (menu) load(); else { _this.menu(load, error); } }; this.main = function(params, oncomplite, error) { this.playlist('', oncomplite, error); }; this.search = function(params, oncomplite, error) { this.playlist('?search=' + encodeURIComponent(params.query), oncomplite, error); }; this.qualitys = function(video_url, oncomplite, error, waiting_rch) { network.silent(this.account(video_url + '&json=true'), function(json) { if (json.rch) { if (waiting_rch) { error(); return; } rchRun(json, function() { _this.qualitys(video_url, oncomplite, error, true); }); } else if (json.accsdb) { error(); Lampa.Noty.show(json.denymsg || json.msg, {style: 'error', time: 8000}); } else oncomplite(json); }, error); }; this.clear = function() { network.clear(); }; } var ApiHttp$1 = new ApiHttp(); var Api = ApiHttp$1; //true ? ApiPWA$1 : ApiHttp$1; function Sisi(object) { var comp = new Lampa.InteractionMain(object); comp.create = function() { this.activity.loader(true); Api.main(object, this.build.bind(this), this.empty.bind(this)); return this.render(); }; comp.empty = function(er) { var _this = this; var empty = new Lampa.Empty({ descr: typeof er == 'string' ? er : Lampa.Lang.translate('empty_text_two') }); Lampa.Activity.all().forEach(function(active) { if (_this.activity == active.activity) active.activity.render().find('.activity__body > div')[0].appendChild(empty.render(true)); }); this.start = empty.start.bind(empty); this.activity.loader(false); this.activity.toggle(); }; comp.onMore = function(data) { Lampa.Activity.push({ url: data.url, title: data.title, component: 'sisi_view_' + Defined.use_api, page: 2 }); }; comp.onAppend = function(line, element) { line.onAppend = function(card) { var origFocus = card.onFocus; card.onFocus = function(target, card_data) { origFocus(target, card_data); Utils.preview(target, card_data); }; }; }; return comp; } function View(object) { var comp = new Lampa.InteractionCategory(object); var menu; comp.create = function() { var _this = this; this.activity.loader(true); Api.view(object, function(data) { menu = data.menu; if (menu) { menu.forEach(function(m) { var spl = m.title.split(':'); m.title = spl[0].trim(); if (spl[1]) m.subtitle = Lampa.Utils.capitalizeFirstLetter(spl[1].trim().replace(/all/i, 'Любой')); if (m.submenu) { m.submenu.forEach(function(s) { s.title = Lampa.Utils.capitalizeFirstLetter(s.title.trim().replace(/all/i, 'Любой')); }); } }); } _this.build(data); comp.render().find('.category-full').addClass('mapping--grid cols--3'); if (!data.results.length && object.url.indexOf('/bookmarks')) { Lampa.Noty.show('Удерживайте ОК на видео для добавления в закладки.', { time: 10000 }); } }, this.empty.bind(this)); }; comp.nextPageReuest = function(object, resolve, reject) { Api.view(object, resolve.bind(this), reject.bind(this)); }; comp.cardRender = function(object, element, card) { card.onMenu = function(target, card_data) { return Utils.menu(target, card_data); }; card.onEnter = function() { Utils.hidePreview(); Utils.play(element); }; var origFocus = card.onFocus; card.onFocus = function(target, card_data) { origFocus(target, card_data); Utils.preview(target, element); }; }; comp.filter = function() { if (menu) { var items = menu.filter(function(m) { return !m.search_on; }); var search = menu.find(function(m) { return m.search_on; }); if (!search) search = object.search_start; if (!items.length && !search) return; if (search) { Lampa.Arrays.insert(items, 0, { title: 'Найти', onSelect: function onSelect() { $('body').addClass('ambience--enable') Lampa.Input.edit({ title: 'Поиск', value: '', free: true, nosave: true }, function (value) { $('body').removeClass('ambience--enable') Lampa.Controller.toggle('content'); if (value) { var separator = search.playlist_url.indexOf('?') !== -1 ? '&' : '?'; Lampa.Activity.push({ url: search.playlist_url + separator + 'search=' + encodeURIComponent(value), title: 'Поиск - ' + value, component: 'sisi_view_' + Defined.use_api, search_start: search, page: 1 }); } }); } }); } Lampa.Select.show({ title: 'Фильтр', items: items, onBack: function onBack() { Lampa.Controller.toggle('content'); }, onSelect: function onSelect(a) { menu.forEach(function(m) { m.selected = m == a ? true : false; }); if (a.submenu) { Lampa.Select.show({ title: a.title, items: a.submenu, onBack: function onBack() { comp.filter(); }, onSelect: function onSelect(b) { Lampa.Activity.push({ title: object.title, url: b.playlist_url, component: 'sisi_view_' + Defined.use_api, page: 1 }); } }); } else { comp.filter(); } } }); } }; comp.onRight = comp.filter.bind(comp); return comp; } var Search = { title: 'xsena.red', search: function search(params, oncomplite) { network.silent('http://api.xsena.red/rch/check/connected', function(json) { if (json.rch) { rchRun(json, function() { Api.search(params, oncomplite); }); } else { Api.search(params, oncomplite); } }, function() { oncomplite([]); }); }, onCancel: function onCancel() { Api.clear(); }, params: { lazy: true, align_left: true, card_events: { onMenu: function onMenu() {} } }, onMore: function onMore(params, close) { close(); var url = Lampa.Utils.addUrlComponent(params.data.url, 'search=' + encodeURIComponent(params.query)); Lampa.Activity.push({ url: url, title: 'Поиск - ' + params.query, component: 'sisi_view_' + Defined.use_api, page: 2 }); }, onSelect: function onSelect(params, close) { Utils.play(params.element); }, onAppend: function onAppend(card) { card.render().addClass('card--collection'); } }; function startPlugin() { window['plugin_xsena_' + Defined.use_api + '_ready'] = true; var unic_id = Lampa.Storage.get('sisi_unic_id', ''); if (!unic_id) { unic_id = Lampa.Utils.uid(8).toLowerCase(); Lampa.Storage.set('sisi_unic_id', unic_id); } Lampa.Component.add('sisi_' + Defined.use_api, Sisi); Lampa.Component.add('sisi_view_' + Defined.use_api, View); //addSourceSearch(); function addFilter() { var activi; var timer; var button = $("
\n \n \n \n \n \n \n \n \n \n
"); button.hide().on('hover:enter', function() { if (activi) { if(Lampa.Manifest.app_digital >= 300) activi.activity.component.filter(); else activi.activity.component().filter(); } }); $('.head .open--search').after(button); Lampa.Listener.follow('activity', function(e) { if (e.type == 'start') activi = e.object; clearTimeout(timer); timer = setTimeout(function() { if (activi) { if (activi.component !== 'sisi_view_' + Defined.use_api) { button.hide(); activi = false; } } }, 1000); if (e.type == 'start' && e.component == 'sisi_view_' + Defined.use_api) { button.show(); activi = e.object; } }); } function addSettings() { if (window.sisi_add_param_ready) return; window.sisi_add_param_ready = true; Lampa.SettingsApi.addComponent({ component: 'sisi', name: 'xsena.red', icon: "" }); Lampa.SettingsApi.addParam({ component: 'sisi', param: { name: 'sisi_preview', type: 'trigger', values: '', "default": true }, field: { name: 'Предпросмотр', description: 'Показывать предпросмотр при наведение на карточку' }, onRender: function onRender(item) {} }); Lampa.SettingsApi.addParam({ component: 'sisi', param: { name: 'sisi_history', type: 'trigger', values: '', "default": true }, field: { name: 'История', description: 'Сохранять историю просмотров' }, onRender: function onRender(item) {} }); } function add() { var button = $("
  • \n
    \n \n
    \n
    xsena.red
    \n
  • "); if (true) { var pw = $('
    e
    '); pw.css({ position: 'absolute', right: '-0.3em', bottom: '-0.5em', //backgroundColor: '#fff', color: '#fff', padding: '0.2em 0.4em', fontSize: '0.6em', borderRadius: '0.5em', fontWeight: 900, textTransform: 'uppercase' }); button.find('.menu__ico').css('position', 'relative').append(pw); } button.on('hover:enter', function() { // Проверка и создание Lampa.ParentalControl, если не существует if (!Lampa.ParentalControl) { Lampa.ParentalControl = { query: function(success, error) { // По умолчанию всегда разрешает доступ if (typeof success === 'function') success(); } }; } Lampa.ParentalControl.query(function() { Api.menu(function(data) { // let items = [{ // title: 'Все' // }] var items = []; if (false && (Defined.use_api !== 'pwa' || Lampa.Platform.is('android'))) { items.push({ title: 'Все' }); } data.forEach(function(a) { a.title = Utils.sourceTitle(a.title); }); items = items.concat(data); Lampa.Select.show({ title: 'Сайты', items: items, onSelect: function onSelect(a) { if (a.playlist_url) { Lampa.Activity.push({ url: a.playlist_url, title: a.title, component: 'sisi_view_' + Defined.use_api, page: 1 }); } else { Lampa.Activity.push({ url: '', title: 'xsena.red', component: 'sisi_' + Defined.use_api, page: 1 }); } }, onBack: function onBack() { Lampa.Controller.toggle('menu'); } }); }, function(e) { if (typeof e == 'string') modal(e) }); }, function() {}); }); $('.menu .menu__list').eq(0).append(button); } function init(){ if(window.lampa_settings.sisi_app){ Api.menu(function(data) { data.forEach(function(a) { a.title = Utils.sourceTitle(a.title); Lampa.Menu.addButton('', a.title, function(){ if (a.playlist_url) { Lampa.Activity.push({ url: a.playlist_url, title: a.title, component: 'sisi_view_' + Defined.use_api, page: 1 }); } else { Lampa.Activity.push({ url: '', title: 'xsena.red', component: 'sisi_' + Defined.use_api, page: 1 }); } }) }); }) } else{ add() } addFilter(); addSettings(); } if (window.appready) init(); else { Lampa.Listener.follow('app', function(e) { if (e.type == 'ready') init(); }); } } if (!window['plugin_xsena_' + Defined.use_api + '_ready']) { startPlugin(); /* if(true){ let s = document.createElement('script') s.onload = function(){ Blazor.start({ loadBootResource: function (type, name, defaultUri, integrity) { return Defined.framework+'/_framework/' + name } }) startPlugin() } s.setAttribute('autostart', 'false') s.setAttribute('src', Defined.framework+'/_framework/blazor.webassembly.js') document.body.appendChild(s) } else startPlugin() */ } })();