coucou!
je n'ai pas bien comprit si tu voulais mettre les image dans un dossier ou les liens des images dans un fichier?
en attendant voici un code php qui va chercher l'url de toutes les image et les écrire sur un fichier. (je suis pas du tout un pro du php, je ne te conseil pas particulièrement de recopier ce code qui doit être bourré de fautes)
bonne journée!




class Json 
{

    public $url;
    public $file_name;

    public function __construct($url, $file_name) 
    {
        $this->url = $url;
        $this->file_name = $file_name;
    }

    private function queryJson(): array
    {
        $opts = array(
            'http' => array(
                'header' => array("Referer: $this->url\r\n")
            )
        );
        $context = stream_context_create($opts);
        return json_decode(file_get_contents($this->url, false, $context), true);
    }

    private function getImg(): array
    {
        $json = $this->queryJson();
        $img_lst = array();
        foreach($json['feed']['entry'] as $lst) {
            foreach($lst['gsx$photo1'] as $e) {
                array_push($img_lst, $e);
            }
        }
        return $img_lst;
    }

    public function writeImg()
    {
        file_put_contents($this->file_name, json_encode($this->getImg()));
    }

}

$inst = new Json('https://coeurdubassin.alwaysdata.net/json/values.json', 'img.txt');
$inst->writeImg();




Bonjour et merci vzytoi

Ce sont les images que je souhaite mettre dans un dossier.
Te remerciant par avance
salah33 a écrit :
Bonjour et merci vzytoi

Ce sont les images que je souhaite mettre dans un dossier.
Te remerciant par avance


voilà, ça devrait maintenant télécharger les images à côté du fichier .php, si tu veux changer l'emplacement de ces images pour les mettre dans un dossier par exemple, il suffit de changer la variable $images_path
bonne journée!


<?php

class Json 
{

    public $url;
    public $images_path;

    public function __construct($url, $file_name) 
    {
        $this->url = $url;
        $this->file_name = $file_name;
    }

    private function queryJson(): array
    {
        set_error_handler (
            function($errno, $errstr, $errfile, $errline) {
                throw new ErrorException($errstr, $errno, 0, $errfile, $errline);     
            }
        );
        try {
            $opts = array(
                'http' => array(
                    'header' => array("Referer: $this->url\r\n")
                )
            );
            $context = stream_context_create($opts);
            return json_decode(file_get_contents($this->url, false, $context), true);
        } catch(Exception $e) {
            return ['feed' => array('entry' => array())];
        }
    }

    private function getImgUrl(): array
    {
        $json = $this->queryJson();
        $img = array();
        foreach($json['feed']['entry'] as $lst) {
            foreach($lst['gsx$photo1'] as $e) {
                array_push($img, $e);
            }
        }
        return $img;
    }

    public function saveImg()
    {
        $imgs = $this->getImgUrl();
        for($i = 0; $i < sizeof($imgs); $i++) {
            file_put_contents($this->images_path."image".($i+1).".jpg", file_get_contents($imgs[$i]));
        }
    }

}

$inst = new Json('https://coeurdubassin.alwaysdata.net/json/values.json', '/');
$inst->saveImg();


Modifié par vzytoi (04 Apr 2021 - 19:04)
Bonjour vzytoi,

Super merci c'est parfait, maintenant je vais essayer de laisser le nom de chaque image et faire en sorte que quand elle existe elle passe à la suivante

Bonne journée et joyeuse Pâques