Playlist youtube en speler (met verbod op console)
Dat hoeven geen eigen video's te zijn van de youtubeaccount.
Men kan dus via kopieren en plakken uit de browser, youtubes in lijst brengen.
Ik zorg er dan voor dat de Video ID's worden opgeslagen.
Als ik afspeel via een embedded speler dan krijg ik de volgende melding.
Veroorzaakt door mijn Addblocker.
Failed to load https://googleads.g.doubleclick.net/pagead/id?exp=nomnom: Redirect from 'https://googleads.g.doubleclick.net/pagead/id?exp=nomnom' to 'data:text;charset=utf-8,' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.youtube.com' is therefore not allowed access.
Terwijl speler wel gewoon werkt.
Daarnaast is het de bedoeling dat ik de tijd achterhaal van een youtube:
Code (php)
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
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
<?php
//$url = '//www.youtube.com/watch?v=PU5xxh5UX4U'; //werkt wel, maar geen tijd.
$url = '//www.youtube.com/watch?v=TW2ST72xS6c'; // werkt wel met tijd.
$data = json_decode(file_get_contents('http://api.rest7.com/v1/youtube_info.php?url=' . $url));
if (@$data->success !== 1)
{
die('Failed');
}
//echo 'Video ID=' . $data->id . '<br>';
echo 'Title=' . $data->title . '<br>';
echo 'Duration sec=' . $data->duration. '<br>';
//echo 'Thumbnail 1 URL=' . $data->thumb1_url . '<br>';
//rest of the thumbnails:
echo '<pre>';
print_r($data);
preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $url, $matches);
$id = $matches[1];
$width = '800px';
$height = '450px';
?>
<html>
<body>
<iframe id="ytplayer" type="text/html" width="<?php echo $width ?>" height="<?php echo $height ?>"
src="https://www.youtube.com/embed/<?php echo $id ?>?rel=0&showinfo=0&color=white&iv_load_policy=3"
frameborder="0" allowfullscreen></iframe>
</body>
</html>
//$url = '//www.youtube.com/watch?v=PU5xxh5UX4U'; //werkt wel, maar geen tijd.
$url = '//www.youtube.com/watch?v=TW2ST72xS6c'; // werkt wel met tijd.
$data = json_decode(file_get_contents('http://api.rest7.com/v1/youtube_info.php?url=' . $url));
if (@$data->success !== 1)
{
die('Failed');
}
//echo 'Video ID=' . $data->id . '<br>';
echo 'Title=' . $data->title . '<br>';
echo 'Duration sec=' . $data->duration. '<br>';
//echo 'Thumbnail 1 URL=' . $data->thumb1_url . '<br>';
//rest of the thumbnails:
echo '<pre>';
print_r($data);
preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $url, $matches);
$id = $matches[1];
$width = '800px';
$height = '450px';
?>
<html>
<body>
<iframe id="ytplayer" type="text/html" width="<?php echo $width ?>" height="<?php echo $height ?>"
src="https://www.youtube.com/embed/<?php echo $id ?>?rel=0&showinfo=0&color=white&iv_load_policy=3"
frameborder="0" allowfullscreen></iframe>
</body>
</html>
Die tijd is relevant om van video te wisselen.
Maar werkt niet.
overigens lijkt mij http://api.rest7.com/v1/youtube_info.php geen officiële YouTube API. In deze link wordt alle metadata opgehoest bij een specifieke video, waaronder de duur (ContentDetails.duration).
Via een list-call kun je informatie van specifieke video's opvragen.
Om van de YouTube API gebruik te maken heb je wel een API-key nodig uiteraard.
Ook bij andere video's geprobeerd.
Alleen de link die ik aangaf werkt met de tijd.
Het script komt van:
http://rest7.com/youtube_info
en zij zitten op Github.
Op die site werken andere youtubes ook niet met de tijd.
Ik ben nu de Youtube API aan het doorworstelen.
Ik zag in de demonstratievideo wel een link met 1 video ID.
Voor speellijsten werken ze met de echte youtube playlist.
Maar misschien biedt dat nog soelaas.
een Api key heb ik wel voor andere doeleinden.
Je wilt de afspeelduur uit de video halen.
Dan moet je Thomas zijn linkje even bekijken.
Bedankt voor het meedenken en de linkjes.
Ariën, als je account op youtube hebt, dan kun je daar afspeellijsten maken
volgens het Youtube protocol.
Daar is de Api ook grotendeels op gebaseerd.
Ik gebruik de youtubes van anderen dan van mezelf.
Bijv. een verzameling van Elvis.
https://www.pctraverse.nl/elvis.html
En de oplossing is eigenlijk heel eenvoudig.
Bij de video's die niet getoond worden, wordt een volledig beeld geëist.
De meldingen in de console hebben inderdaad betrekking op mijn addblocker.
Op browser zonder addblocker komt wel de reclame in de video.
Maar dat installeren mensen zelf.
Hier het scriptje om met mijn video ID's alles af te spelen in volledig scherm.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type = "text/javascript">
$(function(){
$('#video').css({ width: $(window).innerWidth() + 'px', height: $(window).innerHeight() + 'px' });
$(window).resize(function(){
$('#video').css({ width: $(window).innerWidth() + 'px', height: $(window).innerHeight() + 'px' });
});
});
</script>
</head>
<body>
<iframe id="video" src="https://www.youtube.com/embed/VIDEO_ID?playlist=PU5xxh5UX4U,Yf2KtxEtsEM,e8jAqvmnsIk,SBmAPYkPeYU,BeTurYZuY4A" frameborder="0" allowfullscreen></iframe>
</body>
</html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type = "text/javascript">
$(function(){
$('#video').css({ width: $(window).innerWidth() + 'px', height: $(window).innerHeight() + 'px' });
$(window).resize(function(){
$('#video').css({ width: $(window).innerWidth() + 'px', height: $(window).innerHeight() + 'px' });
});
});
</script>
</head>
<body>
<iframe id="video" src="https://www.youtube.com/embed/VIDEO_ID?playlist=PU5xxh5UX4U,Yf2KtxEtsEM,e8jAqvmnsIk,SBmAPYkPeYU,BeTurYZuY4A" frameborder="0" allowfullscreen></iframe>
</body>
</html>
Gewijzigd op 27/01/2018 01:03:58 door Hans De Ridder