Titre du sujet : Re: Régénérer les desciptions avec allociné par seboseboss sur 04/01/2015 10:27:44
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é:
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.
|