TheTvDb PHP API: Une librairie PHP simple d’utilisation pour TheTvDb

TheTvDb-PHP-API est une librairie PHP pour récupérer des informations sur les séries et épisodes depuis http://thetvdb.com/.

Elle permet  d’obtenir et de maintenir à jour un grand nombre d’informations sur les séries et épisodes comme par exemple:

  • La date de sortie des prochains épisodes
  • Le nom et la description des séries et épisodes
  • Le genre des séries
  • Le status des séries (en cours, terminée …)
  • La date de dernière mise à jour des informations

Voir/télécharger le projet sur GitHub

Exemple d’utilisation de la librairie:

/*
* TheTvDb Service Setup
*/
require_once dirname(__FILE__).'/Adapter.php';
$tvdb_adapter = Elios_Service_Thetvdb_Adapter::getInstance();
$tvdb_adapter->setApiKey("APIKEY");

$tvdb = new Elios_Service_Thetvdb_Thetvdb();

/*
* Get the current mirror
*/
$mirror = $tvdb->getAvailableMirror();

/*
* Get the current server time
* store this value in database for future updates
*/
$time = $tvdb->getServerTime();

$seriesT = new Elios_Service_Thetvdb_Series();
/*
* Search a serie by name
*/
$series = $seriesT->findByName("South Park","en");
foreach($series as $serie){
echo $serie->nom." ".$serie->thetvdb_id;
}

/*
* Now we use thedvdb_id to get full serie data
* Elios_Service_Thetvdb_Serie attributes:
*
* public $thetvdb_id;
* public $nom;
* public $imdb_id;
* public $language;
* public $overview;
* public $genre;
* public $lastupdated;
* public $banner;
* public $status;
*/
$serie = $seriesT->getSerie("75897","en");
echo $serie->nom;

/*
* Use $serie->getBanners() to get all banners for the serie.
* This method returns an array of Elios_Service_Thetvdb_Banner objects.
* Elios_Service_Thetvdb_Banner attributes:
* public $id;
* public $BannerPath;
* public $BannerType;
* public $BannerType2;
* public $Colors;
* public $Language;
* public $Rating;
* public $RatingCount;
* public $SeriesName;
* public $ThumbnailPath;
* public $VignettePath;
* public $basePath = "http://thetvdb.com/banners/";
*/

$banners = $serie->getBanners();

/*
* We can now retrieve all the episodes with $serie->getEpisodes()
* This method returns an array of Elios_Service_Thetvdb_Episode objects.
* Elios_Service_Thetvdb_Episode attributes:
*
* public $thetvdb_id;
* public $saison;
* public $saison_id;
* public $serie_id;
* public $language;
* public $episode;
* public $overview;
* public $lastupdated;
* public $firstAired;
* public $titre;
*/
$episodes = $serie->getEpisodes();

/*
* Use this function to get a list of updated items since your last update
*/
$data = $tvdb->getUpdateList($time);
print_r($data);

/*
* for each items of the $data array:
* use $episodeT->getEpisode('ID') && $seriesT->getSerie("ID","LANG") to retreive and store informations
*/
$episodeT = Elios_Service_Thetvdb_Episodes();
$episode = $episodeT->getEpisode('ID');
$serie = $seriesT->getSerie("ID","LANG");

Informations sur la librairie:

Ouvrir Elios/Service/Thetvdb/example.php pour un exemple d’utilisation.

L’utilisateur doit avoir les droits d’écriture sur le dossier cache. Il est utilisé pour stocker temporairement les fichiers zip récupérés depuis l’api tvdb.

Thetvdb.com est une base de donnée libre (wiki) qui stocke toutes les informations d’un très grand nombre de séries et épisodes.

Des informations sur l’API peuvent être trouvées ici: http://thetvdb.com/wiki/index.php/Programmers_API

Obtenir une API KEY : http://thetvdb.com/?tab=apiregister

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

File_get_contents sur une url protegée par htaccess

Voici une petite manip PHP pour faire un file_get_contents d’une URL protégée par un mot de passe:

$login = "votre login";
$password = "password";
$opts = array('http' =>
  array(
    'method'  => 'GET',//GET | POST
    'header'  => "Content-Type: text/html\r\n".
    "Authorization: Basic ".base64_encode($login.':'.$password)."\r\n",
    'timeout' => 300
  )
);

$context  = stream_context_create($opts);
$url = "http://monsite.com/mapageprotegeeparmdp.php";
$result = file_get_contents($url, false, $context, -1, 40000);

Voila!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

file_get_contents : gestion des erreurs

Je sais pas si vous avez déjà essayé d’entourer la fonction file_get_contents($url) avec un try catch pour gérer les erreurs si l’url est incorrecte.
Moi j’ai essayé et ca ne marche pas..
La petite astuce pour empêcher d’afficher les erreurs/warnings éventuels c’est de rajouter un arobase devant la fonction:

<?php
  $content = @file_get_contents($url);
  //on test ensuite la valeur de $content
  if ($content== false) {
   //Gestion des erreurs
  }
?>

De cette manière, les erreurs/warnings ne sont pas affichés à l’écran de l’utilisateur.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Drupal – Comment récupérer les données d’un webform après soumission

Webform est un module Drupal très performant et complet qui permet de créer des formulaires. Le seul hic c’est que la landing page, la page de remerciements qui est affichée après la soumission d’un formulaire, n’est pas très configurable et ne permet pas d’afficher les données du formulaire fraîchement soumis.

Pour récupérer ces données et les afficher il faut modifier le fichier normalement situé dans /modules/webform/templates/webform-confirmation.tpl.php .

Dans cette page, les variables $node et $sid sont accessibles, on va les utiliser pour récupérer les données du formulaire:

<?php

include_once(drupal_get_path('module', 'webform') .'/includes/webform.submissions.inc');//ne pas oublier cette ligne.

//on utilise $node->nid (l'id du formulaire) et $sid (l'id de la soumission) pour récupérer les données.
$submission = webform_get_submission($node->nid, $sid);

//on boucle sur les différents champs du formulaire.
//(vous pouvez aussi faire un print_r($submission->data) pour identifier les différents champs que vous voulez récupérer.
foreach($submission->data as $data)
{
  echo $data['value'][0];
}

?>

Une réflexion au sujet de « Drupal – Comment récupérer les données d’un webform après soumission »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Comment lire une vidéo depuis l’api de Subsonic

Petit rappel pour ceux qui ne connaissent pas, Subsonic est un clone de Deezer qui permet, une fois installé sur votre serveur, de lire des musiques et aussi des vidéos depuis une interface web.

Pour moi, utiliser l’api de Subsonic pour lire des vidéos en Streaming a été un peu compliqué. Je voulais simplement lire le flux renvoyé par Subsonic quand on appel la méthode http://your-server/rest/stream.view mais la documentation à ce sujet est quasi inexistante…

Voici donc une petite démo pour parvenir à lire ce flux.

Fichier HTML ou va être placé le lecteur. N’oubliez pas de changer la valeur des variables par les vôtres!

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<script type="text/javascript" src="/subsonic_api/script/swfobject.js"></script>
		<script type="text/javascript" src="/subsonic_api/script/prototype.js"></script>
		<script type="text/javascript" src="/subsonic_api/script/subsonic.js"></script>
		<script type="text/javascript" language="javascript">
			var subsonicServer ="http://yourserver";
			var videoid="subsonic file id";
			var subsonicUsr ="subsonic_usr"
			var subsonicPsw = "subsonic_password";
			var player;
			var position;
			var maxBitRate = 1000;
			var timeOffset = 0;
		</script>

	</head>

	<body onload="init();">
		<div>

			<div id="placeholder1"><span class="warning"><a href="http://www.adobe.com/go/
getflashplayer">Obtenir Flash player</a></span></div>
		</div>
	</body>
</html>

Pour le reste je vous laisse télécharger ce fichier zip qui contient tout les éléments nécessaires à la lecture de la vidéo. Pour cela rendez-vous ici: subsonic_api_demo.

Référez-vous à la documentation de l’api Subsonic pour récupérer l’id de la vidéo et sa longueur.

Dernière info sur les méthodes changeTimeOffset() et changeBitrate() présentes dans le fichier subsonic.js: elles permettent respectivement de changer la position dans la vidéo et de changer la qualité de celle-ci. Elles sont donc très utiles ;)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>