Récupérer des informations sur allocine.fr

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 618 fois - Téléchargée 16 fois

Contenu du snippet

Ce script va récupérer des informations sur le site Allocine.fr sous forme de tableau.

Ex :

Array
(
[titre_film] => Che - 1ère partie : L'Argentin
[realisateur] => Steven Soderbergh
[acteur] => Benicio Del Toro, Demian Bichir, Santiago Cabrera
[long_metrage] => français, américain, espagnol
[synopsis] => Cuba, 1952 : le général Fulgencio Batista fomente un putsch, s'empare du pouvoir et annule les élections générales. Bravant ce dictateur corrompu, un jeune avocat, Fidel Castro, candidat à la députation sous la bannière du Parti du Peuple, passe à l'action. Dans l'espoir de provoquer un soulèvement populaire, il attaque avec 150 jeunes la caserne de Monaca le 26 juillet 1953. L'opération échoue ; Castro passe deux ans en prison. Amnistié en 1955, il s'exile à Mexico. Pendant ce temps, au Guatemala, un jeune Argentin idéaliste, Ernesto Guevara, se lance en politique. En 1954, lorsqu'un complot militaire soutenu par la CIA renverse le gouvernement, démocratiquement élu, de Jacobo Arbenz, Guevara se réfugie au Mexique. Après une première prise de contact au Guatemala, il rejoint un groupuscule révolutionnaire cubain. le 13 juillet 1955, dans un modeste appartement de Mexico, Raul Castro présente Guevara à son frère aîné, Fidel. Une rencontre discrète, qui marque une date clé dans l'histoire de Cuba. Guevara se voit immédiatement confier une opération de guérilla en vue de renverser Batista. Les Cubains affublent le jeune rebelle d'un sobriquet courant en Argentine : "Che". 26 novembre 1956 : Fidel Castro embarque pour Cuba avec 80 rebelles. L'offensive se solde par un massacre : seuls douze hommes en réchappent, dont le Che (médecin du groupe) et Castro. Réfugiés dans la Sierra Maestra, les "barbudos" déclarent la "guerre totale" au régime de Batista. Guevara prouve ses qualités de combattant et se rend indispensable à ses compagnons. La résistante s'intensifie, gange toute l'île. 1er janvier 1959 : les rebelles célèbrent leur victoire à Santa Clara, le dictateur s'enfuit. Fin de la 1ère partie...
[affiche] => http://images.allocine.fr/r_160_214/b_1_cfd7e1/medias/nmedia/18/36/35/03/18997008.jpg
[duree] => 02h07min
[titre_vo] => Che: Part One
[sortie_cinema] => 2009-01-07
[sortie_salle_lien] => http://www.allocine.fr/film/agenda.html?week=2009-01-07
[sortie_salle] => 7 janvier 2009
[age] => inconnu
[annee_de_production] => 2008
)

Source / Exemple :


<?php
function allocine($allocine)
{
	$absent = Array(
		'titre_film' => 'inconnu',
		'realisateur' => 'inconnu',
		'acteur' => 'inconnu',
		'long_metrage' => 'inconnu',
		'synopsis' => 'inconnu',
		'affiche' => './img/image_introuvable_films.jpg',
		'duree' => 'inconnue',
		'titre_vo' => 'inconnu',
		'sortie_cinema' => 'inconnue',
		'age' => 'inconnu',
		'annee_de_production' => 'inconnue'
	);

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, 'http://www.allocine.fr/film/fichefilm_gen_cfilm='.$allocine.'.html');
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_NOBODY, FALSE);
	$recup = curl_exec($curl);
	curl_close($curl);

	// on récupère le titre
	preg_match('#<h1 property="v:itemreviewed">(.*?)</h1>#is', $recup, $titre_film);
	$sortie['titre_film'] = (empty($titre_film)) ? $absent['titre_film'] : trim(utf8_decode(strip_tags($titre_film[0])));

	// on réupère le nom du/des réalisateur(s)
	preg_match('#<!-- End first block -->(.*?)</a>#is', $recup, $realisateur);
	$sortie['realisateur'] = (empty($realisateur)) ? $absent['realisateur'] : trim(utf8_decode(strip_tags($realisateur[0])));
	$sortie['realisateur'] = str_replace("\n", '', $sortie['realisateur']);
	$sortie['realisateur'] = str_replace("\r", '', $sortie['realisateur']);
	$sortie['realisateur'] = preg_replace('/\s\s+/', '', $sortie['realisateur']);
	$sortie['realisateur'] = explode('par', $sortie['realisateur']);
	$sortie['realisateur'] = trim($sortie['realisateur'][1]);

	// on réupère le nom du/des acteur(s)
	preg_match('#<!-- End first block -->(.*?)<!-- end paragraph for second block -->#is', $recup, $acteur);
	$sortie['acteur'] = (empty($acteur)) ? $absent['acteur'] : trim($acteur[0]);
	$sortie['acteur'] = preg_replace('#<p>(.*?)Avec#is', '', $sortie['acteur']);
	$sortie['acteur'] = preg_replace('#plus</a>(.*?)</p>#is', '', $sortie['acteur']);
	$sortie['acteur'] = strip_tags(utf8_decode(trim($sortie['acteur'])));
	$sortie['acteur'] = str_replace("\n", '', $sortie['acteur']);
	$sortie['acteur'] = str_replace("\r", '', $sortie['acteur']);
	$sortie['acteur'] = preg_replace('/\s\s+/', '', $sortie['acteur']);
	$sortie['acteur'] = substr($sortie['acteur'], 0, -1);

	// on réupère le long-métrage du film
	preg_match('#Long-m[^"]+trage(.*?)\.#is', $recup, $long_metrage);
	$sortie['long_metrage'] = (empty($long_metrage)) ? $absent['long_metrage'] : strip_tags(utf8_decode(trim($long_metrage[1])));
	$sortie['long_metrage'] = str_replace("\r", '', $sortie['long_metrage']);
	$sortie['long_metrage'] = str_replace("\t", '', $sortie['long_metrage']);
	$sortie['long_metrage'] = str_replace("\n", '', $sortie['long_metrage']);

	// on récupère le synopsis
	preg_match('#<span class="bold">Synopsis : </span>(.*?)</p>#is', $recup, $synopsis);
	$synopsis[1] = str_replace("&#8217;", "'", $synopsis[1]);
	$synopsis[1] = str_replace('&#8230;', '...', $synopsis[1]);
	$synopsis[1] = str_replace('&#8211;', '-', $synopsis[1]);
	$synopsis[1] = str_replace("\n", '', $synopsis[1]);
	$synopsis[1] = str_replace('œ', 'oe', $synopsis[1]);
	$synopsis[1] = str_replace('&#8221;', '"', $synopsis[1]);
	$synopsis[1] = str_replace('&#8220;', '"', $synopsis[1]);
	$sortie['synopsis'] = (empty($synopsis)) ? $absent['synopsis'] : trim(utf8_decode($synopsis[1]));

	// on récupère l'url de l'affiche
	preg_match('#<img src=\'http://images.allocine.fr/r_160_214/(.*?)\'[^"]+alt="[^"]+"[^"]+title="[^"]+"[^"]+/>#is', $recup, $affiche);
	$sortie['affiche'] = ($affiche[1] == 'http://images.allocine.fr/r_160_214/b_1_cfd7e1/commons/emptymedia/AffichetteAllocine.gif') ? $absent['affiche'] : 'http://images.allocine.fr/r_160_214/'.$affiche[1];

	// on récupère la durée
	preg_match_all('#[0-9]+h[0-9]+min#is', $recup, $duree);
	$sortie['duree'] = (empty($duree[0][0])) ? $absent['duree'] : trim(str_replace(' min', '', utf8_decode($duree[0][0])));

	// on récupère le titre original
	preg_match('#Titre original : <span class="purehtml"><em>(.*?)</em></span>#is', $recup, $titre_vo);
	$sortie['titre_vo'] = (empty($titre_vo)) ? $absent['titre_vo'] : trim(utf8_decode($titre_vo[1]));

	// on récupere la date de sortie au cinéma
	preg_match('#<a href="/film/agenda\.html\?week=(.*?)">(.*?)</a>#is', $recup, $sortie_cinema);
	$sortie['sortie_cinema'] = (empty($sortie_cinema)) ? $absent['sortie_cinema'] : trim(utf8_decode($sortie_cinema[1]));

	if($sortie['sortie_cinema'] != 'inconnue')
		$sortie['sortie_salle_lien'] = 'http://www.allocine.fr/film/agenda.html?week='.$sortie_cinema[1];
	else
		$sortie['sortie_salle_lien'] = 'inconnue';

	if($sortie['sortie_cinema'] != 'inconnue')
		$sortie['sortie_salle'] = trim(utf8_decode($sortie_cinema[2]));
	else
		$sortie['sortie_salle'] = 'inconnue';

	// on récupère les restriction d'âge si il y a
	preg_match('#<span class="insist">(.*?)</span>#is', $recup, $age);
	$sortie['age'] = (empty($age)) ? $absent['age'] : trim(utf8_decode($age[1]));

	// on récupère l'année de production
	preg_match('#Ann..?e de production.*<a href=["\'][^>]+["\']>([0-9]+)</a>#isU', $recup, $annee_de_production);
	$sortie['annee_de_production'] = (empty($annee_de_production)) ? $absent['annee_de_production'] : trim(utf8_decode($annee_de_production[1]));

	return $sortie;
}
?>

Conclusion :


Je suis ouvert à toute modification, amélioration... etc

et pensez à enregistrer votre page en UTF-8 sans BOM

A voir également

Ajouter un commentaire

Commentaires

Débutant... je me demande comment récupérer la sortie.
J'ai essayé en fin de scritp de rajouter echo $sortie[1];

mais rien ne sort.
Utilisateur anonyme
pas mal etn3000 :)
Messages postés
39
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 décembre 2010
1
J'ai fait une API Allociné mais la mienne ne fait pas un parsing de la page, elle récupère les infos sous le format JSON et les adaptent sous forme d'un tableau multidimensionnel
http://www.phpcs.com/codes/API-ALLOCINE-V3_52259.aspx
Utilisateur anonyme
ben non sinon je n'aurai pas fait ce genre de code X_X
Messages postés
14
Date d'inscription
mardi 20 mai 2003
Statut
Membre
Dernière intervention
19 janvier 2009

@hornetbzz le site allociné propose des flux rss pour récupérer les infos d'un film ?
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.