Что нового

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

  • Автор темы Oleksandr Miroshnichenko
  • Дата начала
Oleksandr Miroshnichenko

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" ) {
}
 
Не вывожу, не получается.
 
Всё ещё актуально, скину 200р на шоколадку за решение.
 

это не готовое решение, а показ того как работает класс
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
Также в бд сразу делается привязка картинки к новости в таблице _images:
1656264772619
А теперь к проблемам:
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 comandroidchrome
Создаю новую новость, вписываю айди кп 666, форсаж
Screenshot 2022 06 26 21 35 41 359 comandroidchrome
Вызываю в браузере файл
Screenshot 2022 06 26 21 36 05 506 comandroidchrome
Захожу в редактирование Новости, вижу залитый постер, в webp, сжатый согласно настройкам моего доп поля
Screenshot 2022 06 26 21 37 15 092 comandroidchrome
Не у пк, но не поленился с тлф проделать
 

Вложения

  • 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'));
Возвращает иероглифы.
 

Пользователи, просматривающие данную тему

Верх