Почему постер КиноПоиска вместо постера фильма?

Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#21
Не все постеры загрузились, есть фильмы где постеры отсутсвуют... что в данном случае делать? Опять через терминал выбрать пункт 9? Или надо сперва как-то удалить то что есть сейчас?
Какого постера нет?
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#22
Добавьте код в Админ-панель - Вставить код - В верх страницы
<meta name="referrer" content="same-origin">
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#23
Отлично, все картинки теперь будут отображаться на сайте.

Напишите в поддержку Moonwalk и узнайте, что делать если сайт запрещает Referrer.
Иначе в их плеере идет эта проверка {"error":"invalid_request_ref"}
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#25
В новой версии будет добавлена опция «проксирования» всех изображений.

До этого, все изменения можно сделать вручную:
  • Создать файл /routes/proxy.js
JavaScript:
'use strict';

/**
 * Node dependencies.
 */

var request = require('request');
var express = require('express');
var router  = express.Router();

/**
 * Proxy.
 */

router.get(/(\/t\/p\/(w92|w185|w300|w1280|original)|\/images\/(film_iphone|film_big|kadr))\/[a-z0-9\-_]*\.jpg/i, function(req, res) {
    request.get({
        url: req.protocol + ':/' + req.originalUrl,
        timeout: 1000,
        agent: false,
        pool: {maxSockets: 100}
    })
        .on('error', function(err) {
            console.log(err.message || err, req.originalUrl);
        })
        .pipe(res);
});

module.exports = router;
  • Добавить строку в app.js
JavaScript:
app.use(bodyParser.urlencoded({limit: '64mb', extended: true})); // Найти строку и добавить после нее
app.use(/\/(cdn\.cinemapress\.org|image\.cinemapress\.org)/, require('./routes/proxy')); // Добавить строку
  • Изменить функцию createImgUrl в /lib/CP_structure.js
JavaScript:
// Найти и полностью заменить функцию createImgUrl
function createImgUrl(movie, type, size, id) {

    var st = config.image.addr;
    config.image.proxy = 1; // Данный параметр будет добавлен в админ-панель
    var proxy = config.image.proxy ? config.domain + '/' : '';

    var img = '';

    if (type === 'picture') {
        if (!id) {
            var p = movie.pictures.split(',');
            var r = Math.floor(Math.random() * p.length);
            id = p[r].trim();
        }
        if (st === config.domain && (size === 'big' || size === 'medium')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + id).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test('' + id)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w300' + id;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + id;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w1280' + id;
                }
                return img;
            }
            else if (('' + id).indexOf('//')+1) {
                return id;
            }
            else {
                return config.protocol + config.domain + id;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    img = config.protocol + proxy + st + '/images/kadr/sm_' + id + '.jpg';
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
            }
            return img;
        }
    }
    else {
        if (!id) {
            id = movie.kp_id;
        }
        if (st === config.domain && (size === 'big')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + movie.poster).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test(movie.poster)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w92' + movie.poster;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + movie.poster;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w185' + movie.poster;
                }
                return img;
            }
            else if (/^http/i.test(movie.poster)) {
                return movie.poster;
            }
            else {
                return config.protocol + config.domain + movie.poster;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    var width = (config.image.size/2 >= 60) ? config.image.size/2 : 60;
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + width;
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/film_big/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + config.image.size;
            }
            return img;
        }
    }

    var separator = config.urls.separator;
    var prefix_id = 'img' + id;
    var url = config.urls.movie_url;

    url = url.replace(/\[prefix_id]/gi, prefix_id);
    url = url.replace(/\[separator]/gi, separator);

    var keys = {
        "title"     : movie.title_ru || movie.title_en,
        "title_ru"  : movie.title_ru,
        "title_en"  : movie.title_en,
        "year"      : movie.year,
        "country"   : movie.country.split(',')[0],
        "director"  : movie.director.split(',')[0],
        "genre"     : movie.genre.split(',')[0],
        "actor"     : movie.actor.split(',')[0]
    };

    for (var key in keys) {
        if (keys.hasOwnProperty(key)) {
            if (!keys[key]) {
                url = url.replace(separator + '[' + key + ']' + separator, separator);
                url = url.replace('[' + key + ']' + separator, '');
                url = url.replace(separator + '[' + key + ']', '');
            }
            else {
                url = url.replace('[' + key + ']', getSlug(keys[key], separator));
            }
        }
    }

    url = url.split('.')[0];

    img = '/images/' + type + '/' + size + '/' + url + '.jpg';

    return img;

}
  • Полностью заменить файл /modules/CP_viewed.js
JavaScript:
'use strict';

/**
 * Configuration dependencies.
 */

var modules = require('../config/production/modules');

/**
 * Add the function to continue viewing.
 * All pages in footer should be a block: id="recentlyViewed"
 *
 * @return {String}
 */

function codeViewed() {

    var code = '';

    if (modules.viewed.status) {

        var count = modules.viewed.data && modules.viewed.data.count ? modules.viewed.data.count : 20;

        code = 'function getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,"\\\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}function setCookie(e,t,n){var i=(n=n||{}).expires;if("number"===typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var c in n)if(n.hasOwnProperty(c)){o+="; "+c;var a=n[c];!0!==a&&(o+="="+a)}document.cookie=o}window.addEventListener("load",function(){function e(){var e=new RegExp("([htps:]{5,6}//[^/]*/[^/]*/[^/]*)","ig").exec(window.location.href);return e&&e[1]?e[1]:""}var t,n,i,r=(n=e(),i=(t=document.getElementById("cinemapress-poster"))&&t.src?t.src:"",n&&i?n+"|"+i:""),o=e();c=getCookie("CP_viewed"),a=document.getElementById("recentlyViewed"),d=c?c.split("~"):[];var p=(o)?d.filter(function(e){return-1===e.indexOf(""+o)}):d;if(r&&((p.length>=parseInt(' + count + ')||3200<p.join("~").length)&&p.pop(),p.unshift(r)),a){var l=document.querySelectorAll(".recentlyViewedBlock");if(l&&l.length)for(var s=0;s<l.length;s++)l[s].style.display="block";for(var u=0;u<p.length;u++)if(p[u]){var f=p[u].split("|"),m=document.createElement("a");if(!f[0]||!f[1]){p.splice(u,1),u--;continue}m.setAttribute("href",f[0]);var g=document.createElement("img");g.setAttribute("src",f[1]),g.setAttribute("style","width: 52px; height: 72px; margin: 3px; border-radius:3px;"),m.appendChild(g),a.appendChild(m)}}r&&setCookie("CP_viewed",p.join("~"),{expires:864e3,path:"/"})});';

        code = '<script>' + code + '</script>';
    }

    return code;

}

module.exports = {
    "code" : codeViewed
};
 
Енот
Новичек
Регистрация
8 Сен 2018
Сообщения
188
#26
В новой версии будет добавлена опция «проксирования» всех изображений.

До этого, все изменения можно сделать вручную:
  • Создать файл /routes/proxy.js
JavaScript:
'use strict';

/**
* Node dependencies.
*/

var request = require('request');
var express = require('express');
var router  = express.Router();

/**
* Proxy.
*/

router.get(/(\/t\/p\/(w92|w185|w300|w1280|original)|\/images\/(film_iphone|film_big|kadr))\/[a-z0-9\-_]*\.jpg/i, function(req, res) {
    request.get({
        url: req.protocol + ':/' + req.originalUrl,
        timeout: 1000,
        agent: false,
        pool: {maxSockets: 100}
    })
        .on('error', function(err) {
            console.log(err.message || err, req.originalUrl);
        })
        .pipe(res);
});

module.exports = router;
  • Добавить строку в app.js
JavaScript:
app.use(bodyParser.urlencoded({limit: '64mb', extended: true})); // Найти строку и добавить после нее
app.use(/\/(cdn\.cinemapress\.org|image\.cinemapress\.org)/, require('./routes/proxy')); // Добавить строку
  • Изменить функцию createImgUrl в /lib/CP_structure.js
JavaScript:
// Найти и полностью заменить функцию createImgUrl
function createImgUrl(movie, type, size, id) {

    var st = config.image.addr;
    config.image.proxy = 1; // Данный параметр будет добавлен в админ-панель
    var proxy = config.image.proxy ? config.domain + '/' : '';

    var img = '';

    if (type === 'picture') {
        if (!id) {
            var p = movie.pictures.split(',');
            var r = Math.floor(Math.random() * p.length);
            id = p[r].trim();
        }
        if (st === config.domain && (size === 'big' || size === 'medium')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + id).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test('' + id)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w300' + id;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + id;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w1280' + id;
                }
                return img;
            }
            else if (('' + id).indexOf('//')+1) {
                return id;
            }
            else {
                return config.protocol + config.domain + id;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    img = config.protocol + proxy + st + '/images/kadr/sm_' + id + '.jpg';
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
            }
            return img;
        }
    }
    else {
        if (!id) {
            id = movie.kp_id;
        }
        if (st === config.domain && (size === 'big')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + movie.poster).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test(movie.poster)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w92' + movie.poster;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + movie.poster;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w185' + movie.poster;
                }
                return img;
            }
            else if (/^http/i.test(movie.poster)) {
                return movie.poster;
            }
            else {
                return config.protocol + config.domain + movie.poster;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    var width = (config.image.size/2 >= 60) ? config.image.size/2 : 60;
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + width;
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/film_big/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + config.image.size;
            }
            return img;
        }
    }

    var separator = config.urls.separator;
    var prefix_id = 'img' + id;
    var url = config.urls.movie_url;

    url = url.replace(/\[prefix_id]/gi, prefix_id);
    url = url.replace(/\[separator]/gi, separator);

    var keys = {
        "title"     : movie.title_ru || movie.title_en,
        "title_ru"  : movie.title_ru,
        "title_en"  : movie.title_en,
        "year"      : movie.year,
        "country"   : movie.country.split(',')[0],
        "director"  : movie.director.split(',')[0],
        "genre"     : movie.genre.split(',')[0],
        "actor"     : movie.actor.split(',')[0]
    };

    for (var key in keys) {
        if (keys.hasOwnProperty(key)) {
            if (!keys[key]) {
                url = url.replace(separator + '[' + key + ']' + separator, separator);
                url = url.replace('[' + key + ']' + separator, '');
                url = url.replace(separator + '[' + key + ']', '');
            }
            else {
                url = url.replace('[' + key + ']', getSlug(keys[key], separator));
            }
        }
    }

    url = url.split('.')[0];

    img = '/images/' + type + '/' + size + '/' + url + '.jpg';

    return img;

}
  • Полностью заменить файл /modules/CP_viewed.js
JavaScript:
'use strict';

/**
* Configuration dependencies.
*/

var modules = require('../config/production/modules');

/**
* Add the function to continue viewing.
* All pages in footer should be a block: id="recentlyViewed"
*
* @return {String}
*/

function codeViewed() {

    var code = '';

    if (modules.viewed.status) {

        var count = modules.viewed.data && modules.viewed.data.count ? modules.viewed.data.count : 20;

        code = 'function getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,"\\\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}function setCookie(e,t,n){var i=(n=n||{}).expires;if("number"===typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var c in n)if(n.hasOwnProperty(c)){o+="; "+c;var a=n[c];!0!==a&&(o+="="+a)}document.cookie=o}window.addEventListener("load",function(){function e(){var e=new RegExp("([htps:]{5,6}//[^/]*/[^/]*/[^/]*)","ig").exec(window.location.href);return e&&e[1]?e[1]:""}var t,n,i,r=(n=e(),i=(t=document.getElementById("cinemapress-poster"))&&t.src?t.src:"",n&&i?n+"|"+i:""),o=e();c=getCookie("CP_viewed"),a=document.getElementById("recentlyViewed"),d=c?c.split("~"):[];var p=(o)?d.filter(function(e){return-1===e.indexOf(""+o)}):d;if(r&&((p.length>=parseInt(' + count + ')||3200<p.join("~").length)&&p.pop(),p.unshift(r)),a){var l=document.querySelectorAll(".recentlyViewedBlock");if(l&&l.length)for(var s=0;s<l.length;s++)l[s].style.display="block";for(var u=0;u<p.length;u++)if(p[u]){var f=p[u].split("|"),m=document.createElement("a");if(!f[0]||!f[1]){p.splice(u,1),u--;continue}m.setAttribute("href",f[0]);var g=document.createElement("img");g.setAttribute("src",f[1]),g.setAttribute("style","width: 52px; height: 72px; margin: 3px; border-radius:3px;"),m.appendChild(g),a.appendChild(m)}}r&&setCookie("CP_viewed",p.join("~"),{expires:864e3,path:"/"})});';

        code = '<script>' + code + '</script>';
    }

    return code;

}

module.exports = {
    "code" : codeViewed
};
Сделал, спасибо, кадры теперь работают... единственное что перестало работать это модуль "cp_viewed"..

Код:
Uncaught SyntaxError: Unexpected string
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#27
Сделал, спасибо, кадры теперь работают... единственное что перестало работать это модуль "cp_viewed"..
Вы там кастомно меняли этот код, если у Вас остался старый, оставьте его. Будет работать.
 
Енот
Новичек
Регистрация
8 Сен 2018
Сообщения
188
#28
В новой версии будет добавлена опция «проксирования» всех изображений.

До этого, все изменения можно сделать вручную:
  • Создать файл /routes/proxy.js
JavaScript:
'use strict';

/**
* Node dependencies.
*/

var request = require('request');
var express = require('express');
var router  = express.Router();

/**
* Proxy.
*/

router.get(/(\/t\/p\/(w92|w185|w300|w1280|original)|\/images\/(film_iphone|film_big|kadr))\/[a-z0-9\-_]*\.jpg/i, function(req, res) {
    request.get({
        url: req.protocol + ':/' + req.originalUrl,
        timeout: 1000,
        agent: false,
        pool: {maxSockets: 100}
    })
        .on('error', function(err) {
            console.log(err.message || err, req.originalUrl);
        })
        .pipe(res);
});

module.exports = router;
  • Добавить строку в app.js
JavaScript:
app.use(bodyParser.urlencoded({limit: '64mb', extended: true})); // Найти строку и добавить после нее
app.use(/\/(cdn\.cinemapress\.org|image\.cinemapress\.org)/, require('./routes/proxy')); // Добавить строку
  • Изменить функцию createImgUrl в /lib/CP_structure.js
JavaScript:
// Найти и полностью заменить функцию createImgUrl
function createImgUrl(movie, type, size, id) {

    var st = config.image.addr;
    config.image.proxy = 1; // Данный параметр будет добавлен в админ-панель
    var proxy = config.image.proxy ? config.domain + '/' : '';

    var img = '';

    if (type === 'picture') {
        if (!id) {
            var p = movie.pictures.split(',');
            var r = Math.floor(Math.random() * p.length);
            id = p[r].trim();
        }
        if (st === config.domain && (size === 'big' || size === 'medium')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + id).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test('' + id)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w300' + id;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + id;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w1280' + id;
                }
                return img;
            }
            else if (('' + id).indexOf('//')+1) {
                return id;
            }
            else {
                return config.protocol + config.domain + id;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    img = config.protocol + proxy + st + '/images/kadr/sm_' + id + '.jpg';
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
            }
            return img;
        }
    }
    else {
        if (!id) {
            id = movie.kp_id;
        }
        if (st === config.domain && (size === 'big')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + movie.poster).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test(movie.poster)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w92' + movie.poster;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + movie.poster;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w185' + movie.poster;
                }
                return img;
            }
            else if (/^http/i.test(movie.poster)) {
                return movie.poster;
            }
            else {
                return config.protocol + config.domain + movie.poster;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    var width = (config.image.size/2 >= 60) ? config.image.size/2 : 60;
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + width;
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/film_big/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + config.image.size;
            }
            return img;
        }
    }

    var separator = config.urls.separator;
    var prefix_id = 'img' + id;
    var url = config.urls.movie_url;

    url = url.replace(/\[prefix_id]/gi, prefix_id);
    url = url.replace(/\[separator]/gi, separator);

    var keys = {
        "title"     : movie.title_ru || movie.title_en,
        "title_ru"  : movie.title_ru,
        "title_en"  : movie.title_en,
        "year"      : movie.year,
        "country"   : movie.country.split(',')[0],
        "director"  : movie.director.split(',')[0],
        "genre"     : movie.genre.split(',')[0],
        "actor"     : movie.actor.split(',')[0]
    };

    for (var key in keys) {
        if (keys.hasOwnProperty(key)) {
            if (!keys[key]) {
                url = url.replace(separator + '[' + key + ']' + separator, separator);
                url = url.replace('[' + key + ']' + separator, '');
                url = url.replace(separator + '[' + key + ']', '');
            }
            else {
                url = url.replace('[' + key + ']', getSlug(keys[key], separator));
            }
        }
    }

    url = url.split('.')[0];

    img = '/images/' + type + '/' + size + '/' + url + '.jpg';

    return img;

}
  • Полностью заменить файл /modules/CP_viewed.js
JavaScript:
'use strict';

/**
* Configuration dependencies.
*/

var modules = require('../config/production/modules');

/**
* Add the function to continue viewing.
* All pages in footer should be a block: id="recentlyViewed"
*
* @return {String}
*/

function codeViewed() {

    var code = '';

    if (modules.viewed.status) {

        var count = modules.viewed.data && modules.viewed.data.count ? modules.viewed.data.count : 20;

        code = 'function getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,"\\\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}function setCookie(e,t,n){var i=(n=n||{}).expires;if("number"===typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var c in n)if(n.hasOwnProperty(c)){o+="; "+c;var a=n[c];!0!==a&&(o+="="+a)}document.cookie=o}window.addEventListener("load",function(){function e(){var e=new RegExp("([htps:]{5,6}//[^/]*/[^/]*/[^/]*)","ig").exec(window.location.href);return e&&e[1]?e[1]:""}var t,n,i,r=(n=e(),i=(t=document.getElementById("cinemapress-poster"))&&t.src?t.src:"",n&&i?n+"|"+i:""),o=e();c=getCookie("CP_viewed"),a=document.getElementById("recentlyViewed"),d=c?c.split("~"):[];var p=(o)?d.filter(function(e){return-1===e.indexOf(""+o)}):d;if(r&&((p.length>=parseInt(' + count + ')||3200<p.join("~").length)&&p.pop(),p.unshift(r)),a){var l=document.querySelectorAll(".recentlyViewedBlock");if(l&&l.length)for(var s=0;s<l.length;s++)l[s].style.display="block";for(var u=0;u<p.length;u++)if(p[u]){var f=p[u].split("|"),m=document.createElement("a");if(!f[0]||!f[1]){p.splice(u,1),u--;continue}m.setAttribute("href",f[0]);var g=document.createElement("img");g.setAttribute("src",f[1]),g.setAttribute("style","width: 52px; height: 72px; margin: 3px; border-radius:3px;"),m.appendChild(g),a.appendChild(m)}}r&&setCookie("CP_viewed",p.join("~"),{expires:864e3,path:"/"})});';

        code = '<script>' + code + '</script>';
    }

    return code;

}

module.exports = {
    "code" : codeViewed
};
Единственное проблема с проксированием это что когда делается теперь “share” изображения (постер, кадры) не видны... там что-то со ссылкой
 
Новичек
Регистрация
27 Окт 2018
Сообщения
5
#29
В новой версии будет добавлена опция «проксирования» всех изображений.

До этого, все изменения можно сделать вручную:
  • Создать файл /routes/proxy.js
JavaScript:
'use strict';

/**
* Node dependencies.
*/

var request = require('request');
var express = require('express');
var router  = express.Router();

/**
* Proxy.
*/

router.get(/(\/t\/p\/(w92|w185|w300|w1280|original)|\/images\/(film_iphone|film_big|kadr))\/[a-z0-9\-_]*\.jpg/i, function(req, res) {
    request.get({
        url: req.protocol + ':/' + req.originalUrl,
        timeout: 1000,
        agent: false,
        pool: {maxSockets: 100}
    })
        .on('error', function(err) {
            console.log(err.message || err, req.originalUrl);
        })
        .pipe(res);
});

module.exports = router;
  • Добавить строку в app.js
JavaScript:
app.use(bodyParser.urlencoded({limit: '64mb', extended: true})); // Найти строку и добавить после нее
app.use(/\/(cdn\.cinemapress\.org|image\.cinemapress\.org)/, require('./routes/proxy')); // Добавить строку
  • Изменить функцию createImgUrl в /lib/CP_structure.js
JavaScript:
// Найти и полностью заменить функцию createImgUrl
function createImgUrl(movie, type, size, id) {

    var st = config.image.addr;
    config.image.proxy = 1; // Данный параметр будет добавлен в админ-панель
    var proxy = config.image.proxy ? config.domain + '/' : '';

    var img = '';

    if (type === 'picture') {
        if (!id) {
            var p = movie.pictures.split(',');
            var r = Math.floor(Math.random() * p.length);
            id = p[r].trim();
        }
        if (st === config.domain && (size === 'big' || size === 'medium')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + id).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test('' + id)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w300' + id;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + id;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w1280' + id;
                }
                return img;
            }
            else if (('' + id).indexOf('//')+1) {
                return id;
            }
            else {
                return config.protocol + config.domain + id;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    img = config.protocol + proxy + st + '/images/kadr/sm_' + id + '.jpg';
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/kadr/' + id + '.jpg';
            }
            return img;
        }
    }
    else {
        if (!id) {
            id = movie.kp_id;
        }
        if (st === config.domain && (size === 'big')) {
            st = 'cdn.cinemapress.org';
        }
        if (('' + movie.poster).replace(/\d/g, '')) {
            if (/^\/[a-z0-9]*\.(jpg|png)$/i.test(movie.poster)) {
                st = 'image.cinemapress.org';
                switch (size) {
                    case 'small':
                        img = config.protocol + proxy + st + '/t/p/w92' + movie.poster;
                        break;
                    case 'big':
                        img = config.protocol + proxy + st + '/t/p/original' + movie.poster;
                        break;
                    default:
                        img = config.protocol + proxy + st + '/t/p/w185' + movie.poster;
                }
                return img;
            }
            else if (/^http/i.test(movie.poster)) {
                return movie.poster;
            }
            else {
                return config.protocol + config.domain + movie.poster;
            }
        }
        if (st !== config.domain) {
            switch (size) {
                case 'small':
                    var width = (config.image.size/2 >= 60) ? config.image.size/2 : 60;
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + width;
                    break;
                case 'big':
                    img = config.protocol + proxy + st + '/images/film_big/' + id + '.jpg';
                    break;
                default:
                    img = config.protocol + proxy + st + '/images/film_iphone/iphone_' + id + '.jpg?width=' + config.image.size;
            }
            return img;
        }
    }

    var separator = config.urls.separator;
    var prefix_id = 'img' + id;
    var url = config.urls.movie_url;

    url = url.replace(/\[prefix_id]/gi, prefix_id);
    url = url.replace(/\[separator]/gi, separator);

    var keys = {
        "title"     : movie.title_ru || movie.title_en,
        "title_ru"  : movie.title_ru,
        "title_en"  : movie.title_en,
        "year"      : movie.year,
        "country"   : movie.country.split(',')[0],
        "director"  : movie.director.split(',')[0],
        "genre"     : movie.genre.split(',')[0],
        "actor"     : movie.actor.split(',')[0]
    };

    for (var key in keys) {
        if (keys.hasOwnProperty(key)) {
            if (!keys[key]) {
                url = url.replace(separator + '[' + key + ']' + separator, separator);
                url = url.replace('[' + key + ']' + separator, '');
                url = url.replace(separator + '[' + key + ']', '');
            }
            else {
                url = url.replace('[' + key + ']', getSlug(keys[key], separator));
            }
        }
    }

    url = url.split('.')[0];

    img = '/images/' + type + '/' + size + '/' + url + '.jpg';

    return img;

}
  • Полностью заменить файл /modules/CP_viewed.js
JavaScript:
'use strict';

/**
* Configuration dependencies.
*/

var modules = require('../config/production/modules');

/**
* Add the function to continue viewing.
* All pages in footer should be a block: id="recentlyViewed"
*
* @return {String}
*/

function codeViewed() {

    var code = '';

    if (modules.viewed.status) {

        var count = modules.viewed.data && modules.viewed.data.count ? modules.viewed.data.count : 20;

        code = 'function getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,"\\\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}function setCookie(e,t,n){var i=(n=n||{}).expires;if("number"===typeof i&&i){var r=new Date;r.setTime(r.getTime()+1e3*i),i=n.expires=r}i&&i.toUTCString&&(n.expires=i.toUTCString());var o=e+"="+(t=encodeURIComponent(t));for(var c in n)if(n.hasOwnProperty(c)){o+="; "+c;var a=n[c];!0!==a&&(o+="="+a)}document.cookie=o}window.addEventListener("load",function(){function e(){var e=new RegExp("([htps:]{5,6}//[^/]*/[^/]*/[^/]*)","ig").exec(window.location.href);return e&&e[1]?e[1]:""}var t,n,i,r=(n=e(),i=(t=document.getElementById("cinemapress-poster"))&&t.src?t.src:"",n&&i?n+"|"+i:""),o=e();c=getCookie("CP_viewed"),a=document.getElementById("recentlyViewed"),d=c?c.split("~"):[];var p=(o)?d.filter(function(e){return-1===e.indexOf(""+o)}):d;if(r&&((p.length>=parseInt(' + count + ')||3200<p.join("~").length)&&p.pop(),p.unshift(r)),a){var l=document.querySelectorAll(".recentlyViewedBlock");if(l&&l.length)for(var s=0;s<l.length;s++)l[s].style.display="block";for(var u=0;u<p.length;u++)if(p[u]){var f=p[u].split("|"),m=document.createElement("a");if(!f[0]||!f[1]){p.splice(u,1),u--;continue}m.setAttribute("href",f[0]);var g=document.createElement("img");g.setAttribute("src",f[1]),g.setAttribute("style","width: 52px; height: 72px; margin: 3px; border-radius:3px;"),m.appendChild(g),a.appendChild(m)}}r&&setCookie("CP_viewed",p.join("~"),{expires:864e3,path:"/"})});';

        code = '<script>' + code + '</script>';
    }

    return code;

}

module.exports = {
    "code" : codeViewed
};


когда буждет новая версия???
 
Думает, что помогает
Регистрация
15 Дек 2017
Сообщения
2,144
#30
Единственное проблема с проксированием это что когда делается теперь “share” изображения (постер, кадры) не видны... там что-то со ссылкой
img.png

Картинка подгружается.
когда буждет новая версия???
Еще готовится. Дата неизвестна.