youtube api v3
Ik ben momenteel bezig met een integratie van de nieuwe YouTube API (v3) en dat lukt allemaal aardig, alleen zit ik een beetje in dubio met twee vragen, namelijk;
1) Moet ik data cachen in een eigen database om het aantal requests naar YouTube te minimaliseren?
2) Zoja, hoe kan ik data het beste cachen? Gewoon in de frontend obv een user request en een interval (bv 1 keer per 4 uur), of kan ik beter een dagelijkse cronjob hiervoor laten lopen?
Aanvulling voor punt 2; als ik kies om het in de frontend te implementeren zit ik tevens met het *probleem* dat YouTube maar 25 resultaten (bv 25 videos van totaal 200) per request laat zien, dus om alle pagina's te cachen moet ik een recursive functie gebruiken, wat bij een grote hoeveelheid de laadbaarheid zal vertragen.
Kleine informatie over het project; ik moet voor een bedrijf haar channel gegevens ophalen met alle daarbij horende video's opgedeeld per afspeellijst (playlist).
Helaas vind ik alle documentatie nogal beperkt, vooral mbt caching worden er geen voorbeelden en ideeen aangedragen.
Zie graag jullie reactie tegemoet!
Ken
Gewijzigd op 13/10/2013 15:06:17 door Ken PHP
Hier een voorbeeld van een script dat ik heb gebruikt:
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
<?php
//Playlist: playlist?list=PLZLTS4u9M_2rYRUMj5RoI016wS_JxRnGE, remove playlist?list= from name
$playlist_id = "PLZLTS4u9M_2rYRUMj5RoI016wS_JxRnGE";
$url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2&alt=json";
$data = json_decode(file_get_contents($url),true);
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);
echo "Let's play".$info["title"]['$t'].'<br/><hr><br/>';
for($i=0;$i<9;$i++){
echo "<div class=\"playlist-video\"><a href='".$video[$i]['link'][0]['href']."'><img style='width: 100%; ' src='".$video[$i]['media$group']['media$thumbnail'][1]['url']."' /></a><br />";
echo "Name: ".$video[$i]['title']['$t'].'<br/><hr><div>';
}
?>
//Playlist: playlist?list=PLZLTS4u9M_2rYRUMj5RoI016wS_JxRnGE, remove playlist?list= from name
$playlist_id = "PLZLTS4u9M_2rYRUMj5RoI016wS_JxRnGE";
$url = "https://gdata.youtube.com/feeds/api/playlists/".$playlist_id."?v=2&alt=json";
$data = json_decode(file_get_contents($url),true);
$info = $data["feed"];
$video = $info["entry"];
$nVideo = count($video);
echo "Let's play".$info["title"]['$t'].'<br/><hr><br/>';
for($i=0;$i<9;$i++){
echo "<div class=\"playlist-video\"><a href='".$video[$i]['link'][0]['href']."'><img style='width: 100%; ' src='".$video[$i]['media$group']['media$thumbnail'][1]['url']."' /></a><br />";
echo "Name: ".$video[$i]['title']['$t'].'<br/><hr><div>';
}
?>
Als we er van uit gaan dat je een site moet maken voor Machinima en je wil deze playlist inladen:
http://www.youtube.com/playlist?list=PLZLTS4u9M_2rYRUMj5RoI016wS_JxRnGE
Dan voer je het bovenstaande script uit.
bedankt voor je reactie, maar het aangedragen voorbeeld is de api v2 implementatie. Ik ben nu bezig met v3.
Daarnaast wil ik op basis van een channelId alle playlists ophalen en daarna pas de video's per playlistId.
Voorbeeld code:
https://developers.google.com/youtube/v3/code_samples/php
Documentatie:
https://developers.google.com/youtube/v3/getting-started
Gr, Ken