Récupérer les miniatures d'une vidéo youtube

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 756 fois - Téléchargée 15 fois

Contenu du snippet

Le code est simple, il permet depuis une url youtube de récupérer son identifiant et de se connecter au serveur de miniatures pour en récupérer les images générées.

Source / Exemple :


<?php

function youtubeId($source){
	$parsed_url = parse_url($source);
	
	// deux manières de procéder (merci Google :/)
	
	if (strpos($parsed_url['query'], "v=") === false) {
		// la nouvelle, qui est placé comme un repertoire
		$query = $parsed_url[path]; 
		
		$debut = strpos($query, "v/")+2; 
		
		$temp = substr($query, $debut, strlen($query));
		$pos = strpos($temp, "/");
		$fin = ($pos === false)?strlen($query):$pos; 
		
		$youtubeId = substr($query, $debut, $fin);
		
	} else {
		// l'ancienne, avec l'id dans les paramètres
		$query = $parsed_url[query];
		parse_str($query, $output);
		
		$youtubeId =  $output['v'];
	}
	
	return $youtubeId;
}

function get_thumbs($youtubeId) {
	echo '<img class="videoThumb" src="http://i.ytimg.com/vi/'.$youtubeId.'/default.jpg" alt="Scelen Concept - Organisateur de soirées et événement" width="120" height="90" />';
	echo '<img class="videoThumb" src="http://i.ytimg.com/vi/'.$youtubeId.'/1.jpg" alt="Scelen Concept - Organisateur de soirées et événement" width="120" height="90" />';
	echo '<img class="videoThumb" src="http://i.ytimg.com/vi/'.$youtubeId.'/2.jpg" alt="Scelen Concept - Organisateur de soirées et événement" width="120" height="90" />';
	echo '<img class="videoThumb" src="http://i.ytimg.com/vi/'.$youtubeId.'/3.jpg" alt="Scelen Concept - Organisateur de soirées et événement" width="120" height="90" />';
}

$url = "http://www.youtube.com/v/aZjbxg_bm3g?fs=1&amp;hl=fr_FR";

$youtubeId = youtubeId($url);

get_thumbs($youtubeId);

?>

Conclusion :


Point de magie, il ne s'agit que d'un traitement d'une chaine de caractères.
J'aurai pu le faire aussi en javascript mais j'avais besoin de ces fonctions pour l'intégrer dans une classe.

Ce code permet de faire sa playlist sans passer par youtube, à voir si c'est vraiment utile :/

A voir également

Ajouter un commentaire

Commentaires

phpAnonyme
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
14 -
1 - strpos($query, "v=") $query n'est pas définie
// C'est plutôt : strpos($parsed_url['query'], "v=")

2 - Il faut protéger tes tableaux !!
# $parsed_url[path] et d'autres...
// $parsed_url['path']

3- On peut faire plus simple et plus rapide :
//
function youtubeId($source) {

$parsed_url = parse_url($source);

if (strpos($parsed_url['query'], "v=") === false)
preg_match('{/(.*)$}', trim(strval($parsed_url['path']), '/'), $youtubeId);
else
preg_match('{\=(.*)\&(.*)$}', strval($parsed_url['query']), $youtubeId);

return $youtubeId[1];
}
phpAnonyme
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
14 -
Pour une gestion COMPLETE :
##
function youtubeId($source) {

$parsed_url = parse_url($source);

if($parsed_url['host']==='www.youtube.com') {
if (isset($parsed_url['query']) && strpos($parsed_url['query'], "v=") !== FALSE)
preg_match('{v=([a-z_0-9]+)}i', strval($parsed_url['query']), $youtubeId);
else
preg_match('{v/([a-z_0-9]+)}i', strval($parsed_url['path']), $youtubeId);
}
elseif($parsed_url['host']==='youtu.be')
preg_match('{/([a-z_0-9]+)}i', strval($parsed_url['path']), $youtubeId);
else
die('Unknow host');

return $youtubeId[1];
}
##
tefa24600
Messages postés
30
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
21 février 2012
-
Oui, j'aurai pu utiliser les expressions régulières mais comme disait un grand sage "Traiter un problème avec les expressions régulière revient à s'imposer un autre problème"

Et puis, le code est censé être compris par des débutants et je pense que les regexp en font fuir plus d'un ;)
LeFauve42
Messages postés
239
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
20 avril 2009
-
Bonjour,

> comme disait un grand sage "Traiter un problème avec les expressions régulière revient à s'imposer un autre problème"

Sauf ton respect TEFA24600, ton grand sage m'a l'air d'un grand charlatan....

Ce n'est pas parce qu'un source est destine aux debutants que tu dois leur donner n'importe quoi.

Les expressions regulieres sont un outil parfait pour ce genre de chose, et apprendre a les maitriser permet de resoudre tres efficacement toutes sortes de problemes.

Eric
tefa24600
Messages postés
30
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
21 février 2012
-
@LeFauve42, je n'ai pas dit qu'il fallait éviter de les utiliser, il faut, je te cite, "apprendre a les maitriser".

J'avoue que d'un autre côté, l'expression régulière utilisée ici n'est pas des plus difficile !

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.