542 lines
18 KiB
JavaScript
542 lines
18 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var CP_blocking = require('./CP_blocking');
|
|
|
|
/**
|
|
* Configuration dependencies.
|
|
*/
|
|
|
|
var config = require('../config/production/config');
|
|
Object.keys(config).length === 0 &&
|
|
(config = require('../config/production/config.backup'));
|
|
var config_md5 = require('md5')(JSON.stringify(config));
|
|
|
|
var modules = require('../config/production/modules');
|
|
Object.keys(modules).length === 0 &&
|
|
(modules = require('../config/production/modules.backup'));
|
|
var modules_md5 = require('md5')(JSON.stringify(modules));
|
|
|
|
setInterval(function() {
|
|
if (
|
|
config_md5 &&
|
|
process.env['CP_CONFIG_MD5'] &&
|
|
config_md5 !== process.env['CP_CONFIG_MD5']
|
|
) {
|
|
config = require('../config/production/config');
|
|
Object.keys(config).length === 0 &&
|
|
(config = require('../config/production/config.backup'));
|
|
config_md5 = process.env['CP_CONFIG_MD5'];
|
|
}
|
|
if (
|
|
modules_md5 &&
|
|
process.env['CP_MODULES_MD5'] &&
|
|
modules_md5 !== process.env['CP_MODULES_MD5']
|
|
) {
|
|
modules = require('../config/production/modules');
|
|
Object.keys(modules).length === 0 &&
|
|
(modules = require('../config/production/modules.backup'));
|
|
modules_md5 = process.env['CP_MODULES_MD5'];
|
|
}
|
|
}, 3333);
|
|
|
|
/**
|
|
* Node dependencies.
|
|
*/
|
|
|
|
var md5 = require('md5');
|
|
|
|
/**
|
|
* Adding a page player.
|
|
*
|
|
* @param {String} type
|
|
* @param {Object} movie
|
|
* @param {Object} [options]
|
|
* @return {Object}
|
|
*/
|
|
|
|
function codePlayer(type, movie, options) {
|
|
if (arguments.length === 2) {
|
|
options = {};
|
|
options.protocol = config.protocol;
|
|
options.domain = config.subdomain + '' + config.domain;
|
|
options.origin =
|
|
config.protocol + '' + config.subdomain + '' + config.domain;
|
|
}
|
|
|
|
var code = {};
|
|
code.head = '';
|
|
code.player = '';
|
|
code.footer = '';
|
|
|
|
var serial = {};
|
|
serial.season = '';
|
|
serial.episode = '';
|
|
serial.translate = '';
|
|
|
|
var regexpEpisode = new RegExp('^s([0-9]{1,4})e([0-9]{1,4})(_(.*?)|)$', 'ig');
|
|
var execEpisode = regexpEpisode.exec(type);
|
|
if (execEpisode) {
|
|
serial.season = execEpisode[1];
|
|
serial.episode = execEpisode[2];
|
|
serial.translate = execEpisode[4]
|
|
? encodeURIComponent(execEpisode[4].trim())
|
|
: '';
|
|
}
|
|
|
|
var movie_year = modules.abuse.data.country_year
|
|
? movie.year && '' + movie.year === new Date().getFullYear() + ''
|
|
: true;
|
|
var whois_abuse = options && options.userinfo && options.userinfo.whois;
|
|
var list_abuse = modules.abuse.data.movies.indexOf('' + movie.kp_id) + 1;
|
|
var country_abuse = !!(
|
|
modules.abuse.data.country &&
|
|
movie_year &&
|
|
movie.countries_arr.filter(function(c) {
|
|
return new RegExp(options.userinfo.country, 'i').test(c);
|
|
}).length
|
|
);
|
|
if (
|
|
country_abuse === false &&
|
|
movie.custom &&
|
|
movie.custom.abuse &&
|
|
typeof movie.custom.abuse === 'string'
|
|
) {
|
|
country_abuse = movie.custom.abuse.split(',').filter(function(c) {
|
|
return new RegExp(options.userinfo.country_en, 'i').test(c.trim());
|
|
}).length;
|
|
}
|
|
var country_block_app =
|
|
options.userinfo &&
|
|
modules.blocking.data.app.countries &&
|
|
modules.blocking.data.app.countries.length
|
|
? modules.blocking.data.app.countries.filter(function(c) {
|
|
return new RegExp(options.userinfo.country_en, 'i').test(c);
|
|
}).length
|
|
: 0;
|
|
|
|
if (modules.player.data.display === 'cinemaplayer') {
|
|
if (type !== 'picture' && type !== 'trailer') {
|
|
if (
|
|
modules.abuse.status &&
|
|
options.userinfo.device !== 'app' &&
|
|
(list_abuse || country_abuse || whois_abuse)
|
|
) {
|
|
if (country_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_country;
|
|
}
|
|
if (list_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_list;
|
|
}
|
|
if (whois_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_whois;
|
|
}
|
|
if (
|
|
modules.app.status &&
|
|
modules.blocking.data.app.abuse &&
|
|
options.userinfo.device === 'desktop' &&
|
|
!whois_abuse
|
|
) {
|
|
var blocking_app = CP_blocking.code(code, movie, options, 'app');
|
|
if (blocking_app && blocking_app.player) {
|
|
code.player = blocking_app.player;
|
|
} else {
|
|
type = 'trailer';
|
|
}
|
|
} else {
|
|
code.player =
|
|
'' +
|
|
'<div style="position:absolute;background:#000 url(' +
|
|
config.default.image +
|
|
') 100% 100% no-repeat;background-size:100% 100%;z-index:4;top:0;left:0;width:100%;height:100%;color:#fff;text-align:center">' +
|
|
'<div style="margin:80px auto 0;width:70%">' +
|
|
modules.abuse.data.message +
|
|
'</div>' +
|
|
'</div>';
|
|
}
|
|
}
|
|
}
|
|
if (code.player) {
|
|
return code;
|
|
}
|
|
if (movie.player) {
|
|
if (/\.(mp4)$/i.test(movie.player)) {
|
|
code.player =
|
|
'<script src="https://cdn.fluidplayer.com/v3/current/fluidplayer.min.js"></script>' +
|
|
'<video id="cinemapress-cdn"><source src="' +
|
|
movie.player +
|
|
'" type="video/mp4"/></video>';
|
|
code.footer =
|
|
'<script>var cinemapress_player = fluidPlayer("cinemapress-cdn");</script>';
|
|
} else if (/\.(m3u8)$/i.test(movie.player)) {
|
|
code.player =
|
|
'<script src="/files/playerjs.js"></script>' +
|
|
'<div id="cinemapress-cdn"></div>';
|
|
code.footer =
|
|
'<script>var cinemapress_player = new Playerjs({id:"cinemapress-cdn", file:"' +
|
|
movie.player +
|
|
'"});</script>';
|
|
} else if (/^[^\n,]*$/.test(movie.player)) {
|
|
code.player =
|
|
'<iframe id="cinemapress-cdn" src="' +
|
|
movie.player.replace(/^.*?(http|\/\/)(.*$)/i, '$1$2') +
|
|
'" frameborder="0" allowfullscreen="allowfullscreen" webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen"></iframe>';
|
|
}
|
|
}
|
|
if (code.player) {
|
|
return code;
|
|
}
|
|
var d = (
|
|
modules.player.data.cinemaplayer[type] ||
|
|
modules.player.data.cinemaplayer['information']
|
|
).dataset;
|
|
if (d && d.length) {
|
|
var dataset = d.join(' ');
|
|
dataset = dataset
|
|
.replace(/\[id]/gi, movie.id)
|
|
.replace(/\[kp_id]/gi, movie.id)
|
|
.replace(
|
|
/\[imdb_id]/gi,
|
|
movie.custom.imdb_id ? movie.custom.imdb_id : ''
|
|
)
|
|
.replace(
|
|
/\[tmdb_id]/gi,
|
|
movie.custom.tmdb_id ? movie.custom.tmdb_id : ''
|
|
)
|
|
.replace(
|
|
/\[douban_id]/gi,
|
|
movie.custom.douban_id ? movie.custom.douban_id : ''
|
|
)
|
|
.replace(
|
|
/\[tvmaze_id]/gi,
|
|
movie.custom.tvmaze_id ? movie.custom.tvmaze_id : ''
|
|
)
|
|
.replace(
|
|
/\[movie_id]/gi,
|
|
movie.custom.movie_id ? movie.custom.movie_id : ''
|
|
)
|
|
.replace(/\[wa_id]/gi, movie.custom.wa_id ? movie.custom.wa_id : '')
|
|
.replace(/\[type]/gi, movie.type ? 'tv' : 'movie')
|
|
.replace(/\[season]/gi, serial.season || '')
|
|
.replace(/\[episode]/gi, serial.episode || '')
|
|
.replace(/\[title]/gi, (movie.title || '').replace(/"/g, "'"))
|
|
.replace(/\[year]/gi, movie.year || '')
|
|
.replace(
|
|
/\[ip]/gi,
|
|
(options && options.userinfo && options.userinfo.ip) || ''
|
|
)
|
|
.replace(
|
|
/\[hash]/gi,
|
|
md5(
|
|
((options && options.userinfo && options.userinfo.ip) || '') +
|
|
'.' +
|
|
config.urls.admin
|
|
)
|
|
)
|
|
.replace(/\[season]/gi, serial.season || '')
|
|
.replace(/\[episode]/gi, serial.episode || '');
|
|
code.player =
|
|
options &&
|
|
options.userinfo &&
|
|
options.userinfo.bot &&
|
|
options.userinfo.bot.all
|
|
? '<video controls style="width:100%;height:100%" poster="' +
|
|
config.default.image +
|
|
'">' +
|
|
' <source src="/balancer/' +
|
|
movie.id +
|
|
'.mp4" type="video/mp4">' +
|
|
'</video>'
|
|
: '<div id="cinemaplayer" ' + dataset + '></div>';
|
|
code.footer =
|
|
'<script src="' +
|
|
modules.player.data.embed.js +
|
|
'?v=' +
|
|
process.env['CP_VER'] +
|
|
'"></script>';
|
|
}
|
|
if (
|
|
!(
|
|
((options.userinfo && options.userinfo.device === 'app') ||
|
|
modules.blocking.data.app.abuse) &&
|
|
country_block_app <= 0
|
|
)
|
|
) {
|
|
code = CP_blocking.code(code, movie, options);
|
|
}
|
|
} else {
|
|
if (type === 'picture') {
|
|
var pictures = '';
|
|
|
|
if (movie.pictures.length) {
|
|
movie.pictures.forEach(function(picture) {
|
|
pictures +=
|
|
'<img src="' +
|
|
picture.picture +
|
|
'" alt="' +
|
|
movie.title.replace(/"/g, "'") +
|
|
'" style="width:100%;height:100%;">';
|
|
});
|
|
} else {
|
|
pictures +=
|
|
'<img src="' +
|
|
config.default.image +
|
|
'" alt="' +
|
|
movie.title.replace(/"/g, "'") +
|
|
'" style="width:100%;height:100%;">';
|
|
}
|
|
|
|
code.head =
|
|
'' +
|
|
'<link rel="stylesheet" href="/themes/default/public/desktop/css/ideal-image-slider.css">';
|
|
|
|
code.player =
|
|
'' + '<div id="slider" class="img_tmhover">' + pictures + '</div>';
|
|
|
|
code.footer =
|
|
'' +
|
|
'<script src="/themes/default/public/desktop/js/ideal-image-slider.min.js"></script>' +
|
|
'<script>var sldr = new IdealImageSlider.Slider("#slider");sldr.start();</script>';
|
|
} else if (type === 'trailer') {
|
|
scriptPlayer('trailer');
|
|
} else {
|
|
if (
|
|
modules.abuse.status &&
|
|
(list_abuse || country_abuse || whois_abuse) &&
|
|
options.userinfo.device !== 'app'
|
|
) {
|
|
if (country_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_country;
|
|
}
|
|
if (list_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_list;
|
|
}
|
|
if (whois_abuse) {
|
|
code.status_code = modules.abuse.data.status_code_whois;
|
|
}
|
|
|
|
if (
|
|
modules.app.status &&
|
|
modules.blocking.data.app.abuse &&
|
|
options.userinfo.device === 'desktop' &&
|
|
!whois_abuse
|
|
) {
|
|
scriptPlayer('trailer');
|
|
var code2 = CP_blocking.code(code, movie, options, 'app');
|
|
code.player = code2 && code2.player ? code2.player : code.player;
|
|
} else {
|
|
code.player =
|
|
'' +
|
|
'<div style="position:absolute;background:#000 url(' +
|
|
config.default.image +
|
|
') 100% 100% no-repeat;background-size:100% 100%;z-index:4;top:0;left:0;width:100%;height:100%;color:#fff;text-align:center">' +
|
|
'<div style="margin:80px auto 0;width:70%">' +
|
|
modules.abuse.data.message +
|
|
'</div>' +
|
|
'</div>';
|
|
}
|
|
|
|
return code;
|
|
}
|
|
|
|
if (type === 'download') {
|
|
scriptPlayer('torrent');
|
|
} else if (serial.season && serial.episode) {
|
|
if (modules.player.data.display === 'script') {
|
|
scriptPlayer(true);
|
|
} else {
|
|
scriptPlayer();
|
|
}
|
|
} else if (movie.player) {
|
|
if (/\/\/[^,]*,/.test(movie.player)) {
|
|
scriptPlayer(movie.player);
|
|
} else {
|
|
scriptPlayer();
|
|
}
|
|
} else if (modules.player.data.display === 'script') {
|
|
scriptPlayer(true);
|
|
} else {
|
|
scriptPlayer();
|
|
}
|
|
|
|
var l =
|
|
options.userinfo &&
|
|
modules.blocking.data.app.countries &&
|
|
modules.blocking.data.app.countries.length
|
|
? modules.blocking.data.app.countries.filter(function(c) {
|
|
return new RegExp(options.userinfo.country_en, 'i').test(c);
|
|
}).length
|
|
: 0;
|
|
|
|
code =
|
|
((options.userinfo && options.userinfo.device === 'app') ||
|
|
modules.blocking.data.app.abuse) &&
|
|
l <= 0
|
|
? code
|
|
: CP_blocking.code(code, movie, options);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Script player.
|
|
*/
|
|
|
|
function scriptPlayer(player) {
|
|
var data = {};
|
|
|
|
try {
|
|
if (modules.player.data.script) {
|
|
data = JSON.parse(modules.player.data.script);
|
|
}
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
|
|
if (type === 'online' || serial.season) {
|
|
data['data-player'] = (data['data-player'] || '')
|
|
.replace(/,trailer|trailer,/gi, '')
|
|
.replace(/,torrent|torrent,/gi, '');
|
|
}
|
|
|
|
data['data-player'] = (typeof player === 'string'
|
|
? player
|
|
: data['data-player'] || ''
|
|
)
|
|
.replace(/\[imdb_id]/, movie.custom.imdb_id ? movie.custom.imdb_id : '')
|
|
.replace(/\[tmdb_id]/, movie.custom.tmdb_id ? movie.custom.tmdb_id : '')
|
|
.replace(/\[type]/, '' + movie.type === '1' ? movie.type : '');
|
|
data['data-title'] = movie.title_full ? movie.title_full : '';
|
|
data['data-kinopoisk'] =
|
|
movie.kp_id &&
|
|
parseInt(movie.kp_id) &&
|
|
(parseInt(movie.kp_id) <= 100000000 || parseInt(movie.kp_id) > 1000000000)
|
|
? '' + (parseInt(movie.kp_id) % 1000000000)
|
|
: movie.custom && movie.custom.movie_id
|
|
? movie.custom.movie_id
|
|
: '';
|
|
data['data-imdb'] = movie.custom.imdb_id ? movie.custom.imdb_id : '';
|
|
data['data-tmdb'] = movie.custom.tmdb_id ? movie.custom.tmdb_id : '';
|
|
data['data-douban'] = movie.custom.douban_id ? movie.custom.douban_id : '';
|
|
data['data-tvmaze'] = movie.custom.tvmaze_id ? movie.custom.tvmaze_id : '';
|
|
data['data-wa'] = movie.custom.wa_id ? movie.custom.wa_id : '';
|
|
data['data-season'] = serial.season ? serial.season : '';
|
|
data['data-episode'] = serial.episode ? serial.episode : '';
|
|
data['data-translate'] = serial.translate ? serial.translate : '';
|
|
data['data-country'] = config.country ? config.country : '';
|
|
data['data-language'] = config.language ? config.language : '';
|
|
if (
|
|
modules.tv &&
|
|
modules.tv.status &&
|
|
(/^tv\./.test(options.domain) || /\/tv-version$/.test(options.domain))
|
|
) {
|
|
data['data-tv'] = '1';
|
|
data['data-autoplay'] = '1';
|
|
}
|
|
|
|
var video = '';
|
|
for (var dkey in data) {
|
|
if (data.hasOwnProperty(dkey) && data[dkey]) {
|
|
data[dkey] = ('' + data[dkey]).trim();
|
|
video += ' ' + dkey + '="' + encodeURIComponent(data[dkey]) + '"';
|
|
}
|
|
}
|
|
|
|
code.player =
|
|
options &&
|
|
options.userinfo &&
|
|
options.userinfo.bot &&
|
|
options.userinfo.bot.all
|
|
? '' +
|
|
'<video id="yohoho" controls ' +
|
|
video +
|
|
' style="display:none">' +
|
|
' <source src="/balancer/' +
|
|
movie.kp_id +
|
|
'.mp4" type="video/mp4">' +
|
|
'</video>'
|
|
: '<div id="yohoho" ' + video + ' style="display:none"></div>';
|
|
|
|
if (player || type === 'online') {
|
|
code.footer =
|
|
'<script>(function(){var e=document,t=e.createElement("script");t.async=true;t.src="' +
|
|
(options &&
|
|
options.userinfo &&
|
|
options.userinfo.bot &&
|
|
options.userinfo.bot.all
|
|
? ''
|
|
: modules.player.data.js) +
|
|
'",(e.head||e.body).appendChild(t)})();</script>' +
|
|
'<script>document.addEventListener("DOMContentLoaded",function(){window.addEventListener("message",function(t){if(t&&t.data){var a=document.querySelector(\'[data-yo="quality"]\'),e=document.querySelector(\'[data-yo="translate"]\');t.data.quality&&a&&(a.innerHTML=t.data.quality),t.data.translate&&e&&(e.innerHTML=t.data.translate)}})});</script>';
|
|
} else if (movie.player && /\.(mp4|mkv|avi|mov|flv)$/.test(movie.player)) {
|
|
code.player =
|
|
'' +
|
|
'<script src="https://cdn.fluidplayer.com/v3/current/fluidplayer.min.js"></script>' +
|
|
'<video id="cinemapress-cdn"><source src="' +
|
|
movie.player +
|
|
'" type="video/mp4"/></video>';
|
|
code.footer =
|
|
'' +
|
|
'<script>var cinemapress_player = fluidPlayer("cinemapress-cdn");</script>';
|
|
} else if (movie.player && /\.(m3u8)$/.test(movie.player)) {
|
|
code.player =
|
|
'' +
|
|
'<script src="/files/playerjs.js"></script>' +
|
|
'<video id="cinemapress-cdn"><source src="' +
|
|
movie.player +
|
|
'" type="application/x-mpegURL"/></video>';
|
|
code.footer =
|
|
'' +
|
|
'<script>var cinemapress_player = new Playerjs({replace:"video"});</script>';
|
|
} else {
|
|
var param = {};
|
|
|
|
param.title = movie.title ? movie.title : '';
|
|
param.year = movie.year ? movie.year : '';
|
|
param.type = movie.type + '' ? movie.type : '';
|
|
param.kp_id = movie.kp_id ? movie.kp_id : '';
|
|
param.imdb_id = movie.custom.imdb_id ? movie.custom.imdb_id : '';
|
|
param.tmdb_id = movie.custom.tmdb_id ? movie.custom.tmdb_id : '';
|
|
param.douban_id = movie.custom.douban_id ? movie.custom.douban_id : '';
|
|
param.tvmaze_id = movie.custom.tvmaze_id ? movie.custom.tvmaze_id : '';
|
|
param.wa_id = movie.custom.wa_id ? movie.custom.wa_id : '';
|
|
param.movie_id = movie.custom.movie_id ? movie.custom.movie_id : '';
|
|
param.season = serial.season ? serial.season : '';
|
|
param.episode = serial.episode ? serial.episode : '';
|
|
param.translate = serial.translate ? serial.translate : '';
|
|
param.player = movie.player && movie.player !== '1' ? movie.player : '';
|
|
if (
|
|
modules.tv &&
|
|
modules.tv.status &&
|
|
(/^tv\./.test(options.domain) || /\/tv-version$/.test(options.domain))
|
|
) {
|
|
param.tv = '1';
|
|
param.autoplay = '1';
|
|
}
|
|
|
|
var script = '';
|
|
for (var pkey in param) {
|
|
if (pkey && param.hasOwnProperty(pkey) && param[pkey]) {
|
|
param[pkey] = ('' + param[pkey]).trim();
|
|
script +=
|
|
(script ? '&' : '') + pkey + '=' + encodeURIComponent(param[pkey]);
|
|
}
|
|
}
|
|
|
|
code.footer =
|
|
'<script>(function(){var e=document,t=e.createElement("script");t.async=true;t.src="/player?' +
|
|
script +
|
|
'",(e.head||e.body).appendChild(t)})();</script>' +
|
|
'<script>document.addEventListener("DOMContentLoaded",function(){window.addEventListener("message",function(t){if(t&&t.data){var a=document.querySelector(\'[data-yo="quality"]\'),e=document.querySelector(\'[data-yo="translate"]\');t.data.quality&&a&&(a.innerHTML=t.data.quality),t.data.translate&&e&&(e.innerHTML=t.data.translate)}})});</script>';
|
|
}
|
|
}
|
|
|
|
return code;
|
|
}
|
|
|
|
module.exports = {
|
|
code: codePlayer
|
|
};
|