Fork me on GitHub




(1) 2 »


Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
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.

Posté le : 04/01/2015 01:26
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
re

ah, j'ai enfin réussi à sortir quelque chose correctement:

$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';
    
$result=$xoopsDB->query($sql);
    list(
$lid$title) = $xoopsDB->fetchRow($result);
    
    echo 
"titre: " $title ", lid: " $lid;


résultat:
titreUn seul deviendra invincible 2 [FilmFR], lid81


maintenant faut sortir les autres lignes.
Les tableaux, je maitrise un peu mieux mais alors les sortie de requête et les boucles c'est pas ça qu'est ça.

le soucis que j'ai eu au début c'est que je récupérais le $result de sql dans un tableau $arraytitre et ensuite foreach as,mais il ne me sortait que la description de la première ligne du tableau et ensuite $title était vide donc erreur.

Posté le : 04/01/2015 03:39
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Admin Frxoops
Inscrit: 05/03/2005 05:20
De Vaucluse
Messages: 960
$xoopsDB->fetchRow($result)
Au lieu de fetchRow qui ne remonte qu'une seule linge (il est fait pour ça), il te faut utiliser à la place fetchArray qui lui te les remonteras toutes. Il te faut ensuite parcourir le résultat enregistrement par enregistrement jusqu'à la fin.
Exemple:
$sql$xoopsDB->query('SELECT  champ1,champ2,champ3,champ4 FROM '.$xoopsDB->prefix('mytable');
// boucle pour parcourir les résultats de la requête
while ( $myrow $xoopsDB->fetchArray($sql) ) {
    
$myarray =array();
    
$myarray['champ1'] = $myrow['champ1'];
    
$myarray['champ2'] = $myrow['champ2'];
    
$myarray['champ3'] = $myrow['champ3'];
    
$myarray['champ4'] = $myrow['champ4'];

blablabla....

}

Posté le : 04/01/2015 09:30

Open in new window

Xoops 2.5.7.2 - Debian 8.2 - Apache 2.4.10 - MySQL 5.5.47 - Php 5.6.17
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
Bien vu slider et merci car j'ai encore du mal à savoir par quel bout y prendre.

ça marche nickel en demandant d'afficher le tableau, par contre le script à pas l'air de fonctionner, y'a trop de requête à faire et c'est beaucoup trop long, j'imagine que j’atteins le time out puis page blanche., il faudrait un truc genre cron pour faire les requête 1 par 1 tranquilement et afficher à chaque tour"update réussi pour $title, passage au suivant"

parceque la, j'ai l'impression que les infos seront toutes affiché quand tout sera fini. pas évident à faire ça pour moi, je vais me renseigner.

mon code:
$sql$xoopsDB->query('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 = 7');
    
// boucle pour parcourir les résultats de la requête
    
while ( $myrow $xoopsDB->fetchArray($sql)) {
        
$titre_arr =array();
        
$titre_arr['lid'] = $myrow['lid'];
        
$titre_arr['title'] = $myrow['title'];
        
print_r ($titre_arr);


Resultat:
Array
(
    [
lid] => 3440
    
[title] => No Good Deed [FilmVOSTFR]
)
Array
(
    [
lid] => 104
    
[title] => Le Portrait de Dorian Gray [FilmVOSTFR]
)
Array
(
    [
lid] => 225
    
[title] => Les Rodeurs de l'aube [FilmVOSTFR]
)
Array
(
    [lid] => 1120
    [title] => Les Poings contre les murs [FilmVOSTFR]
)
Array
(
    [lid] => 1259
    [title] => The Giver [FilmVOSTFR]
)
Array
(
    [lid] => 1280
    [title] => The November Man [FilmVOSTFR]
)
etc... etc...


OUI c'est bien ça le problème, je viens de refaire un essai sur une catégorie qui ne contient que 6 vidéo et c'est passé aprés 1 minute de chargement et il y a plein s d'erreurs, c'est trop rapide, il faut compartimenter.

code utilisé(sans les fonctions, pas importante):
$sql$xoopsDB->query('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 = 8');
    
// boucle pour parcourir les résultats de la requête
    
while ( $myrow $xoopsDB->fetchArray($sql)) {
        
$titre_arr =array();
        
$titre_arr['lid'] = $myrow['lid'];
        
$titre_arr['title'] = $myrow['title'];
        
//print_r ($titre_arr);
        
                // On lance la recherche des codes films grace aux titres
                
$helper  = new AlloHelper;
                
$title $titre_arr['title'];
                
$title substr("$title"0, -9); //enlever le [FilmFR] en fin de chaine
                //echo $title;
                
$q removeAccents($title); //nettoyage du titre pour recherche
                
$page 1;
                
$count 1;
        
                if (isset(
$title)) {
                    try {
                        
// Envoi de la requête de recherche
                        
$info   $helper->search($q$page$count)->getArray(); 
                        
//print_r($info);
                        
if (isset($info['movie'])) {
                            foreach (
$info['movie'] as $key) {
                                
$code $key['code'];
                                echo 
"Code trouvé pour " $title ":" $code;
                            }
                        }
                    }                
                    catch (
ErrorException $error) {
                        
// En cas d'erreur
                        
echo "Erreur n°"$error->getCode(), ": "$error->getMessage(), PHP_EOL;
                    }
                }
                    
// début de la récupération des infos 
                    // 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';


        
?>


Resulat (affiché d'un coup à la fin, pas bon):2reussi,1 a moitier et 2 loupé:
Open in new window


NOTE pour nouveau site xoopsfr: problème avec les grandes images, impossible de scrowler l'image quand affiché avec jquery.


Je pense qu'en les traitant 10 par 10 ça devrait aller, le problème en fait réside dans les titres, j'ai des tag qu'il faut que je retire, c'est ce qui fait loupé la recherche des codes.
J'ai coupé pour [cam-ts-tc] mais j'ai des vostfr [cam-ts-tc] ou encore des HD qu'il faut virer.

Posté le : 04/01/2015 10:27
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Pour une tâche CRON, pas très compliqué, c'est sur le même principe, tu 'include' mainfile.php par contre tu évites d' 'include' XOOPS_ROOT_PATH.'/footer.php' et en théorie header.php de Xoops tu n'en as pas besoin non plus, vu que tu génère pas d'affichage.

le problème est de savoir, si tu parts d'une liste que tu as, tu vas chercher les données sur Allo-Ciné pour les formater ou si tu part de rien et tu "siphonne" les fiches Allo-Ciné car ce ne sera pas la même procédure.

Pour le cas 1, tu rajoutes un champs à ta table film de type tinyint(1) unsigned par défaut à 0 ayant pour nom 'fait' (c'est pour l'exemple).
L'objectif est de prendre (on va dire 5 films de la liste "LIMIT 5" pour MySQL) et ayant le champs 'fait' à 0, d'aller chercher les informations chez Allociné puis remettre dans la BDD les nouvelles informations tout en mettant à 1 le nouveau champs 'fait'.
Pour le cas 2, c'est plus complexes à mettre en oeuvre mais le principe reste le même

Posté le : 04/01/2015 10:50
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
re

Ah désolé on c'est croisé, en fait je pense avoir la solution:

Citation :
Je pense qu'en les traitant 10 par 10 ça devrait aller, le problème en fait réside dans les titres, j'ai des tag qu'il faut que je retire, c'est ce qui fait loupé la recherche des codes.
J'ai coupé pour [cam-ts-tc] (12 caractères à partir de la fin)mais j'ai des vostfr [cam-ts-tc] ou encore des [FilmFR] HD qu'il faut virer car ça me dérègle ma coupure.

l'idéal serait de garder tout ce qui se trouve avant [

je doit pouvoir faire mes rows par 10 lignes, c'est possible il me semble.

ou alors ajouter une étape manuelle au niveau de la recherche pour relancer la boucle sur la bonne fiche en 1 clic c'est jouable car le bon résultat n'est pas toujours le premier (1er défaut)

Posté le : 04/01/2015 11:18
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Citation :

je doit pouvoir faire mes rows par 10 lignes, c'est possible il me semble.


oui en insérant 'LIMIT 10' dans ta requête, c'est la solution la plus optimale.

Posté le : 04/01/2015 11:24
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
oh yes:
Code trouvé pour Get On Up 125174
mise à jour réussi pour Get On Up
mise à jour réussi pour 
[RecApocalypse
Code trouvé pour Interstellar 
114782
mise à jour réussi pour Interstellar
Code trouvé pour La Légende de Manolo 
203878
mise à jour réussi pour La Légende de Manolo
Code trouvé pour Hunger Games 
La Révolte Partie 1 204925
mise à jour réussi pour Hunger Games 
La Révolte Partie 1
Code trouvé pour Le Hobbit 
la Bataille des Cinq Armées 210516
mise à jour réussi pour Le Hobbit 
la Bataille des Cinq Armées


Mais non:
0.000320 UPDATE xoopstube_videos .SET description $descrip WHERE cid AND lid =1511
Error number
1064
Error message
You have an error in your SQL syntaxcheck the manual that corresponds to your MariaDB server version for the right syntax to use near '= $descrip WHERE cid = 2 AND lid =1511' at line 1


code:
global $xoopsModule$xtubemyts$xoopsModuleConfig;
                        
$descrip $xtubemyts->addslashes(ltrim('$descrip'));
                        
$lid $titre_arr['lid'];
                    
                
                    
$sql2 $xoopsDB->queryF('UPDATE ' $xoopsDB->prefix('xoopstube_videos') . " .SET description = " $descrip '
                            WHERE cid = 2 AND lid ='
                            
$lid);
                        echo 
"mise à jour réussi pour " $title "<br />";


et maintenant:
0.000427 UPDATE xoopstube_videos SET description $descrip WHERE cid AND lid =1511
Error number
1054
Error message
Unknown column '$descrip' in 'field list'


avec:
$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 />';
                        
                        global 
$xoopsModule$xtubemyts$xoopsModuleConfig;
                        
$descrip $xtubemyts->addslashes(ltrim('$descrip'));
                        
$lid $titre_arr['lid'];
                    
                
                    
$sql2 $xoopsDB->queryF('UPDATE ' $xoopsDB->prefix('xoopstube_videos') . " SET description = " $descrip '
                            WHERE cid = 2 AND lid ='
                            
$lid);
                        echo 
"mise à jour réussi pour " $title "<br />";
                        
                    }
                    catch( 
ErrorException $error )
                    {
                        
// En cas d'erreur
                        
echo "Erreur n°"$error->getCode(), ": "$error->getMessage(), "pour " $title " <br />";
                    }
                    
                    
                        
            
    }
        



include 
XOOPS_ROOT_PATH '/footer.php';


        
?>


AH c'est pas trop tôt, mais c'est pas parfait:

<?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 
removetagtitre($title)
                        {
                        
$taged = array(" [Cam-TS-TC]"," VOSTFR"," DVDSCR"," vostfr");
                        
$nontaged = array("","","","");

                        
$title str_replace($taged$nontaged$title);

                        return 
$title;
                        }                    
                        
    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

                            
}
                            
    
    
$sql$xoopsDB->query('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 = 8');
    
// boucle pour parcourir les résultats de la requête
    
while ( $myrow $xoopsDB->fetchArray($sql)) {
        
$titre_arr =array();
        
$titre_arr['lid'] = $myrow['lid'];
        
$titre_arr['title'] = $myrow['title'];
        
//print_r ($titre_arr);
        
                // On lance la recherche des codes films grace aux titres
                
$helper  = new AlloHelper;
                
$title $titre_arr['title'];
                
$title removetagtitre($title);//enlever les tag en fin de chaine
                //echo $title;
                
$q removeAccents($title); //nettoyage du titre pour recherche
                
$page 1;
                
$count 1;
        
                if (isset(
$title)) {
                    try {
                        
// Envoi de la requête de recherche
                        
$info   $helper->search($q$page$count)->getArray(); 
                        
//print_r($info);
                        
if (isset($info['movie'])) {
                            foreach (
$info['movie'] as $key) {
                                
$code $key['code'];
                                echo 
"Code trouvé pour " $title " : " $code " <br />";
                            }
                        }
                    }                
                    catch (
ErrorException $error) {
                        
// En cas d'erreur
                        
echo "Erreur n°"$error->getCode(), ": "$error->getMessage(), "pour " $title " <br />";
                    }
                }
                    
// début de la récupération des infos 
                    // 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'];
                        
$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 />';
                        
                        global 
$xoopsModule$xtubemyts$xoopsModuleConfig;
                        
$descrip $xtubemyts->addslashes(ltrim($descrip));
                        
$lid $titre_arr['lid'];
                    
                
                    
$sql2   "UPDATE " $xoopsDB->prefix('xoopstube_videos')
                             . 
" SET description='$descrip'
                            WHERE lid =" 
$lid;
                        echo 
"mise à jour réussi pour " $title "<br />";
                        
                    if (!
$result $xoopsDB->queryF($sql2)) {
                    
$_error $xoopsDB->error() . " : " $xoopsDB->errno();
                    
XoopsErrorHandler_HandleError(E_USER_WARNING$_error__FILE____LINE__);
                    }
                        
                    }
                    catch( 
ErrorException $error )
                    {
                        
// En cas d'erreur
                        
echo "Erreur n°"$error->getCode(), ": "$error->getMessage(), "pour " $title " <br />";
                    }
                    
                    
                        
            
    }
        



include 
XOOPS_ROOT_PATH '/footer.php';


        
?>


resultat pour cid= 8:
Code trouvé pour Get On Up 125174
mise à jour réussi pour Get On Up
mise à jour réussi pour 
[RecApocalypse
Code trouvé pour Interstellar 
114782
mise à jour réussi pour Interstellar
Code trouvé pour La Légende de Manolo 
203878
mise à jour réussi pour La Légende de Manolo
Code trouvé pour Hunger Games 
La Révolte Partie 1 204925
mise à jour réussi pour Hunger Games 
La Révolte Partie 1
Code trouvé pour Le Hobbit 
la Bataille des Cinq Armées 210516
mise à jour réussi pour Le Hobbit 
la Bataille des Cinq Armées


Les descriptions sont bien dans la base mais pour le deuxième titre (rec4), on a de nouveau la description de get on up (pas bon).Apparement, c'est parceque le code à pas été trouvé pour ce titre.
Tout les autres sont bon:
Open in new window


Maintenant que ça à l'air de fonctionner à peu près, il faut que je limite le nombre de ligne à executer à la fois pour pouvoir faire cid= 2 (1500 vidéos)

Posté le : 04/01/2015 13:10
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Régulier
Inscrit: 10/09/2007 11:51
Messages: 476
Bon c'est tout bon, ça fonctionne, sauf que l'api allociné à de très sérieux ralentissements, je suis obligé de faire 5 par 5 et ça passe pas tjrs, je me prend le time out php dans les dents très souvent et donc j'avance pas.

Code trouvé pour A Armes Egales 16220
mise à jour réussi pour A Armes Egales
Code trouvé pour R
.I.P.DBrigade Fantôme 184468
mise à jour réussi pour R
.I.P.DBrigade Fantôme
Code trouvé pour Avengers 
198488
Erreur n°5
Connection Timeout ExpiredThe timeout period elapsed during the post-login phaseThe connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connectionsThe duration spent while attempting to connect to this server was - [Pre-Logininitialization=612handshake=7506; [Logininitialization=0authentication=0; [Post-Logincomplete=989pour Avengers
Code trouvé pour Le Témoin du mal 
16502
mise à jour réussi pour Le Témoin du mal
Code trouvé pour Cliffhanger 
146602
mise à jour réussi pour Cliffhanger


Bon allez ,je laisse tomber, à cette heure c'est mission impossible, allociné, ton api c'est de la mrd, y'a pas de power.
Va falloir que je fasse ça super tôt le matin quand y'a moins de monde.

120/1500 y'a encore gros à faire.

J'ai suivi le conseil de montuy et j'ai fait ceci(LIMIT +OFFSET):

$sql$xoopsDB->query('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
            LIMIT 5 OFFSET 128'
);


LOL même avec 2 ça passe pas:

Code trouvé pour Les Rivières pourpres 1325
mise à jour réussi pour Les Rivières pourpres
Erreur n°5
Connection Timeout ExpiredThe timeout period elapsed during the post-login phaseThe connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connectionsThe duration spent while attempting to connect to this server was - [Pre-Logininitialization=12handshake=1646; [Logininitialization=0authentication=0; [Post-Logincomplete=7999pour Signes
mise à jour réussi pour Signes

Posté le : 04/01/2015 15:38
Partager Twitter Partagez cette article sur GG+
Re: Régénérer les desciptions avec allociné
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
En général, les API n'aiment pas les requêtes rapides. C'est normal, dans un sens, tu leur siphonne leurs base de données.
Il faut faire limite une requête toute les 1 minutes que 10 requêtes en même temps. En clair, il faut que cela ai l'air d'être un humain pas une machine.


Posté le : 04/01/2015 16:53
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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