Ottenere una miniatura di un video esterno come anteprima per un tipo di messaggio personalizzato?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9929

  •  16-10-2019
  •  | 
  •  

Domanda

Ho visto alcune altre discussioni simili, ma erano tutti per i video di YouTube. Mi chiedevo se lo stesso si potrebbe fare per i video ospitati su altri server come blip. Ecco un esempio di un video blip: http://blip.tv/file/4778330

Questo è il modo momento ho impostato le cose:

Ho un tipo di messaggio personalizzato per i video con una scatola di meta per lo src (video_src) dal codice embed così tutto quello che dovete fare è inserire lo src e diventa visualizzati dal mio modello single-videos.php in questo modo:

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

Sarebbe fantastico se in qualche modo un fotogramma del video è diventato il Thumbnail del suo posto. Qualche idea su come potrebbe essere fatto qualcosa di simile?

È stato utile?

Soluzione

È possibile utilizzare l'API Blip TV:

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

Cercare "Come faccio a trovare la miniatura di un elemento?" Esempi di API possono essere trovati nel wiki esempio PHP Esempio:

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

restituisce una matrice LUNGO. All'interno di questa si trova:

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

                                    )

Ora effettuare una chiamata per ottenere http://blip.tv/rss/4812438 (si può controllare questo nel tuo browser)

E si può analizzare il contenuto restituito per il Thumnail come nel espressioni XPath dato come si trova:

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

Ora ... forse hai qualche domanda:

1 Come faccio a programma qualcosa per ottenere un URL (URI) in una stringa?

WordPress fornisce un metodo di default per questo: wp_remote_get: LEGGI: ?? http://codex.wordpress.org/HTTP_API (vedi anche http://core.trac.wordpress.org/ticket/4779 )

2 Ok ... ora ho qualche sito in una stringa che cosa devo fare con esso?

Qualunque cosa si può pensare, se si tratta di roba che non è "XML" legata probabilmente userai intelligente regex per analizzare il contenuto di fuori della stringa. (Vedi php regex)

Ma .... per fare cose più leggibile per te, leggere la stringa in un DOM e quindi utilizzare XPath per la scansione in modo rapido per il contenuto. (Vedi google: XPath o 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 miniatura che abbiamo trovato:

Altri suggerimenti

La linea di fondo è che non v'è probabilmente modo non generico per farlo, perché ogni servizio ha una propria API e metodi e così via.

Se si vuole un metodo più generico, si potrebbe provare oEmbed, che supporta una proprietà thumbnail_url per i video. Molti siti hanno il supporto oEmbed integrato, ma oohEmbed o Embedly offrono molti più servizi attraverso la stessa API.

Per esempio, la richiesta oohEmbed per il video restituisce le seguenti informazioni:

{
    "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 
}

Sembrerebbe che il blip miniatura crea per ogni video non è come YouTube, dove è possibile utilizzare il VideoId per capirlo.

Qui ci sono due dei tuoi video / pollici da 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

Quindi, non sembra possibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top