Fork me on GitHub

Rapport de message :*
 

Régénérer les desciptions avec allociné

Titre du sujet : Régénérer les desciptions avec allociné
par seboseboss sur 04/01/2015 01:26:52

Salut

Nouveau sujet, nouveau script.

J'essaye de creer un fichier qui me régénèrera toutes mes discriptions automatiquement avec allociné.

Ayant changer la façon de présenter celles ci, il me faut toutes les regénérer pour les formater.

Je bloque cependant sur certains aspect du script et n'arrive pas à l'effet escompté.

Toutes la partie requête allociné fonctionne, de la recherche du code avec le titre, en passant par l'import des données des vidéos et la génération de la description finale, ça marche, pas de soucis, faudra juste ajouter quelques conditions.

le soucis dans un premier temps c'est d'avoir le bon format de sortie aprés sql et de boucler le tout pour que les opérations se fassent titre par titre avec en cas d'erreur, signalement, voire une action à effectuer manuellement, le tout sans casser la boucle.

TROP SIMPLE VOUS ME DIREZ. LOL

je rigole, pour moi c'est corsé, mais au final pas si compliqué si on connait mieux le php que moi.

Le script en l'état (non fonctionnel, pas fini):
<?php
/**
 * $Id: regen_descr.php
 * Module: XoopsTube
 */

include 'header.php';
include 
XOOPS_ROOT_PATH '/header.php';



include 
XOOPS_ROOT_PATH '/header.php';

require_once 
XOOPS_ROOT_PATH '/api-allocine/api-allocine-helper.php';
    
    function 
removeAccents($title) {
        
$accentued = array("à","á","â","ã","ä","ç","è","é","ê","ë","ì",
        
"í","î","ï","ñ","ò","ó","ô","õ","ö","ù","ú","û","ü","ý","ÿ",
        
"À","Á","Â","Ã","Ä","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò",
        
"Ó","Ô","Õ","Ö","Ù","Ú","Û","Ü","Ý","'",",","!","?",".",":","&");
        
$nonaccentued = array("a","a","a","a","a","c","e","e","e","e","i","i",
        
"i","i","n","o","o","o","o","o","u","u","u","u","y","y","A","A","A",
        
"A","A","C","E","E","E","E","I","I","I","I","N","O","O","O","O","O",
        
"U","U","U","U","Y"," "," "," "," "," "," "," ");

                    
$title str_replace($accentued$nonaccentued$title);

                   return 
$title;
                }
                
    function 
removespace($nom_genre)
                        {
                        
$spaced = array("Arts Martiaux","Comédie dramatique","Comédie musicale","Science fiction");
                        
$nonspaced = array("Arts-Martiaux","Comédie-dramatique","Comédie-musicale","Science-fiction");

                        
$nom_genre str_replace($spaced$nonspaced$nom_genre);

                        return 
$nom_genre;
                        }
                        
    function 
datefr($date) { 
                            
$split split("-",$date); 
                            
$annee $split[0]; 
                            
$mois $split[1]; 
                            
$jour $split[2]; 
                            return 
"$jour"."-"."$mois"."-"."$annee"
                     

                            
$date $data->release['releaseDate']; // Date format américain
                            // $date=date("Y-m-d"); // Ou date du jour

                            
}
                            
$arrayTitre = array();
$e 0;

$sql 'SELECT lid, title FROM ' $xoopsDB->prefix('xoopstube_videos')
    . 
' WHERE published > 0 AND published <= ' time() . ' AND (expired = 0 OR expired > ' time()
    . 
') AND offline = 0 AND cid = 2';
$arrayTitre   $xoopsDB->fetchArray($xoopsDB->query($sql));
$titrecount $xoopsDB->getRowsNum($arrayTitre);
var_dump($arrayTitre);

if (
$titrecount 0) {
    while (list(
$title) = $arrayTitre) {
        echo 
$title"<br />";
    }
    
$e++;
}


        
        
/*
        //$i = 0;
        foreach ($arrayTitre as $titre) {
                $helper  = new AlloHelper;
                $title = $titre['title'];
                $title = substr("$title", 0, -9);
                //echo $title;
                $q = removeAccents($title);
                $page = 1;
                $count = 1;
    
                //$filter = array('movie');
                
        
                if (isset($title)) {
                    try {
                        // Envoi de la requête
                        $info   = $helper->search($q, $page, $count)->getArray();
                        //print_r($info);
                        if (isset($info['movie'])) {
                            foreach ($info['movie'] as $key) {
                                $code = $key['code'];
                                //echo $code;
                            }
                        }
                    }                
                    catch (ErrorException $error) {
                        // En cas d'erreur
                        echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
                    }
                }
                    // Créer l'objet
                    $allohelper = new AlloHelper;

                    //Pour plus de clareté, on définit les paramètres à l'avance: le code du film, et la quantité d'informations à récupérer.

                    $profile = 'medium';
                    $filter = 'movie';
                    
                    //Ensuite, il est conseillé d'effectuer des requêtes dans un bloc try{} catch(){} pour gérer les erreurs.
                
                    try
                    {
                        // Envoi de la requête
                        $data = $allohelper->movie( $code, $profile, $filter );
                        //print_r($data->getArray());
                        
                        //Convertir la durée en hh:mm:ss
                        $total = $data->runtime; //Nombre de secondes
                        $heure = intval(abs($total / 3600));
                        $total = $total - ($heure * 3600);
                        $minute = intval(abs($total / 60));
                        $total = $total - ($minute * 60);
                        $seconde = $total;
                        
                        //Convertir la date en jj.mm.aa
                        $date = $data->release['releaseDate'];
                        
                    }
                    catch( ErrorException $error )
                    {
                        // En cas d'erreur
                        echo "Erreur n°", $error->getCode(), ": ", $error->getMessage(), PHP_EOL;
                    }
                    
                        $url_img = $data->poster;
                        $titre2 = $data->title;
                        $annee = $data->productionYear;
                        $duree = $data->runtime;
                        $date_sortie = $data->release['releaseDate'];
                        $nom_realisateur = $data->castingShort['directors'];
                        $synopsis = $data->synopsis;
                        $nom_acteur = $data->castingShort['actors'];
                        $nom_pays = $data->nationality[0]['$'];
                        $bande_a = $data->trailerEmbed;
                        $nom_genre = $data->genre[0]['$'];
                        $nom_genre2 = $data->genre[1]['$'];
                        
                        
                        $nom_genre = removespace($nom_genre);
                        $nom_genre2 = removespace($nom_genre2);
                        
                        $descrip = '' . $synopsis .'<br /><br />Date de production ' . $annee . '('.$heure.'h'.$minute.'min)<br />Réalisé par ' . $nom_realisateur . '<br />Avec ' . $nom_acteur . '<br />Genre ' . $nom_genre . ' ' . $nom_genre2 . '<br />Nationalité ' . $nom_pays . '<br /><div id="demo"><span class="cutout"><img src="' . $url_img . '" style="width: 243px; height: 363px;"></img></span><br /><br /><a href="' . $data->trailer['href'] . '" class="zoombox w600% h340%" title="Bande annonce : ' . $titre2 . '"><img src="/streaming/images/icon/trailer.png" alt="/streaming/images/icon/trailer.png" class="decoded" style="border: medium none;"></a></img></div><br />';
                        
                        //echo $descrip;
                    
                                        
                
                
                    
                
                /*$sql     = "UPDATE " . $xoopsDB->prefix('xoopstube_videos')
                    . " SET description='$descrip',
                    WHERE lid ="
                    . $lid;
                if (!$result = $xoopsDB->query($sql)) {
                    $_error = $xoopsDB->error() . " : " . $xoopsDB->errno();
                    XoopsErrorHandler_HandleError(E_USER_WARNING, $_error, __FILE__, __LINE__);
                }
                else{
                echo "mise à jour réussi pour " . $title . "<br />";
                }
            
            
        }
        
*/


include XOOPS_ROOT_PATH '/footer.php';


        
?>


J'arrivais pas à avoir un tableau en sortie sql mais tu m'a aider avec le conseil que tu m'a donné dasn l'autre post, du coup j'ai bien mon tableau avec lid et titre mais la boucle ne marche pas.

j'ai réussi à faire une boucle qui m'affichait tout les titres demandé, mais sans le lid.
maintenant on est bon sauf qu'il faut boucler le tout,le résultat obtenu est celui ci:

array(2) {
  [
"lid"]=>
  
string(2"81"
  
["title"]=>
  
string(39"Un seul deviendra invincible 2 [FilmFR]"


Mais maintenant la boucle fonctionne plus alors qu'elle fonctionnait avec juste le titre.

au départ j'utilisais cette méthode pour le résultat sql:
$result    $xoopsDB->query($sql);
$arrayTitre $xoopsDB->fetchArray($result);



mais au lieu d'avoir un tableau numéroté avec tout les titre, j'avais qu'une ligne.

au départ ,je pensais faire un tableau avec tout les résultats numéroté et ensuite appeller les lignes une par une, au final j'ai un tableau, mais d'une ligne et j'arrive pas à avoir le reste.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

71 Personne(s) en ligne (55 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 71 | Plus ...