(function() { 'use strict'; var Defined = { use_api: 'lampac', localhost: '{localhost}/sisi', vip_site: '', 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); } if (!window.rch) { Lampa.Utils.putScript(["{localhost}/invc-rch.js"], function() {}, false, function() { if (!window.rch.startTypeInvoke) window.rch.typeInvoke('{localhost}', function() {}); }, true); } var hubConnection; var hub_timer function rchInvoke(json, call) { if (hubConnection) { hubConnection.stop(); hubConnection = null; } hubConnection = new signalR.HubConnectionBuilder().withUrl(json.ws).build(); hubConnection.start().then(function() { window.rch.Registry(json.result, hubConnection, function() { call(); }); })["catch"](function(err) { //return console.error(err.toString()); }); if (json.keepalive > 0) { hub_timer = setTimeout(function() { hubConnection.stop(); hubConnection = null; }, 1000 * json.keepalive); } } function rchRun(json, call) { if (typeof signalR == 'undefined') { Lampa.Utils.putScript(["{localhost}/signalr-6.0.25_es5.js"], function() {}, false, function() { rchInvoke(json, call); }, true); } else { rchInvoke(json, call); } } function modal() { var id = Lampa.Storage.get('sisi_unic_id', '').toLowerCase(); var controller = Lampa.Controller.enabled().name; var content = "
\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 ".concat(Defined.vip_site, "\n
\n\n
\n \u0412\u0430\u0448 ID
\n ").concat(id, "\n
\n
\n
"); Lampa.Modal.open({ title: 'VIP Контент', html: $(content), size: '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 (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 }; 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) { preview_video.find('video').pause(); 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.load(); } preview_video = container; video.play(); 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.related) { cm.push({ title: 'Похожие', related: true }); } if (card_data.model) { cm.push({ title: card_data.model.name, model: 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 { 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 = '{token}'; if (token != '') u = Lampa.Utils.addUrlComponent(u, 'token={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 u = _this.account(m.playlist_url + add_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); network.silent(this.account(Defined.localhost)+'&rchtype='+(window.rch ? window.rch.type : ''), function(data) { if (data.channels) { menu = data.channels; success(menu); } else { error(data.msg); } }, error); }; this.view = function(params, success, error) { var u = Lampa.Utils.addUrlComponent(params.url, 'pg=' + (params.page || 1)); network.silent(this.account(u), function(json) { if (json.rch) { rchRun(json, function() { _this.view(params, success, error) }) } 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.account = function(u) { if (Defined.use_api == 'lampac' && u.indexOf(Defined.localhost.replace('/sisi', '')) == -1 && window.location.hostname !== 'localhost') 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); else u = u.replace(/box_mac=[^&]+/, 'box_mac=' + unic_id); if (email) { if (u.indexOf('account_email=') == -1) u = Lampa.Utils.addUrlComponent(u, 'account_email=' + encodeURIComponent(email)); else u = u.replace(/account_email=[^&]+/, 'account_email=' + encodeURIComponent(email)); } if (uid) { if (u.indexOf('uid=') == -1) u = Lampa.Utils.addUrlComponent(u, 'uid=' + encodeURIComponent(uid)); else u = u.replace(/uid=[^&]+/, 'uid=' + encodeURIComponent(uid)); } if (u.indexOf('token=') == -1) { var token = '{token}'; if (token != '') u = Lampa.Utils.addUrlComponent(u, 'token={token}'); } 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() { network.silent(_this.account(m.playlist_url + add_url_query), function(json) { if (json.rch) { rchRun(json, function() { loadThis() }) } 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) { network.silent(this.account(video_url + '&json=true'), function(json) { if (json.rch) { rchRun(json, function() { _this.qualitys(video_url, oncomplite, error) }) } else oncomplite(json) }, error); }; this.clear = function() { network.clear(); }; } var ApiHttp$1 = new ApiHttp(); var Api = ApiHttp$1; //Defined.use_api == 'pwa' ? 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; 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); 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() { Lampa.Input.edit({ title: 'Поиск', value: '', free: true, nosave: true }, function(value) { Lampa.Controller.toggle('content'); if (value) { Lampa.Activity.push({ url: search.playlist_url + '?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; } function startPlugin() { window['plugin_sisi_' + 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); //Lampa.Search.addSource(Search) 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) { 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: Lampa.Lang.translate('lampac_sisiname'), icon: "" }); Lampa.SettingsApi.addParam({ component: 'sisi', param: { name: 'sisi_preview', type: 'trigger', values: '', "default": true }, field: { name: 'Предпросмотр', description: 'Показывать предпросмотр при наведение на карточку' }, onRender: function onRender(item) {} }); } function add() { var button = $("
  • \n
    \n \n
    \n
    " + Lampa.Lang.translate('lampac_sisiname') + "
    \n
  • "); if (Defined.use_api == 'pwa') { var pw = $('
    p
    '); pw.css({ position: 'absolute', right: '-0.3em', bottom: '-0.5em', backgroundColor: '#fff', color: '#000', 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.query(function() { Api.menu(function(data) { // let items = [{ // title: 'Все' // }] var items = []; if ({push_all} && (Defined.use_api == 'lampac' || 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: Lampa.Lang.translate('lampac_sisiname'), component: 'sisi_' + Defined.use_api, page: 1 }); } }, onBack: function onBack() { Lampa.Controller.toggle('menu'); } }); }, function() {}); }, function() {}) }); $('.menu .menu__list').eq(0).append(button); addFilter(); addSettings(); } if (window.appready) add(); else { Lampa.Listener.follow('app', function(e) { if (e.type == 'ready') add(); }); } } if (!window['plugin_sisi_' + Defined.use_api + '_ready']) { startPlugin(); /* if(Defined.use_api == 'pwa'){ 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() */ } })();