web-dev-qa-db-fra.com

Obtenir une vignette pour une vidéo externe tant que vignette pour un type de publication personnalisé?

J'ai vu d'autres sujets similaires, mais ils étaient tous destinés aux vidéos YouTube. Je me demandais si la même chose pourrait être faite pour les vidéos hébergées sur d'autres serveurs comme blip. Voici un exemple de vidéo blip: http://blip.tv/file/4778330

Voici comment j'ai les choses en place:

J'ai un type de message personnalisé pour les vidéos avec une méta-boîte pour le code source (video_src), de sorte que tout ce que j'ai à faire est d'entrer le code src et il s'affiche dans mon modèle single-videos.php comme suit:

<embed src="<?=$video_src?>" type="application/x-shockwave-flash" width="400" height="200" allowscriptaccess="always" allowfullscreen="true" />

Ce serait génial si, d'une manière ou d'une autre, une image de la vidéo devenait la vignette en vedette de son message. Avez-vous une idée sur la façon dont une telle chose pourrait être faite?

1
J82

Vous pouvez utiliser l'API Blip TV:

http://wiki.blip.tv/index.php/Blip.tv_API

Cherchez "Comment trouver la vignette d'un article?" Des exemples de l'API peuvent être trouvés dans le wiki, par exemple. le PHP Exemple:

include_once("blipPHP.php");
$blipPHP = new blipPHP("username", "password");
$respond = $blipPHP->info(4794325);

retourne un tableau LONG. À l'intérieur de cela, vous trouvez:

[3] => SimpleXMLElement Object
                                    (
                                        [@attributes] => Array
                                            (
                                                [rel] => alternate
                                                [type] => application/rss+xml
                                                [href] => http://blip.tv/rss/4812438
                                            )

                                    )

Maintenant, appelez pour obtenir http://blip.tv/rss/4812438 (vous pouvez le vérifier dans votre navigateur)

Et vous pouvez analyser le contenu renvoyé pour le thumnail comme dans l'expression xpath donnée au fur et à mesure que vous trouvez:

<media:thumbnail url="http://a.images.blip.tv/Oldjewstellingjokes-AdrianeBergPastorFuzz165.jpg"/>

Maintenant ... peut-être avez-vous des questions:

1 comment programmer quelque chose pour obtenir une url (URI) dans une chaîne?

WordPress fournit une méthode par défaut pour cela: wp_remote_get: READ: http://codex.wordpress.org/HTTP_API (voir aussi http://core.trac.wordpress.org/ticket/4779 )

2 Ok ... maintenant j'ai un site web dans une chaîne que dois-je faire avec?

Quoi que vous pensiez, s'il s'agissait de choses qui ne sont pas liées à "XML", vous utiliserez probablement regex intelligent pour analyser le contenu de la chaîne. (voir regex php)

Mais .... pour rendre les choses plus lisibles par vous-même, lisez la chaîne dans un DOM puis utilisez XPath pour rechercher rapidement le contenu. (voir google: xpath ou php.net: xpath)

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->strictErrorChecking = false;
if (!$dom->loadHTML($data)) 
{
   foreach (libxml_get_errors() as $error) 
   {
     //     handle errors here
    }
    libxml_clear_errors();      
} 
else
{
   $xpath = new DOMXPath($dom);
   $elements = $xpath->query('/rss/channel/item/media:thumbnail/@url');

TADA! la vignette que nous avons trouvée:

3
edelwater

En bout de ligne, il n’ya probablement pas de moyen générique de le faire, car chaque service a sa propre API, ses propres méthodes, etc.

1
Otto

Si vous souhaitez une méthode plus générique, vous pouvez essayer oEmbed, qui prend en charge une propriété thumbnail_url pour les vidéos. De nombreux sites ont un support oEmbed intégré, mais oohEmbed ou Embedly offre de nombreuses plus de services à travers la même API.

Par exemple, la demande oohEmbed de votre vidéo renvoie les informations suivantes:

{
    "type": "video",
    "version": "1.0",
    "title": "WEBISODE 14 - The Bay - Chapter 4 - Part 2",
    "author_name": "TheBaytheSeries",
    "author_url": "http://TheBaytheSeries.blip.tv",
    "provider_name": "blip.tv",
    "provider_url": "http://blip.tv",
    "width": 720,
    "height": 436,
    "html": "<embed src=\"http://blip.tv/play/AYKk4RQC\" type=\"application/x-shockwave-flash\" width=\"720\" height=\"436\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed>",
    "thumbnail_url": "http://a.images.blip.tv/Thebaytheseries-WEBISODE14TheBayChapter4Part2721.png",
    "thumbnail_width": 720,
    "thumbnail_height": 436 
}
1
Jan Fabry

Il semblerait que la vignette créée pour chaque vidéo ne ressemble pas à youtube, où vous pouvez utiliser le videoid pour le comprendre.

Voici deux de vos vidéos/vignettes de blip:

http://blip.tv/file/4778330 http://a.images.blip.tv/Thebaytheseries-WEBISODE14TheBayChapter4Part2721-711.jpg

http://blip.tv/file/4690791 http://a.images.blip.tv/Thebaytheseries-THEBAYTheSeriesSOMETHINGSADMusicVideoByTedKorsmo777-169.jpg

Donc, cela ne semble pas possible.

0
Scott Elkin