Youtube class

Door Cynthia Fridsma, 13 jaar geleden, 15.872x bekeken

Dit is een PHP class om youtube filmpjes op je site te kunnen tonen, door alleen de URL van de youtube video te gebruiken.

Gesponsorde koppelingen

PHP script bestanden

  1. youtube_channel.php
  2. youtube_adjusted.php
  3. youtube.php

 

Er zijn 9 reacties op 'Youtube class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
Hieronder zie je hoe je deze class kunt gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?PHP
include_once("youtube.php");


$video = new youtube;

$video->video = "http://www.youtube.com/watch?v=4tOZgRsd4NY&list=PL89F64888F166890D";

$video->width = "320";
$video->height="240";

// playlist
$youtube = $video->play_video();

echo $youtube . "<hr>";

// 1 video
$video->video="http://www.youtube.com/watch?v=uTA5bLxfvwo";

$youtube = $video->play_video();

echo $youtube;

// shared link
echo "<hr>";
$video->width = "420";
$video->height="315";

$video->video="http://youtu.be/VRl2XFJ_tg4";
$youtube = $video->play_video();

echo $youtube;
?>
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
0 +1 -0 -1
p.s. reacties zijn natuurlijk altijd welkom ;-)
Wouter J
Wouter J
13 jaar geleden
 
0 +1 -0 -1
phoé, we hebben 3 uur niet gereageerd!

Tevens:
- ik mis visibility keywords bij properties en methods
- nooit properties publiek maken
- getallen horen niet in quotes
- is het gebruik van parse_url niet een stukje makkelijker?
- verzin een betere methode van foutafhandeling, laat de gebruiker bepalen wat de user te zien krijgt.
- script volgens de PSR standaarden, dit betekend op zijn minst dat classnamen met een hoofdletter beginnen.
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
0 +1 -0 -1
Hoi Wouter,

Bedankt voor je sugesties. Ik heb het script aangepast.

De properties width en height zijn nu private en het script biedt nu de mogelijkheid om een zelf een foutmelding te genereren.

Verder heb ik gebruik gemaakt van parse_url, dank je voor de sugestie!, en de clasnaam heb ik nu met een hoofdletter staan.

Hieronder zie je hoe de verbeterde versie gebruikt kan worden :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
include_once("youtube_adjusted.php");

$video = new YouTube(320,240);

$video->video = "http://www.youtube.com/playlist?list=PL6F5E9FD99326F98C";

// playlist
$youtube = $video->playVideo();
echo $youtube . "<hr>";

// 1 video
$video->video="http://www.youtube.com/watch?v=uTA5bLxfvwo";

$youtube = $video->playVideo();

echo $youtube;

// shared link
echo "<hr>";
$video = new YouTube(420,315);
$video->video="http://youtu.be/VRl2XFJ_tg4";
$youtube = $video->playVideo();
echo $youtube;

// ongeldig verzoek
$video->video = "http://wrongvideo.com?nothere";

// geef een eigen foutmelding mee...
$video->error ="<br>Opgevraagde video niet gevonden :-)<br>" ;

$youtube = $video->playVideo();

echo $youtube;
?>

echo "<hr>";
Rick van Riel
Rick van Riel
13 jaar geleden
 
0 +1 -0 -1
Cynthia,

Leuk stukje script alleen heb ik er een aantal opmerkingen op.
1. De benamingen van je functies en variabele zijn niet heel duidelijk. Ik zie namelijk allemaal variabele met de naam "test". Dit maakt niet echt duidelijk wat je erin opslaat. Je functie heet "playVideo", als ik dit letterlijk zou nemen zou ik denken dat er een video word afgespeeld. Maar je stuurt eigenlijk alleen maar een stuk html terug.
2. Maak gebruik van setters en getters. bijv. $video->setVideo(); en $video->getHtml();. Je weet dan direct wat de functie doet. Dan hou je het voor jezelf ook wat overzichtelijker.
3. Je maakt nu 2 verschillende iframes hebben. Als ik het goed heb een normale video en een playlist. Maar als je kijkt naar de parameters die je mee kunt sturen zijn dit er veel meer: https://developers.google.com/youtube/player_parameters#Parameters
4. Zoals wouter al aangaf maak je foutafhandeling beter. Wat je hiervoor kunt gebruiken zijn Exceptions. http://php.net/exceptions

Hoop dat je hier iets aan hebt.
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
0 +1 -0 -1
Hoi Rick,

Dank je voor je suggesties ;-).

1. Ik zal de variabel $test veranderen in iets wat meer duidelijkheid verschaft. En inderdaad, er wordt alleen een stuk HTML terug gestuurd, de ingesloten code die je van een Youtube pagina kunt krijgen.

2. Dat is een hele goede suggestie. Ik heb er zelf nooit bij stilgestaan om op die manier met setters en getters te werken. Dat maakt het ook voor de eindgebruiker een stuk overzichtelijker....

3. Klopt, ik had bewust alleen gekeken naar Playlist of een enkele video. Het script kan natuurlijk uitgebreid worden, maar dat had ik nog niet gedaan...


4. Eigenlijk weet ik niet goed wat ik met exceptions aan moet, de video's staan immers op Youtube en niet op een eigen site...

Maar ik zal kijken welke foutmeldingen Youtube gebruikt en deze in een exception verwerken...

P.s. ik ben zo vrij geweest om nog een kleine aanvulling te maken zodat je ook een Youtube channel op je scherm kunt krijgen en deze binnen je site kan bekijken.

Een demo hiervan kan je bekijken op http://www.heathernova.us/youtube.php

De aanvulling op de youtube class zal ik ook hier publiceren ;-)
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
0 +1 -0 -1
Ik heb een extra aanvulling gemaakt voor de youtube class, namelijk youtube_channel.php.

Deze kun je als volgt gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
include_once("youtube_channel.php");

// naam van je huidige script, welke als referentie punt wordt gebruikt.
$PHPdocument = $_SERVER['SCRIPT_NAME'];

$video = new YouTubeChannel($PHPdocument);

// Youtube URL: (dit kan natuurlijk ook gewoon je user channel zijn).
$video->channel="http://www.youtube.com/results?search_query=heather+nova";

if(!empty($_GET['video'])){
?>

<form>
   <input type="button" value="Previous page" onClick="javascript: history.go(-1)">
</form>    
<?php
// bekijk een losse video
   $video->video="www.youtube.com/watch?v=" . $_GET['video'];
   $article= $video->playVideo();
}
        
        
if(!empty($_GET['list']) && (empty($_GET['video']))){
?>

<form>
  <input type="button" value="Previous page" onClick="javascript: history.go(-1)">
</form>    
<?php
// bekijk een speellijst
  $video->video="http://www.youtube.com/playlist?list=" . $_GET['list'];
  $article= $video->playVideo();
}
    
        
if(empty($_GET['list']) && (empty($_GET['video']))){
  $article  = $video->myChannel();
}

        
echo $article;
?>


p.s. de variable $article staat vermeld omdat het CMS van deze variabel gebruikt maakt.
Demo pagina :
http://www.heathernova.us/youtube.php
Lano Heeren
Lano Heeren
13 jaar geleden
 
0 +1 -0 -1
cynthia, ik krijg een melding van mijn virusscanner, als ik de website bezoek (malwar)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Cynthia Fridsma
cynthia Fridsma
13 jaar geleden
 
0 +1 -0 -1
Hoi Lano,

De Heather Nova site heeft geen malware, je kunt dit online checken via URL http://sitecheck.sucuri.net/results/www.heathernova.us/youtube.php

Je virusscanner geeft een false positive...

Het script youtube_channel.php maakt gebruik van de CURL library en van youtube.com

Dankzij het script kan een youtube pagina rechtstreeks op je eigen pagina worden getoond, zonder gebruik te maken van een IFrame.

De inhoudt van de youtube pagina wordt in een variabel gestopt en deze wordt vervolgens op de web pagina getoond.


Meer info over CURL:
http://en.wikipedia.org/wiki/CURL

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. youtube_channel.php
  2. youtube_adjusted.php
  3. youtube.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.