Что нового

Массовая загрузка постеров к фильмам

Oleksandr Miroshnichenko

Участник
Регистрация
30 Июл 2021
Сообщения
40
Реакции
63
Всем привет, нужна помощь, есть киносайт, но на некоторых фильмах отсутствуют постеры.
Задача: по крону, с помощью php скрипта искать новости у которых не загружен постер и по кинопоиск ид (берется с дополнительного поля этой же новости) искать через API kinopoiskapiunofficial и загружать постер к фильму в дополнительное поле с типом загружаемое изображение.
Что я сделал: скрипт ищущий в бд фильмы у которых отсутствует постер, ищет по кинопоиск ид API kinopoiskapiunofficial постер к фильму и загружает его в папку с скриптом.

Нужна помощь, я не понимаю как правильно реализовать загрузку картинки в дополнительно поле с типом загружаемое изображение.
PHP:
<?
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );

    define('DATALIFEENGINE', true);
    define('ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine');

    require_once ENGINE_DIR.'/data/config.php';
    require_once ENGINE_DIR.'/classes/mysql.php';
    require_once ENGINE_DIR.'/data/dbconfig.php';

    header('Content-type: text/html; charset=' . $config['charset']);

    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster%' LIMIT 1");

    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfs = explode('||', $row['xfields']);
            for($i = 0; $i < count($xfs); ++$i) {
                $array = explode('|', $xfs[$i]);
                $xfields[$array[0]] = $array[1];
            }
       
            //Получение постера
            $headers = [];
            $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            $headers[] = 'Content-Type: application/json';
       
            $curl = curl_init($url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/' . $xfields['kinopoisk_id'] . '/images?type=POSTER&page=1');
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $resp = curl_exec($curl);
            curl_close($curl);
       
            $resp = json_decode($resp, true);
       
            $poster = __DIR__ . '/last_poster.jpg';
            copy($resp['items']['0']['previewUrl'], $poster);
        }
        $db->free();
    }

Когда допишу скрипт, выложу его в этом топике.
 
Последнее редактирование:
Смотреть в сторону этих файлов нужно
Код:
engine/classes/uploads/upload.class.php

и смотри классы
PHP:
FileUploader

К примеру, можно посмотреть как скрипт работает в файле
Код:
engine/ajax/upload.php
PHP:
    $uploader = new FileUploader($area, $news_id, $author, $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
    $result = $uploader->FileUpload();

на DLE 15.2 это строчка 277

можно прям всё функцию взять за основу
PHP:
if( $_REQUEST['subaction'] == "upload" ) {
}
 

это не готовое решение, а показ того как работает класс
PHP:
<?
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
  
    define('DATALIFEENGINE', true);
    define('ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine');
  
    require_once (ENGINE_DIR . '/classes/plugins.class.php');
    require_once (DLEPlugins::Check(ENGINE_DIR.'/inc/include/functions.inc.php'));
    include_once (DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

    header('Content-type: text/html; charset=' . $config['charset']);
  
    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster%' LIMIT 1");
  
    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfs = explode('||', $row['xfields']);
            for($i = 0; $i < count($xfs); ++$i) {
                $array = explode('|', $xfs[$i]);
                $xfields[$array[0]] = $array[1];
            }
          
            // //Получение постера
            // $headers = [];
            // $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            // $headers[] = 'Content-Type: application/json';
          
            // $curl = curl_init($url);
            // curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            // curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields['kinopoisk_id'].'/images?type=POSTER&page=1');
            // curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            // $resp = curl_exec($curl);
            // curl_close($curl);
          
            // $resp = json_decode($resp, true);
          
            // // $poster = __DIR__ . '/last_poster.jpg';
            // // copy($resp['items']['0']['previewUrl'], $poster);

            // $poster_url = $resp['items']['0']['previewUrl'];
          
            include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/uploads/upload.class.php'));
          
            $xfparam = xfparamload('poster');
            print_r($xfparam);
          
//             if( !is_array( $xfparam ) ) die("xfieldname not found");
          
//             $t_seite = intval($config['t_seite']);
//             $m_seite = intval($config['t_seite']);
//             $t_size = $xfparam[13];
//             $m_size = 0;
//             $config['max_up_side'] = $xfparam[9];
//             $config['max_up_size'] = $xfparam[10];
//             $config['min_up_side'] = $xfparam[22];
//             $config['files_allow'] = false;
//             $user_group[$member_id['user_group']]['allow_file_upload'] = false;
//             $make_watermark = $xfparam[11] ? true : false;
//             $make_thumb = $xfparam[12] ? true : false;
//             $make_medium = false;
              
//             $uploader = new FileUploader('xfieldsimage', $row['id'], '', $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
//             $response = $uploader->FileUpload();
//             $response = json_decode($response, true);

          

        }
        $db->free();
    }
Не получается сформировать переменную $xfparam для дополнительного поля с названием poster.
Функция xfparamload просит массив, хз что ей подставить.
 
PHP:
<? 
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
   
    define('DATALIFEENGINE', true);
    define('ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine');
   
    require_once (ENGINE_DIR . '/classes/plugins.class.php');
    require_once (DLEPlugins::Check(ENGINE_DIR.'/inc/include/functions.inc.php'));
    include_once (DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

    header('Content-type: text/html; charset=' . $config['charset']);
   
    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster%' LIMIT 1");
   
    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfs = explode('||', $row['xfields']);
            for($i = 0; $i < count($xfs); ++$i) {
                $array = explode('|', $xfs[$i]);
                $xfields[$array[0]] = $array[1];
            }
           
            //Получение постера
            $headers = [];
            $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            $headers[] = 'Content-Type: application/json';
           
            $curl = curl_init($url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields['kinopoisk_id'].'/images?type=POSTER&page=1');
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $resp = curl_exec($curl);
            curl_close($curl);
           
            $resp = json_decode($resp, true);
           
            // $poster = __DIR__ . '/last_poster.jpg';
            // copy($resp['items']['0']['previewUrl'], $poster);

            $poster_url = $resp['items']['0']['previewUrl'];
           
            include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/uploads/upload.class.php'));
           
            function get_xfields_data($xfields, $name) {
                foreach($xfields as $key => $field){
                    if($field[0]==$name) return $xfields[$key];
                }
                return false;
            }
            $xfields = xfieldsload();
            $xfparam = get_xfields_data($xfields, 'poster');
           
            if( !is_array( $xfparam ) ) die("xfieldname not found");
           
            $t_seite = intval($config['t_seite']);
            $m_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];
            $m_size = 0;
            $config['max_up_side'] = $xfparam[9];
            $config['max_up_size'] = $xfparam[10];
            $config['min_up_side'] = $xfparam[22];
            $config['files_allow'] = false;
            $user_group[$member_id['user_group']]['allow_file_upload'] = false;
            $make_watermark = $xfparam[11] ? true : false;
            $make_thumb = $xfparam[12] ? true : false;
            $make_medium = false;
               
            $uploader = new FileUploader('xfieldsimage', $row['id'], '', $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
            $response = $uploader->FileUpload();
            $response = json_decode($response, true);

            print_r($response);

        }
        $db->free();
    }
Получаю:
Array ( [error] => )
 
Последнее редактирование:
Не вывожу, не получается.
PHP:
<?php

@error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
@ini_set('display_errors', true);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE);

//Настройки
$poster_xfield = 'poster';
$id_kinopoisk_xfield = 'kinopoisk_id';
$news_limit = 5;
$x_api_key = '2fe4f194-fc25-44b5-b903-34dbb5eb48f5';
//Настройки

define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR . '/engine');
define('FOLDER_PREFIX', date( "Y-m" ));

ini_set("memory_limit","256M");
ini_set('max_execution_time',300);
ignore_user_abort(true);
set_time_limit(500);
session_write_close();

include_once ENGINE_DIR . '/classes/plugins.class.php';
include_once (DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php'));

@header('Content-type: text/html; charset=' . $config['charset']);

//Функции
if (!function_exists('kinopoiskapiunofficial')) {
    function kinopoiskapiunofficial($url, $x_api_key, $file = false) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60 );
        curl_setopt($ch, CURLOPT_TIMEOUT, 60 );
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        
        $headers = array(
            'Content-Type: application/json',
            'X-API-KEY: '.$x_api_key
        );
        
        
        if($file){
            $fp = fopen($file, "wb");
            curl_setopt($ch, CURLOPT_FILE, $fp);
        }
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $res = curl_exec($ch);
        curl_close($ch);
        if($file) {
            fclose($fp);
            @chmod($file, 0666);
            $info = @getimagesize($file);
            if(is_array($info)){
                if( $info[2] == 2 ) {
                    $ext = 'jpg';
                } elseif( $info[2] == 3 ) {
                    $ext =  'png';
                } elseif( $info[2] == 1 ) {
                    $ext = 'gif';
                } else $ext = 'jpg';
                rename($file, $file.'.'.$ext);
                return $file.'.'.$ext;
            } else {
                @unlink($file);
                return false;
            }
        }
        return $res;
    }
}
if (!function_exists('CheckDir')) {
    function CheckDir($folder){
        if( !is_dir( $folder ) ) {
            @mkdir( $folder, 0777 );
            @chmod( $folder, 0777 );
        }
        else @chmod( $folder, 0777 );
    }
}
if (!function_exists('upload_image')) {
    function upload_image($image_url, $file, $xfname = false) {
        global $config;
        
        if ( $xfname ) $xfparam = xfparamload( $xfname );
        else {
            $xfparam = [];
            if ( $config['max_up_side'] ) $xfparam[9] = $config['max_up_side'];
            if ( $config['medium_image'] ) $xfparam[13] = $config['medium_image'];
            elseif ( $config['max_image'] ) $xfparam[13] = $config['max_image'];
        }

        $folder = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX;

        $image = kinopoiskapiunofficial($image_url, false, $file);

        if ( !$image ) return false;

        $filename = basename($image);

        if ( $xfparam[9] ) {

            $t_seite = intval($config['t_seite']);
            $t_size = $xfparam[9];

            $thumb = new thumbnail( $image );

            if( $thumb->size_auto( $t_size, $t_seite ) ) {

                $newFile = $thumb->save(str_replace(ROOT_DIR."/uploads/" , '', $image));

                $image = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . '/' . $newFile;

                @chmod( $image, 0666 );

                $filename = basename($image);

            }
        }   

        if ( $xfparam[13] ) {

            $t_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];

            $thumb = new thumbnail( $image );

            if( $thumb->size_auto( $t_size, $t_seite ) ) {

                $newFile = $thumb->save(str_replace(ROOT_DIR."/uploads/" , '', $image));

                $image = $folder . '/thumbs/' . $newFile;

                @chmod( $image, 0666 );

                $filename = basename($image);

            }
        }
        if (file_exists($file.'.webp')) unlink($file.'.jpg');
        return FOLDER_PREFIX . '/' . $filename;
    }   
}
if (!function_exists('xfparamload')) {
    function xfparamload( $xfname ) {
        $path = ENGINE_DIR . '/data/xfields.txt';
        $filecontents = file( $path );
        
        foreach ( $filecontents as $name => $value ) {
            $filecontents[$name] = explode( "|", trim( $value ) );
            if($filecontents[$name][0] == $xfname ) return $filecontents[$name];
        }
        return false;
    }   
}
if (!function_exists('xfieldsdatasaved')) {
    function xfieldsdatasaved($xfields) {
        $filecontents = [];
        foreach ($xfields as $xfielddataname => $xfielddatavalue) {
            if ($xfielddatavalue === '') continue;
            $xfielddataname = str_replace( "|", "&#124;", $xfielddataname);
            $xfielddataname = str_replace( "\r\n", "__NEWL__", $xfielddataname);
            $xfielddatavalue = str_replace( "|", "&#124;", $xfielddatavalue);
            $xfielddatavalue = str_replace( "\r\n", "__NEWL__", $xfielddatavalue);
            $filecontents[] = $xfielddataname."|".$xfielddatavalue;
        }
        $filecontents = join('||', $filecontents );
        return $filecontents;
    }
}
//Функции

CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/');
CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/thumbs/');
CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/medium/');

$news_arr = [];
$db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%{$poster_xfield}|%' LIMIT ".$news_limit);
while( $empty_news = $db->get_row() ) {
    $news_arr[] = $empty_news['id'];
}

if ( !$news_arr ) die('У всех новостей есть постер');

$result_arr = [];
foreach ( $news_arr as $news_id ) {
    $row = $db->super_query( "SELECT id, xfields, title FROM " . PREFIX . "_post WHERE id={$news_id}" );
    if ( !$row['id'] ) {
        unset($row);
        continue;
    }
    $xfields_post = xfieldsdataload( $row['xfields'] );
    $kp_api = kinopoiskapiunofficial('https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields_post[$id_kinopoisk_xfield].'/images?type=POSTER&page=1', $x_api_key);
    $kp_api = json_decode($kp_api, true);
    
    $poster_url = $kp_api['items']['0']['previewUrl'];
    $folder = FOLDER_PREFIX;
    $poster_file = ROOT_DIR . "/uploads/posts/" . $folder.'/'.time().'_'.uniqid();
    $poster_result = upload_image($poster_url, $poster_file, $poster_xfield);
    if ( $poster_result ) {
        $xfields_post[$poster_xfield] = $poster_result;
        $xfields_post = xfieldsdatasaved($xfields_post);
        $xfields_post = $db->safesql( $xfields_post );
        $db->query( "UPDATE " . PREFIX . "_post SET xfields='{$xfields_post}' WHERE id='{$row['id']}'" );
        $result_arr[] = 'Был загружен постер для новости '.$row['title'];
    }
    unset($row);
    unset($xfields_post);
    unset($kp_api);
    unset($poster_url);
    unset($folder);
    unset($poster_file);
    unset($poster_result);
}

die(implode('<br>', $result_arr));
 
PHP:
<?php

@error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
@ini_set('display_errors', true);
@ini_set('html_errors', false);
@ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE);

//Настройки
$poster_xfield = 'poster';
$id_kinopoisk_xfield = 'kinopoisk_id';
$news_limit = 5;
$x_api_key = '2fe4f194-fc25-44b5-b903-34dbb5eb48f5';
//Настройки

define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR . '/engine');
define('FOLDER_PREFIX', date( "Y-m" ));

ini_set("memory_limit","256M");
ini_set('max_execution_time',300);
ignore_user_abort(true);
set_time_limit(500);
session_write_close();

include_once ENGINE_DIR . '/classes/plugins.class.php';
include_once (DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php'));

@header('Content-type: text/html; charset=' . $config['charset']);

//Функции
if (!function_exists('kinopoiskapiunofficial')) {
    function kinopoiskapiunofficial($url, $x_api_key, $file = false) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60 );
        curl_setopt($ch, CURLOPT_TIMEOUT, 60 );
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     
        $headers = array(
            'Content-Type: application/json',
            'X-API-KEY: '.$x_api_key
        );
     
     
        if($file){
            $fp = fopen($file, "wb");
            curl_setopt($ch, CURLOPT_FILE, $fp);
        }
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $res = curl_exec($ch);
        curl_close($ch);
        if($file) {
            fclose($fp);
            @chmod($file, 0666);
            $info = @getimagesize($file);
            if(is_array($info)){
                if( $info[2] == 2 ) {
                    $ext = 'jpg';
                } elseif( $info[2] == 3 ) {
                    $ext =  'png';
                } elseif( $info[2] == 1 ) {
                    $ext = 'gif';
                } else $ext = 'jpg';
                rename($file, $file.'.'.$ext);
                return $file.'.'.$ext;
            } else {
                @unlink($file);
                return false;
            }
        }
        return $res;
    }
}
if (!function_exists('CheckDir')) {
    function CheckDir($folder){
        if( !is_dir( $folder ) ) {
            @mkdir( $folder, 0777 );
            @chmod( $folder, 0777 );
        }
        else @chmod( $folder, 0777 );
    }
}
if (!function_exists('upload_image')) {
    function upload_image($image_url, $file, $xfname = false) {
        global $config;
     
        if ( $xfname ) $xfparam = xfparamload( $xfname );
        else {
            $xfparam = [];
            if ( $config['max_up_side'] ) $xfparam[9] = $config['max_up_side'];
            if ( $config['medium_image'] ) $xfparam[13] = $config['medium_image'];
            elseif ( $config['max_image'] ) $xfparam[13] = $config['max_image'];
        }

        $folder = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX;

        $image = kinopoiskapiunofficial($image_url, false, $file);

        if ( !$image ) return false;

        $filename = basename($image);

        if ( $xfparam[9] ) {

            $t_seite = intval($config['t_seite']);
            $t_size = $xfparam[9];

            $thumb = new thumbnail( $image );

            if( $thumb->size_auto( $t_size, $t_seite ) ) {

                $newFile = $thumb->save(str_replace(ROOT_DIR."/uploads/" , '', $image));

                $image = ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX . '/' . $newFile;

                @chmod( $image, 0666 );

                $filename = basename($image);

            }
        }

        if ( $xfparam[13] ) {

            $t_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];

            $thumb = new thumbnail( $image );

            if( $thumb->size_auto( $t_size, $t_seite ) ) {

                $newFile = $thumb->save(str_replace(ROOT_DIR."/uploads/" , '', $image));

                $image = $folder . '/thumbs/' . $newFile;

                @chmod( $image, 0666 );

                $filename = basename($image);

            }
        }
        if (file_exists($file.'.webp')) unlink($file.'.jpg');
        return FOLDER_PREFIX . '/' . $filename;
    }
}
if (!function_exists('xfparamload')) {
    function xfparamload( $xfname ) {
        $path = ENGINE_DIR . '/data/xfields.txt';
        $filecontents = file( $path );
     
        foreach ( $filecontents as $name => $value ) {
            $filecontents[$name] = explode( "|", trim( $value ) );
            if($filecontents[$name][0] == $xfname ) return $filecontents[$name];
        }
        return false;
    }
}
if (!function_exists('xfieldsdatasaved')) {
    function xfieldsdatasaved($xfields) {
        $filecontents = [];
        foreach ($xfields as $xfielddataname => $xfielddatavalue) {
            if ($xfielddatavalue === '') continue;
            $xfielddataname = str_replace( "|", "&#124;", $xfielddataname);
            $xfielddataname = str_replace( "\r\n", "__NEWL__", $xfielddataname);
            $xfielddatavalue = str_replace( "|", "&#124;", $xfielddatavalue);
            $xfielddatavalue = str_replace( "\r\n", "__NEWL__", $xfielddatavalue);
            $filecontents[] = $xfielddataname."|".$xfielddatavalue;
        }
        $filecontents = join('||', $filecontents );
        return $filecontents;
    }
}
//Функции

CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/');
CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/thumbs/');
CheckDir(ROOT_DIR . "/uploads/posts/" . FOLDER_PREFIX .'/medium/');

$news_arr = [];
$db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%{$poster_xfield}|%' LIMIT ".$news_limit);
while( $empty_news = $db->get_row() ) {
    $news_arr[] = $empty_news['id'];
}

if ( !$news_arr ) die('У всех новостей есть постер');

$result_arr = [];
foreach ( $news_arr as $news_id ) {
    $row = $db->super_query( "SELECT id, xfields, title FROM " . PREFIX . "_post WHERE id={$news_id}" );
    if ( !$row['id'] ) {
        unset($row);
        continue;
    }
    $xfields_post = xfieldsdataload( $row['xfields'] );
    $kp_api = kinopoiskapiunofficial('https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields_post[$id_kinopoisk_xfield].'/images?type=POSTER&page=1', $x_api_key);
    $kp_api = json_decode($kp_api, true);
 
    $poster_url = $kp_api['items']['0']['previewUrl'];
    $folder = FOLDER_PREFIX;
    $poster_file = ROOT_DIR . "/uploads/posts/" . $folder.'/'.time().'_'.uniqid();
    $poster_result = upload_image($poster_url, $poster_file, $poster_xfield);
    if ( $poster_result ) {
        $xfields_post[$poster_xfield] = $poster_result;
        $xfields_post = xfieldsdatasaved($xfields_post);
        $xfields_post = $db->safesql( $xfields_post );
        $db->query( "UPDATE " . PREFIX . "_post SET xfields='{$xfields_post}' WHERE id='{$row['id']}'" );
        $result_arr[] = 'Был загружен постер для новости '.$row['title'];
    }
    unset($row);
    unset($xfields_post);
    unset($kp_api);
    unset($poster_url);
    unset($folder);
    unset($poster_file);
    unset($poster_result);
}

die(implode('<br>', $result_arr));
Спасибо за попытку помочь, но это костыль, ты просто загружаешь картинку и подставляешь ссылку на нее в доп. поле новости.
Например, в настройках стоит конвертация в webp, твой код игнорит это, также не делает привязку картинки с новостью в таблице dle_images, если удалить новость, картинка останется.

Я сейчас остановился на этом коде:

PHP:
<?
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );

    define('DATALIFEENGINE', true);
    define('ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine');

    require_once (ENGINE_DIR . '/classes/plugins.class.php');
    require_once (DLEPlugins::Check(ENGINE_DIR.'/inc/include/functions.inc.php'));
    include_once (DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

    header('Content-type: text/html; charset=' . $config['charset']);
  
    $member_id = array();
    $user_group = array();
    $member_id['user_group'] = 1;
    $user_group[$member_id['user_group']]['allow_image_upload'] = 1;

    // $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster|%' LIMIT 1");
    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE id = 87731 LIMIT 1");

    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfields = xfieldsdataload($row['xfields']);
          
            $news_id = $row['id'];
          
            $row = $db->super_query("SELECT name FROM " . USERPREFIX . "_users WHERE user_group = 1 LIMIT 1");
            $author = $row['name'];

            // //Получение постера
            // $headers = [];
            // $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            // $headers[] = 'Content-Type: application/json';
        
            // $curl = curl_init($url);
            // curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            // curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields['kinopoisk_id'].'/images?type=POSTER&page=1');
            // curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            // $resp = curl_exec($curl);
            // curl_close($curl);
        
            // $resp = json_decode($resp, true);
            // $poster_url = $resp['items']['0']['previewUrl'];
        
            // // $poster = __DIR__ . '/last_poster.jpg';
            // // copy($resp['items']['0']['previewUrl'], $poster);
        
            include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/uploads/upload.class.php'));
        
            if (!function_exists('xfparamload')) {
                function xfparamload( $xfname ) {
                    $path = ENGINE_DIR . '/data/xfields.txt';
                    $filecontents = file( $path );
                  
                    foreach ( $filecontents as $name => $value ) {
                        $filecontents[$name] = explode( "|", trim( $value ) );
                        if($filecontents[$name][0] == $xfname ) return $filecontents[$name];
                    }
                    return false;
                } 
            }
          
            // $_POST['imageurl'] = $poster_url;
            // $_POST['imageurl'] = 'http://st.kp.yandex.net/images/film_iphone/iphone360_' . $xfields['kinopoisk_id'] . '.jpg';
            $_POST['imageurl'] = 'https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png';

            $xfparam = xfparamload('poster');

            if( !is_array( $xfparam ) ) die("xfieldname not found");

            $_REQUEST['xfname'] = $xfparam[0];
            $t_seite = intval($config['t_seite']);
            $m_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];
            $m_size = 0;
            $config['max_up_side'] = $xfparam[9];
            $config['max_up_size'] = $xfparam[10];
            $config['min_up_side'] = $xfparam[22];
            $config['files_allow'] = false;
            $user_group[$member_id['user_group']]['allow_file_upload'] = false;
            $make_watermark = $xfparam[11] ? true : false;
            $make_thumb = $xfparam[12] ? true : false;
            $make_medium = false;

            $uploader = new FileUploader('xfieldsimage', $news_id, $author, $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
            $response = @$uploader->FileUpload();
            $response = json_decode($response, true);

            if(!empty($response['xfvalue'])){
                $ex = explode('|', $response['xfvalue']);
                $response['xfvalue'] = $ex[0];
            }
          
            print_r($response);
      
            // $xfields['poster'] = $response['xfvalue'];
            // $xfields_new = xfieldsdatasaved($xfields);
            // $xfields_new = $db->safesql($xfields_new);
            // $db->query("UPDATE " . PREFIX . "_post SET xfields='{$xfields_new}' WHERE id='{$news_id}'");
      
//             $date = time();
//             $db->query( "INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('{$response['xfvalue']}', '{$author}', '{$news_id}', '{$date}')" );
        }
        $db->free();
    }
Для удобства тестов подставил сразу id новости и прямую ссылку на картинку.

Выолнив его получаю следующий ответ:
1656264713780.png
Также в бд сразу делается привязка картинки к новости в таблице _images:
1656264772619.png
А теперь к проблемам:
1. Самой картинки нет, она не загружается (игрался с правами на папки ставил и 777 и 755, не помогло, да и загрузка вручную работает, дело не в правах)
2. В доп. поле не подставляется ссылка на картинку (мб пофиксится если решить предыдущий пункт)
 
Последнее редактирование:
Спасибо за попытку помочь, но это костыль, просто загружаешь картинку и подставляешь ссылку на нее в доп. поле. В настройках стоит конвертация в webp, твой код игнорит это, также не делает привязку картинки с новостью в таблице dle_images, если удаляется новость, картинки остаются.

Я сейчас остановился на этом коде:

PHP:
<?
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );

    define('DATALIFEENGINE', true);
    define('ENGINE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/engine');

    require_once (ENGINE_DIR . '/classes/plugins.class.php');
    require_once (DLEPlugins::Check(ENGINE_DIR.'/inc/include/functions.inc.php'));
    include_once (DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

    header('Content-type: text/html; charset=' . $config['charset']);
  
    $member_id = array();
    $user_group = array();
    $member_id['user_group'] = 1;
    $user_group[$member_id['user_group']]['allow_image_upload'] = 1;

    // $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster|%' LIMIT 1");
    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE id = 87731 LIMIT 1");

    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfields = xfieldsdataload($row['xfields']);
          
            $news_id = $row['id'];
          
            $row = $db->super_query("SELECT name FROM " . USERPREFIX . "_users WHERE user_group = 1 LIMIT 1");
            $author = $row['name'];

            // //Получение постера
            // $headers = [];
            // $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            // $headers[] = 'Content-Type: application/json';
        
            // $curl = curl_init($url);
            // curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            // curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields['kinopoisk_id'].'/images?type=POSTER&page=1');
            // curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            // $resp = curl_exec($curl);
            // curl_close($curl);
        
            // $resp = json_decode($resp, true);
            // $poster_url = $resp['items']['0']['previewUrl'];
        
            // // $poster = __DIR__ . '/last_poster.jpg';
            // // copy($resp['items']['0']['previewUrl'], $poster);
        
            include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/uploads/upload.class.php'));
        
            if (!function_exists('xfparamload')) {
                function xfparamload( $xfname ) {
                    $path = ENGINE_DIR . '/data/xfields.txt';
                    $filecontents = file( $path );
                  
                    foreach ( $filecontents as $name => $value ) {
                        $filecontents[$name] = explode( "|", trim( $value ) );
                        if($filecontents[$name][0] == $xfname ) return $filecontents[$name];
                    }
                    return false;
                } 
            }
          
            // $_POST['imageurl'] = $poster_url;
            // $_POST['imageurl'] = 'http://st.kp.yandex.net/images/film_iphone/iphone360_' . $xfields['kinopoisk_id'] . '.jpg';
            $_POST['imageurl'] = 'https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png';

            $xfparam = xfparamload('poster');

            if( !is_array( $xfparam ) ) die("xfieldname not found");

            $_REQUEST['xfname'] = $xfparam[0];
            $t_seite = intval($config['t_seite']);
            $m_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];
            $m_size = 0;
            $config['max_up_side'] = $xfparam[9];
            $config['max_up_size'] = $xfparam[10];
            $config['min_up_side'] = $xfparam[22];
            $config['files_allow'] = false;
            $user_group[$member_id['user_group']]['allow_file_upload'] = false;
            $make_watermark = $xfparam[11] ? true : false;
            $make_thumb = $xfparam[12] ? true : false;
            $make_medium = false;

            $uploader = new FileUploader('xfieldsimage', $news_id, $author, $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
            $response = @$uploader->FileUpload();
            $response = json_decode($response, true);

            if(!empty($response['xfvalue'])){
                $ex = explode('|', $response['xfvalue']);
                $response['xfvalue'] = $ex[0];
            }
          
            print_r($response);
      
            // $xfields['poster'] = $response['xfvalue'];
            // $xfields_new = xfieldsdatasaved($xfields);
            // $xfields_new = $db->safesql($xfields_new);
            // $db->query("UPDATE " . PREFIX . "_post SET xfields='{$xfields_new}' WHERE id='{$news_id}'");
      
//             $date = time();
//             $db->query( "INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('{$response['xfvalue']}', '{$author}', '{$news_id}', '{$date}')" );
        }
        $db->free();
    }
Для удобства тестов подставил сразу id новости и прямую ссылку на картинку.

Выолнив его получаю следующий ответ:
Посмотреть вложение 1644
Также в бд сразу делается привязка картинки к новости в таблице _images:
Посмотреть вложение 1645
А теперь к проблемам:
1. Самой картинки нет, она не загружена (игрался с правами на папки ставил и 777 и 755, не помогло)
2. В доп. поле не подставляется ссылка на картинку (мб пофиксится если решить предыдущий пункт)
Пожалуйста. Все конвертит в webp, достаточно включить конвертирование всех картинок в этот формат, в админке, а еще в настройках доп поля указать до какого размера сжимать картинку. Если на странице блок постера имеет размер максимум 200х300, к примеру, то нафига заливать себе картинку 1024х720. Указываем нужные размеры, при условии этого сжимает. Проверено, на выходе webp записанная в доп поле. Про запись в таблицу images где то в тексте упоминается? Покажите. В твоих набросках тоже ни следа.
В целом вариант реализации показал, на скорую руку спросонья под кофе. Подгружаем класс thumb, передаем параметры сжатия, вызываем класс, записываем в доп поле
 
Пожалуйста. Все конвертит в webp, достаточно включить конвертирование всех картинок в этот формат, в админке, а еще в настройках доп поля указать до какого размера сжимать картинку. Если на странице блок постера имеет размер максимум 200х300, к примеру, то нафига заливать себе картинку 1024х720. Указываем нужные размеры, при условии этого сжимает. Проверено, на выходе webp записанная в доп поле. Про запись в таблицу images где то в тексте упоминается? Покажите. В твоих набросках тоже ни следа.
В целом вариант реализации показал, на скорую руку спросонья под кофе. Подгружаем класс thumb, передаем параметры сжатия, вызываем класс, записываем в доп поле
В настройках включено, но не делает он конвертацию в webp, версия DLE 15.2. Я писал про правильную загрузку картинки в доп. поле, что подразумевает, встроенными функциями dle, а не костылями. Загрузить картинку в папку uploads и добавить инфу в доп. поле я умею, хотелось бы научиться делать это правильно, вызвать нужную функцию, подставить необходимые ей параметры, а дальше чтобы скрипт дле сам все сделал, согласно выбранным настройкам в админке.
 
Последнее редактирование:
Клас thumb не костыль, а встроенный в dle клас, который и занимается сжатием..)
Ну а класс upload используется в dle по средствам ajax. При заливке картинки вручную в доп поле посмотри в консоле какие переменные передаются в момент ajax.
Вобщем дерзай дальше сам, изобретай велосипед
 
Dle 15.2
Screenshot_2022-06-26-21-34-58-067_com.android.chrome.jpg
Создаю новую новость, вписываю айди кп 666, форсаж
Screenshot_2022-06-26-21-35-41-359_com.android.chrome.jpg
Вызываю в браузере файл
Screenshot_2022-06-26-21-36-05-506_com.android.chrome.jpg
Захожу в редактирование Новости, вижу залитый постер, в webp, сжатый согласно настройкам моего доп поля
Screenshot_2022-06-26-21-37-15-092_com.android.chrome.jpg
Не у пк, но не поленился с тлф проделать
 

Вложения

  • Screenshot_2022-06-26-21-37-15-092_com.android.chrome.jpg
    Screenshot_2022-06-26-21-37-15-092_com.android.chrome.jpg
    236.2 КБ · Просмотры: 20
Клас thumb не костыль, а встроенный в dle клас, который и занимается сжатием..)
Ну а класс upload используется в dle по средствам ajax. При заливке картинки вручную в доп поле посмотри в консоле какие переменные передаются в момент ajax.
Вобщем дерзай дальше сам, изобретай велосипед
лучше использовать класс аплода - thumb это временный костыль DLE. уже наткнулся на бяку, что этот класс поменяли под класс аплода и ничего не сказали. изза чего посыпались ошибки и просьбы обновить телеграм постинг.

во вторник буду по свободней - запилю функцию
 
лучше использовать класс аплода - thumb это временный костыль DLE. уже наткнулся на бяку, что этот класс поменяли под класс аплода и ничего не сказали. изза чего посыпались ошибки и просьбы обновить телеграм постинг.

во вторник буду по свободней - запилю функцию
PHP:
<?
    error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
    ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );

    define('DATALIFEENGINE', true);
    define('LOGGED_IN', true);

    define('ROOT_DIR', $_SERVER['DOCUMENT_ROOT']);
    define('ENGINE_DIR', ROOT_DIR . '/engine');

    require_once (ENGINE_DIR . '/classes/plugins.class.php');
    require_once (DLEPlugins::Check(ENGINE_DIR.'/inc/include/functions.inc.php'));
    include_once (DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

    $member_id = array();
    $user_group = array();
    $member_id['user_group'] = 1;
    $user_group[$member_id['user_group']]['allow_image_upload'] = 1;

    date_default_timezone_set ($config['date_adjust']);

    header('Content-type: text/html; charset=' . $config['charset']);

    // $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE xfields NOT LIKE '%poster|%' LIMIT 1");
    $db->query("SELECT id, xfields FROM `" . PREFIX . "_post` WHERE id = 87731 LIMIT 1");

    if($db->query_id->num_rows > 0){
        while($row = $db->get_row()){
            $xfields = xfieldsdataload($row['xfields']);
       
            $news_id = $row['id'];
       
            $row = $db->super_query("SELECT name FROM " . USERPREFIX . "_users WHERE user_group = 1 LIMIT 1");
            $author = $row['name'];

            // //Получение постера
            // $headers = [];
            // $headers[] = "X-API-KEY: 2fe4f194-fc25-44b5-b903-34dbb5eb48f5";
            // $headers[] = 'Content-Type: application/json';
     
            // $curl = curl_init($url);
            // curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
            // curl_setopt($curl, CURLOPT_URL, 'https://kinopoiskapiunofficial.tech/api/v2.2/films/'.$xfields['kinopoisk_id'].'/images?type=POSTER&page=1');
            // curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            // curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            // $resp = curl_exec($curl);
            // curl_close($curl);
     
            // $resp = json_decode($resp, true);
            // $poster_url = $resp['items']['0']['previewUrl'];
     
            // // $poster = __DIR__ . '/last_poster.jpg';
            // // copy($resp['items']['0']['previewUrl'], $poster);
     
            include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/uploads/upload.class.php'));
     
            if (!function_exists('xfparamload')) {
                function xfparamload( $xfname ) {
                    $path = ENGINE_DIR . '/data/xfields.txt';
                    $filecontents = file( $path );
               
                    foreach ( $filecontents as $name => $value ) {
                        $filecontents[$name] = explode( "|", trim( $value ) );
                        if($filecontents[$name][0] == $xfname ) return $filecontents[$name];
                    }
                    return false;
                }
            }
       
            if (!function_exists('xfieldsdatasaved')) {
                function xfieldsdatasaved($xfields) {
                    $filecontents = [];
                    foreach ($xfields as $xfielddataname => $xfielddatavalue) {
                        if ($xfielddatavalue === '') continue;
                        $xfielddataname = str_replace( "|", "&#124;", $xfielddataname);
                        $xfielddataname = str_replace( "\r\n", "__NEWL__", $xfielddataname);
                        $xfielddatavalue = str_replace( "|", "&#124;", $xfielddatavalue);
                        $xfielddatavalue = str_replace( "\r\n", "__NEWL__", $xfielddatavalue);
                        $filecontents[] = $xfielddataname."|".$xfielddatavalue;
                    }
                    $filecontents = join('||', $filecontents );
                    return $filecontents;
                }
            }
       
            // $_POST['imageurl'] = $poster_url;
            // $_POST['imageurl'] = 'http://st.kp.yandex.net/images/film_iphone/iphone360_' . $xfields['kinopoisk_id'] . '.jpg';
            $_POST['imageurl'] = 'https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png';

            $xfparam = xfparamload('poster');

            if(!is_array($xfparam)) die("xfieldname not found");

            $_REQUEST['xfname'] = $xfparam[0];
            $t_seite = intval($config['t_seite']);
            $m_seite = intval($config['t_seite']);
            $t_size = $xfparam[13];
            $m_size = 0;
            $config['max_up_side'] = $xfparam[9];
            $config['max_up_size'] = $xfparam[10];
            $config['min_up_side'] = $xfparam[22];
            $config['files_allow'] = false;
            $user_group[$member_id['user_group']]['allow_file_upload'] = false;
            $make_watermark = $xfparam[11] ? true : false;
            $make_thumb = $xfparam[12] ? true : false;
            $make_medium = false;

            $uploader = new FileUploader('xfieldsimage', $news_id, $author, $t_size, $t_seite, $make_thumb, $make_watermark, $m_size, $m_seite, $make_medium);
            $response = @$uploader->FileUpload();
            $response = json_decode($response, true);

            if(!empty($response['xfvalue'])){
                $ex = explode('|', $response['xfvalue']);
                $response['xfvalue'] = $ex[0];
            }
       
            print_r($response);
   
            $xfields['poster'] = $response['xfvalue'];
            $xfields_new = xfieldsdatasaved($xfields);
            $xfields_new = $db->safesql($xfields_new);
            $db->query("UPDATE " . PREFIX . "_post SET xfields='{$xfields_new}' WHERE id='{$news_id}'");
   
//             $date = time();
//             $db->query( "INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('{$response['xfvalue']}', '{$author}', '{$news_id}', '{$date}')" );
        }
        $db->free();
    }

Вот так загрузка картинок в доп поле работает, все отлично.
Есть вопрос, не пойму почему не хочет загружать картинку с яндекса, по некст ссылкам, возвращает пустой еррор:
$_POST['imageurl'] = 'https://st.kp.yandex.net/images/film_iphone/iphone360_1314406.jpg';
$_POST['imageurl'] = 'https://avatars.mds.yandex.net/get-...01/a156284b-4a3d-4043-b453-d0a0072c4b54/360';

Тем же copy их отлично загружает:
$poster = __DIR__ . '/last_poster.jpg';
copy($_POST['imageurl'], $poster);

Почему uploader возвращает ошибку, хз
 
Последнее редактирование:
Возможно нужно headers отправлять, имулировать просмотр картинки с браузера. Но тогда copy не работало бы
 
Проверь работает ли заливка картинки с яндекса через кнопку на bb code панели краткой или полной новости, кнопка загрузки картинок, там есть загрузка по url. Если да то поэкспериментируй, например с file_get_contents, должно тебе вернуть кучу иероглифов при открытии картинки, или ничего если она не была получена. Сводится к тому что будешь костыли делать, против которых сам и был)
 
Проверь работает ли заливка картинки с яндекса через кнопку на bb code панели краткой или полной новости, кнопка загрузки картинок, там есть загрузка по url. Если да то поэкспериментируй, например с file_get_contents, должно тебе вернуть кучу иероглифов при открытии картинки, или ничего если она не была получена. Сводится к тому что будешь костыли делать, против которых сам и был)
В редакторе новостей загружает по url, все ок.

PHP:
<?
print_r(file_get_contents('https://st.kp.yandex.net/images/film_iphone/iphone360_1314406.jpg'));
Возвращает иероглифы.
 
Верх