Převod youtube videa (části kódu)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wicked
Člen | 290
+
0
-

Zdravím přátelé,

chtěl jsem se Váš optat, jak řešíte vkládání youtube videí do aplikací?

Jde mi o to, že na webu budu mít formulář pro vložení videí, který se uloží do DB a následně ho potom vytáhnu do šablony.

Chci udělat takovou funkčnost, že když uživatel zkopíruje URL, ta se uloží a musí se ale převést.

Respektivě user zkopíruje třeba takto link http://www.youtube.com/watch?…

A ten se dosadí do kódu

{foreach $videos as $video}
<iframe width="255" height="151" src="http://www.youtube.com/watch?v=hTWKbfoikeg" frameborder="0" allowfullscreen></iframe>
{/foreach}

Ale takto se video na webu nezobrazí, potřebuji aby se to automaticky přeložilo na

{foreach $videos as $video}
<iframe width="255" height="315" src="http://www.youtube.com/embed/hTWKbfoikeg" frameborder="0" allowfullscreen></iframe>
{/foreach}

Řešil jste to někdo? Máte na to někdo nějaký fígl?

Děkuji a s pozdravem
Wicked

Šaman
Člen | 2666
+
0
-

Já jsem jednou řešil přidávání videí z YT a řešení duplicity, pokud v té adrese byly ještě dalši parametry. Nakonec jsem si ukládal jen ten hash (hTWKbfoikeg). Rozparsování URL umi myslím i Nette.

wicked
Člen | 290
+
0
-

Ano rozpársování url mě také napadlo … Jenže jak na to v Nette?

Šaman
Člen | 2666
+
0
-

Zkoušel jsi dokumentaci?

Editoval Šaman (6. 5. 2013 18:38)

wicked
Člen | 290
+
0
-

Přiznám se, že vůbec nevím, kam, jak, co začlenit :-( V Nette začínám a docela i tápu …

Šaman
Člen | 2666
+
0
-

Metoda getQuery() ti vrátí string, ten by se dal pomocí fce explode rozdělit na jednotlivé parametry a jeden z nich začíná „v=???“.
Druhá možnost by byla vytáhnout si query a prohnat ji regulárním výrazem.

Editoval Šaman (6. 5. 2013 18:39)

wicked
Člen | 290
+
0
-

Aha :-( Tak jsem úplně zabit :-( Vůbec nevím kde začít? Nemohl by jsi mě prosím ještě víc nakopnout? Respektivě kus kódu, dát ho asi do daného VideoPresenteru, nebo vytvořit pro to model? V šabloně se potom už nic zvláštního nevykresluje?

leninzprahy
Člen | 150
+
0
-

Nebo použít parse_str

něco jako

...
$url = new \Nette\Http\Url($video);
parse_str($url->getQuery(), $query);
$hash = $query['v'];
...
hrach
Člen | 1838
+
0
-
wicked
Člen | 290
+
0
-

Koukám, že s menší úpravou by to dost vyřešilo můj problém, nepletu-li se :)

hrach
Člen | 1838
+
0
-

tak tvuj problem uz vyresil leninzprahy, nepletu-li se :)

leninzprahy
Člen | 150
+
0
-

myslím že Hrach tím měl na mysli můj příspěvek

Do databáze (nebo někam) si nebudeš ukládat celé url (http://www.youtube.com/watch?v=hTWKbfoikeg), ale jen ten hash (hTWKbfoikeg) a k tomu se právě dostaneš

$url = new \Nette\Http\Url('http://www.youtube.com/watch?v=hTWKbfoikeg');
parse_str($url->getQuery(), $query);
$hash = $query['v'];

proměnná $hash by nyní měla obsahovat právě to hTWKbfoikeg

wicked
Člen | 290
+
0
-

A tohle mám umístít do presenteru? Spíš do modelu kde tahám ty videa ne? Radši se tahle stupidně zeptám … i když vypadám jak hňup …

leninzprahy
Člen | 150
+
0
-

já bych to dal do modelu, tam kde ukládáš ty videa, takže v DB pak bude něco jako

+----------+---------------------+-------------+
| video_id | name                | hash        |
+----------+---------------------+-------------+
|        1 | Video 1             | hTWKbfoikeg |
|        2 | Video 2             | lOfn-TqzkFg |
wicked
Člen | 290
+
0
-

Tak teď jsem krapet zmatený …

O příspěvek výše jsi psal, že do DB budu ukládat celou url co user zkopíruje … takže http://www.youtube.com/watch?… a pochopil jsem to tak, že potom z DB budu tahat celou url ale předávat do proměné jenom ten $hash …

Teď jak jsi to napsal, bych to zase dal do presenteru, zakomponoval do Formuláře aby to ukládalo jenom ten hash …

leninzprahy
Člen | 150
+
0
-

psal jsem nebudeš :)

leninzprahy napsal(a):

Do databáze (nebo někam) si nebudeš ukládat celé url (http://www.youtube.com/watch?v=hTWKbfoikeg), ale jen ten hash (hTWKbfoikeg) a k tomu se právě dostaneš

wicked
Člen | 290
+
0
-

Omlouvám se moje chyba …

wicked
Člen | 290
+
0
-

Tak jsem to dokončil do zdárného konce :)

Všem mockrát děkuji za pomoc!!

Takto jsem to udělal v presenteru:

public function videoReceptPridan($form){

            $values = $form->getValues();

            $url = new Url($values['odkaz']);
            parse_str($url->getQuery(), $query);
            $hash = $query['v'];

            dibi::query('insert into video_recept', array(
                'nazev' => $values['nazev'],
                'odkaz' => $hash,
                'popis' => $values['popis'],
                'komentare' => $values['komentare'],
                'upozorneni' => $values['upozorneni'],
                'datum' => new \DateTime()
            ));
            $this->flashMessage('Recept byl úspěšně přidán!');
            $this->redirect('Homepage:');

	unset ($hash);
        }

Ještě jednou, děkuji!

Editoval wicked (7. 5. 2013 16:07)

Aurielle
Člen | 1281
+
0
-

Pokud bys potřeboval vytáhnout ID videa z jakéhokoliv možného formátu, tak StackOverflow na to má pěkný thread.