Maxy.fr

Faire une recherche Youtube en php sans compte api

EDIT : C'était prévisible, cette technique n'est plus possible depuis le 04/03/2014 ("The YouTube Data API (v2) has been officially deprecated as of March 4, 2014").

Il est souvent obligatoire de s'inscrire en tant que développeur et d'enregistrer une application pour pouvoir utiliser les api de certains sites internet. C'est compréhensible lorsqu'il s'agit de projets importants, mais plutôt embêtant lorsque l'on veut utiliser une fonction ne demandant aucune connexion client... Par exemple pour effectuer une simple recherche sur Youtube.

J'ai donc réalisé une fonction PHP permettant de faire une recherche simple sans compte api et sans utiliser aucune librairie contraignante.

Voici donc la fonction en question :

<?php
function rechercheYoutube($recherche, $maxResultats = 10, $ordre = 'relevance', $depuis = 'all_time')
{
    $recherche = htmlspecialchars(str_replace(' ', '+', $recherche));
    $url = "http://gdata.youtube.com/feeds/api/videos?q=".$recherche."&max-results=".$maxResultats."&time=".$depuis."&orderby=".$ordre."&alt=jsonc&v=2";
    
    $resultats = json_decode(file_get_contents($url));

    foreach ($resultats->data->items as $resultat)
    {
	    $id = $resultat->id;
	    $titre = $resultat->title;
	    $description = $resultat->description;
	    $image = $resultat->thumbnail->hqDefault;
	    $duree = $resultat->duration;
	    $nbVues = $resultat->viewCount;
	    $auteur = $resultat->uploader;
	    $categorie = $resultat->category;

	    //...
    }
}

rechercheYoutube("Votre recherche");
?>

Le code est très simple, il permet de récupérer au format JSon les différents résultats retourné par Youtube. Une boucle parcours l'ensemble des résultats et ceux-ci sont enregistrés dans plusieurs variables.

Les options de recherche possible :

Vous remarquerez que plusieurs arguments facultatifs ou non sont demandés par la fonction.

  • $recherche : La recherche que vous souhaitez effectué.
  • $maxResultats : Le nombre maximum de résultats qui sera retourné par Youtube.
  • $ordre : L'ordre d'affichage des résultats. Voici les possibilités :
    • relevance : Pertinance
    • published : Date de publication
    • viewCount : Nombre de vues
    • rating : Note
  • $depuis : Limité les résultats dans le temps. Voici les possibilités :
    • all_time : Tout le temps
    • today : Aujourd'hui
    • this_week : Cette semaine
    • this_month : Ce mois

Ce qu'il est possible de récupérer :

Les extraits de code sont à placer dans la boucle de la fonction.

  • L'id de la vidéo : $resultat->id
  • La date d'envoi : $resultat->uploaded
  • La date de mise à jour : $resultat->updated
  • Le compte youtube : $resultat->uploader
  • La catégorie : $resultat->category
  • Le titre : $resultat->title
  • La description : $resultat->description
  • La miniature : $resultat->thumbnail
    • Qualité standard : $resultat->thumbnail->sqDefault
    • Haute qualité : $resultat->thumbnail->hqDefault
  • Le lecteur : $resultat->player
    • Par défaut : $resultat->player->default
    • Mobile : $resultat->player->mobile
  • La durée (en secondes) : $resultat->duration
  • Le ratio hauteur/largeur : $resultat->aspectRatio
  • La date d'enregistrement : $resultat->recorded
  • La note (/5) : $resultat->rating
  • Le nombre de j'aime : $resultat->likeCount
  • Le nombre de votes : $resultat->ratingCount
  • Le nombre de vues : $resultat->viewCount
  • Le nombre de favoris : $resultat->favoriteCount
  • Le nombre de commentaires : $resultat->commentCount
  • La liste des restrictions : $resultat->restrictions
  • Les contrôles d'accès : $resultat->accessControl

La documentation officielle est ici.

Categories : PHP

By Guillaume - 02/12/2014 at 02:29 am

Shar this article :

Similar articles