Prečítajte si niečo zaujímavé

Získanie Embed kódu youtube videa

Aké máme možnosti?

Zdieľať Youtube video na svojej stránke je najjednoduchšie vložením Embed kódu tohto videa na miesto, ktoré potrebujeme. Embed kód nám priamo ponúka Youtube. Nájdeme ho pod videom - záložka ZDIEĽAŤ/VLOŽIŤ.

Iným problémom je, ak k tomuto kódu nemáme prístup. V tom prípade ho potrebujeme získať z URL adresy. Tento prístup je náročnejší, na druhej strane však aj  celkom zaujímavý :). V nasledujúcom článku sa Vám pokúsim priblíži, kde som sa s takýmto problémom stretla a tiež to, ako som ho napokon vyriešila.

Použitie v konkrétnom projekte

S problémom zdieľania Youtube videa som sa stretla pred niekoľkými týždňami. Pracujem na tvrobe portálu, ktorého cieľom je dávať ľuďom priestor pre zdieľanie internetových zdrojov. V praxi to vyzerá tak, že používateľ vloží do formulára ľubovoľnú URL adresu zdroja, ktorý chce na stránke zdieľať. Po odoslaní tohto formulára sa na pozadí uloží obsah stránky do databázy a následne sa očistený od navigácie, päty, reklám, ... zobrazí na hlavnej stránke. V prípade Youtube videií to potom znamená získaťz URL adresy informácie o videu (Embed kód), uložiť ich do databázy a následne zobraziť na vytváranej stránke.

Po dlhšej dobe googlenia, hľadania a skúšania som vytvorila nasledujúce 5 -krokové riešenie. Verím, že bude pre Vás užitočné :)   

Získanie Embed kódu Youtube videa z jeho URL adresy

1. krok - získanie ID videa

Predtým ako by sme robili čokoľvek iné musíme poznať ID videa, s ktorým chceme pracovať. Metódu, ktorá nám umožní získať ID videa, ak poznáme iba jeho URL adresu, uvádzam v nasledujúcom článku: Ako získať ID Youtube videa z jeho URL adresy?

2. krok - API_KEY

Okrem ID videa potrebujeme od Youtub-u získať náš osobný kľúč - tzv. API_KEY. Na jeho získanie existuje niekoľko návodov. Jeden z nich nájdete napríklad na nasledujúcej adrese: https://developers.google.com/youtube/v3/getting-started

3. krok - získanie informácií

Ak už poznáme ID videa a náš API_KEY, opäť nám pomôže samotný Youtube. Stačí, ak si vytvoríme dve premenné s nasledujúcimi URL adresami:


$Url = "https://www.googleapis.com/youtube/v3/videos?part=player&id=" . ID . "&maxResults=1&key=" . YOUR_API_KEY
$Info = https://www.googleapis.com/youtube/v3/videos?part=snippet&id=" . ID . "&key=" . YOUR_API_KEY 


V premenných $Url a $Info teraz už máme uložené všetky informácie o našom videu. Jediné čo ešte musíme urobiť je previesť tieto informácie na pole - Array tak, aby sme s nimi dokázali jednoducho pracovať.

4. krok - prevod na Pole - Array

V tomto kroku som sa ja rozhodla využiť knižnicu BUZZ (https://github.com/kriswallsmith/Buzz) a vytvorila som nasledujúce dve metódy: 
- prvá metóda "getResponseFromUri" vytvorí request na danú url adresu a vráti nám CONTENT hlavičku
- druhá metóda "getYoutubeData" prevedie JSON objekty na nami očakávané pole:

    /**
     * Returns false if url does not exist or is not accessible
     *
     * @param $uri
     *
     * @return bool|string
     */
    private function getResponseFromUri($uri)
    {
        try {
            $response = $this->buzz->get($uri);

            return $response->getContent();
        } catch (\Exception $e) {
            return false;
        }
    }


    /**
     * Return an array with video info
     *
     * @param $Uri, $Info
     *
     * @return string
     */
   private function getYoutubeData($Url, $Info)
    {
        $contentUrl = $this->getResponseFromUri($Url);
        $contentInfo = $this->getResponseFromUri($Info);

        $responeUrl = json_decode($contentUrl l);
        $responeInfo = json_decode($contentInfo);

        return [
                    'responeUrl' => $responeUrl,
                    'responeInfo' => $responeInfo, 
                   ];
    }


Popísaný postup samozrejme nie je jediný možný. Namiesto knižnice BUZZ môžete kľudne použiť napríklad aj iba obyčajný cURL.

5. krok - využívanie informácií

Teraz už máme v obyčajnom poli dostupné všetky informácie o Youtube videu, ktoré by sme mohli potrebovať a je už len na nás, ktoré informácie chceme využiť :).
 
Ja osobne som potrebovala iba nadpis, samotné video (iframe Embed kód), kategórie a popis videa. Nasledujúca metóda vracia priamo HTML kód s týmito informáciami:

 /**
     * Return HTML content
     *
     * @param $Uri, $Info
     *
     * @return string
     */
   private function getFinalHtmlText ($responeUrl , $responeInfo)
    {
        $tags = $responeInfoUrl->items[0]->snippet->tags;
        $responseTags = implode(',', $tags);


        $return = '<h1>' . $responeInfo->items[0]->snippet->title . '</h1>' . $responeUrl->items[0]->player->embedHtml . '<figcaption>' . 'Category:' . $responseTags . '</figcaption>' . 
        '<p>' . $responeInfo->items[0]->snippet->description . '</p>';

        return $return;
    }

Na záver posledné upozornenie

Youtube neponúka Embed kódy pre úplne všetky videá - niektoré videá nie je možné zdieľať :( 

Ak by ste sa podobnou problematikou zaoberali aj pri iných portáloch zverejňujúcich videá, možno Vás bude zaujímať aj môj nasledujúci článokl riešiaci rovnakú problematiku pri VIMEO videách :)
 

Zdielaj článok

Komentáre (0)

Pridaj Komentár