YouTube Api - e-Lite - Politecnico di Torino
Transcript
YouTube Api - e-Lite - Politecnico di Torino
API Emiliano Castellina Dipartimento di Automatica e Informatica Politecnico di Torino [email protected] 1 Introduzione Tutto il materiale di questi lucidi è tratto da http://code.google.com/intl/it-IT/apis/youtube/getting_started.html Tool ◦ Widgets ◦ Custom player Librerie ◦ Player API ◦ Data API 2 Widget Sono componenti javascript che permettono di visualizzare i contenuti di YouTube all'interno delle pagine web 2 Widget disponibili ◦ Video Bar ◦ Video Search Controll 3 Custom Player Permette di ◦ personalizzare l'aspetto del player youtube ◦ Caricare filmati specifici Adatto per non esperti di html e javascript Interfaccia per la creazione del player http://www.youtube.com/custom_player 4 Player API Permette di controllare tramite javascript un player YouTube all'interno delle pagine web Due tipi di player ◦ Embedded ◦ Chromeless Tre metodi di interazione differente ◦ Javascript API ◦ Flash API ◦ IFrame API 5 JavaScript Player Api Richiede che il browser abbia installato il plugin Flash Consiglia di utilizzare SWFObject per includere filmati SWF ◦ http://code.google.com/p/swfobject/ La pagina web deve implementare la funzione JavaScript onYouTubePlayerReady La funzione viene richiamata quando il player è stato correttamente caricato 6 JavaScript Player Api Esempio 1 Visualizzare un player embedded nel div con id=ytapiplayer Caricamento librerie jQuery e swfobject <script type="text/javascript" src="lib/ swfobject.js"> </script> <script type="text/javascript" src="lib/jquery/ jquery-1.4.2.js"></script> Al caricamento della pagina $(document).ready(function(){ 7 JavaScript Player Api Esempio 1 Parametri swfobject Creazione del player var VIDEOID="XSGBVzeBUbk"; var params = { allowScriptAccess: "always" }; var atts = { id:myytplayer" }; swfobject.embedSWF( "http://www.youtube.com/e/"+VIDEOID+"? enablejsapi=1&playerapiid=ytplayer",//url+player params "ytapiplayer",//id div contenitore "425",//larghezza "356",//altezza "8",//versione di flash minima null,//url per installare flash null, //parametri da passare a flash params, //parametri da passare al server atts //attributi del player ); 8 JavaScript Player Api Esempio 2 Visualizzare un player chromeless nel div con id=ytapiplayer Creazione del player swfobject.embedSWF("http://www.youtube.com/ apiplayer?video_id="+VIDEOID +"&enablejsapi=1&playerapiid=myytplayer&autoplay=1&v ersion=3", "ytapiplayer", "425", "356", "8", null, null, params, atts); }) 9 Parametri del player 1/2 Aggiunti come parametri in get all'url SWF Parametro Descrizione autohide Indica se i controlli del player devono essere nascosti automaticamente: • 0 controlli visibili • 1 controlli nascosti dopo 2 secondi dall'avvio del video • 2 (default) la progress bar viene nascosta durante il video autoplay • • 0 (default) il video non parte in automatico 1 il video parte in automatico border • • 0 (default) non mostra un bordo attorno al player 1 mostra un bordo attorno al player color1,color2 • Valori esadecimale RGB • color1 colore principale bordo • color2 colore secondario bordo e background controlli controls • • 0 non mostra i controlli del player 1(default) mostra i controlli del player disablekb • • 0 (default) le scorciatoie da tastiera sono attive 1 disabilita le scorciatoie da tastiera egm • • 0 (default) disabilita Enhanced Genie Menu 1 abilita Enhanced Genie Menu enablejsapi • 0 (default) disabilita Javascript API • 1 abilita Javascript API fs • 0 (default) non visualizza bottone "A Tutto Schermo" • 1 visualizza il bottone "A tutto schermo" 10 Parametri del player 2/2 Aggiunti come parametri in get all'url SWF Parametro Descrizione hd • 0 (defualt) non visualizza per default i filmati in formato hd • 1 visualizza i filmati in formato hd In_load_policy • • 1 (default) visualizza le annotazioni del filmato 3 non visualizza le annotazioni del filmato loop • • 0 (default) esegue i/il video una volta sola 1 esegue in loop playerapiid • Stringa che specifica l'id del player playlist • Elenco di video ID separati dalla virgola e visualizzati in successione rel • • 0 non visualizza i video correlati nella egm 1 (default) visualizza i video correlati nella egm showinfo • • 0 non visualizza le informazioni sul video 1 (default) visualizza le informazioni sul video showsearch • 0 disabilita barra di ricerca quando il video è minimizzato • 1 (default) abilita barra di ricerca quando il video è minimizzato start • Int numero di secondi da dove il video deve partire 11 JavaScript Player Api Esempio 3 Visualizzare un player embedded nel div con id=video con le seguenti caratteristiche: Sia di qualità HD Carichi in loop i video con id XSGBVzeBUbk e MGHwlExcaqU Nasconda automaticamente i controlli del video 12 JavaScript Player Api Esempio 3 swfobject.embedSWF( "http://www.youtube.com/e/"+VIDEOID1+"? playlist="+VIDEOID2+ "&enablejsapi=1&autohide=1&loop=1&egm=1&hd=1&version =3", "video", "800", "600", "8", null, null, params, atts); 13 Funzioni Javascript Player Api Riferimento al player function onYouTubePlayerReady(playerId) { ytplayer = } document.getElementById("myytplayer"); Caricamento, Accodamento filmati ◦ player.cueVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):Void ◦ player.loadVideoById(videoId:String, startSeconds:Number, suggestedQuality:String):Void ◦ player.cueVideoByUrl(mediaContentUrl:String, startSeconds:Number):Void ◦ player.loadVideoByUrl(mediaContentUrl:String, startSeconds:Number):Void Esecuzione filmati ◦ player.playVideo():Void ◦ player.pauseVideo():Void ◦ player.stopVideo():Void ◦ player.seekTo(seconds:Number, allowSeekAhead:Boolean):Void ◦ player.clearVideo():Void 14 Funzioni Javascript Player Api Cambiamento del volume ◦ player.mute():Void ◦ player.unMute():Void ◦ player.isMuted():Boolean ◦ player.setVolume(volume:Number):Void ◦ player.getVolume():Number Dimensione del player ◦ player.setSize(width:Number, height:Number):Void Stato del filmato ◦ player.getVideoBytesLoaded():Number ◦ player.getVideoBytesTotal():Number ◦ player.getVideoStartBytes():Number ◦ player.getPlayerState():Number ◦ player.getCurrentTime():Number 15 Funzioni Javascript Player Api Qualità del filmato ◦ player.getPlaybackQuality():String ◦ player.setPlaybackQuality(suggestedQuality:String):Void ◦ player.getAvailableQualityLevels():Array Livelli di qualità ◦ Small ◦ Medium ◦ Large ◦ Hd720 ◦ Hd1080 ◦ Highres Informazioni sul video ◦ player.getDuration():Number ◦ player.getVideoUrl():String ◦ player.getVideoEmbedCode():String 16 Eventi JavaScript Player Api Aggiungere un listener di eventi ◦ player.addEventListener(event:String, listener:String):Void Eventi ◦ onStateChange -1 unstarted 0 ended 1 playing 2 paused 3 buffering 5 cued ◦ OnPlaybackQualityChange ◦ OnError 2 richiesta con paremetro non valido 100 video non trovato 101 e 150 non è permesso mostrare il video in un player embedded 17 ESEMPIO 4 Creare una pagina html che ◦ visualizzi 2 player YouTube chromeless ◦ Abbia i seguenti bottoni Play 1: fa partire il filmato nel player1 Play 2: fa partire il filmato nel player 2 Stop 1: ferma il filmato del player 1 Stop 2: ferma il filmato del player 2 Play All: fa partire entrambi i filati Stop All: ferma entrambi i filamti ◦ Visualizzi nello span (id='v1') lo stato del video 1 ◦ Visualizzi nello span (id='v2') lo stato del video 2 18 iFrame API API “sperimentali”, potrebbero cambiare! Utilizzano HTML 5 Compatibili con browser che non supportano Flash Player (iphone) E' necessario caricare lo script <script type="text/javascript" src="http://www.youtube.com/player_api”> </script> iFrame API Esempio 5 Caricare un filmato nel div filmato utilizzando le iFrame API var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { height: '390', width: '640', videoId: 'u1zgFlCw8Aw', events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); iFrame API Esempio 6 Creare un filmato di dimensioni 1280x720, al caricamento impostare l'audio su 50, richiamare la funzione onPlayerStateChange quando cambia stato, nascondere i controlli quando si avvia function onYouTubePlayerAPIReady() { var player; player = new YT.Player('player', { width: 1280, height: 720, playerVars: { 'autoplay': 1, 'controls': 0 }, videoId: 'u1zgFlCw8Aw', events: { 'onReady': onPlayerReady, 'onPlaybackQualityChange': onPlayerPlaybackQualityChange, 'onStateChange': onPlayerStateChange, 'onError': onPlayerError } }); } function onPlayerReady(event) { event.target.setVolume(50); event.target.playVideo(); } Esempio 7 Creare una pagina web che ◦ Utilizzando le Api iFrame visualizzi 2 player YouTube videoid=MGHwlExcaqU videoid=JcxL43SircA ◦ Abbia i seguenti bottoni Play 1: fa partire il filmato nel player1 Play 2: fa partire il filmato nel player 2 Stop 1: ferma il filmato del player 1 Stop 2: ferma il filmato del player 2 Play All: fa partire entrambi i filati Stop All: ferma entrambi i filamti ◦ Visualizzi nello span (id='v1') lo stato del video 1 ◦ Visualizzi nello span (id='v2') lo stato del video 2 Data API Permettono di accedere alle informazioni presenti in molti servizi offerti da google ◦ calendar ◦ YouTube ◦ immagini ◦ ricerche testuali Servizi web restful che forniscono feed ◦ xml ◦ json Documentazione ◦ http://code.google.com/intl/it-IT/apis/youtube/2.0/ developers_guide_protocol_audience.html Feed Xml <?xml version="1.0" encoding="UTF-8" ?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:gCal="http://schemas.google.com/gCal/2005"> <id>...</id> <updated>2006-11-12T21:25:30.000Z</updated> <title type="text">Google Developer Events</title> <subtitle type="text">The calendar contains information about upcoming developer conferences at which Google will be speaking, along with other developer-related events.</subtitle> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="..." /> <link rel="self" type="application/atom+xml" href="..." /> <author> <name>Google Developer Calendar</name> <email>[email protected]</email> </author> Feed json { "version": "1.0", "encoding": "UTF-8", "feed": { "xmlns": "http://www.w3.org/2005/Atom", "xmlns$openSearch": "http://a9.com/-/spec/opensearchrss/1.0/", "xmlns$gd": "http://schemas.google.com/g/2005", "xmlns$gCal": "http://schemas.google.com/gCal/2005", "id": {"$t": "..."}, "updated": {"$t": "2006-11-12T21:25:30.000Z"}, "title": { "type": "text", "$t": "Google Developer Events" }, "subtitle": { "type": "text", "$t": "The calendar contains information about upcoming developer conferences at which Google will be speaking, along with other developer-related events." }, "link": [{ "rel": "...", "type": "application/atom+xml", "href": "..." ], Json-C {"apiVersion":"2.0", "data":{ "updated":"2010-01-07T19:58:42.949Z", "totalItems":800, "startIndex":1, "itemsPerPage":1 , {"id":"hYB0mn5zh2c", "uploaded":"2007-06-05T22:07:03.000Z", "updated":"2010-01-07T13:26:50.000Z", "uploader":"GoogleDeveloperDay", "category":"News", "title":"Google Developers Day US - Maps API Introduction", "description":"Google Maps API Introduction ...", "tags":[ "GDD07","GDD07US","Maps" ], "thumbnail":{ "default":"http://i.ytimg.com/vi/hYB0mn5zh2c/default.jpg", "hqDefault":"http://i.ytimg.com/vi/hYB0mn5zh2c/hqdefault.jpg" }, "player":{ "default":"http://www.youtube.com/watch?v\u003dhYB0mn5zh2c" }, "content":{ "1":"rtsp://v5.cache3.c.youtube.com/CiILENy.../0/0/0/video.3gp", "5":"http://www.youtube.com/v/hYB0mn5zh2c?f...", "6":"rtsp://v1.cache1.c.youtube.com/CiILENy.../0/0/0/video.3gp" }, "duration":2840, "viewCount":220101, "favoriteCount":201, "commentCount":22, "aspectRatio":"widescreen", "rating":4.63, "ratingCount":68, °items":[ Query informazioni sui filmati Test online ◦ http://code.google.com/intl/it-IT/apis/youtube/ articles/view_youtube_jsonc_responses.html Richiesta GET http://gdata.youtube.com/feeds/api/ videos?v=2&alt=jsonc&callback=funzione¶metri Parametri Standard Google Data API Parametro Descrizione alt Specifica il formato in cui i risultati vengono restutuiti: atom, rss, json, json-in-script, jsonc author limita la ricerca ai contenuti caricati dall'autore indicato callback funzione javascript da richiamare quando i dati sono disponibili. Con la funzione ajax di jquery non è necessario specificare questo parametro, poiché viene passato automaticamente fields indica quali campi restituire (sperimentale) fields-language indica il linguaggio con cui sono specificati i fields max-results numero massimo di risultati da restituire prettyprint true indenta risposta, false non indenta risposta start-index indice del primo risultato restituito. Utilizzato in combinazione con max-results per "scorrere" l'elenco dei risultati. Ad es. start-index 15 , max-results 10 restituisce gli elementi dal 15° al 25° strict true impedisce che la richiesta abbia successo se anche un solo parametro non è corretto v versione del protocollo G-DATA. Attualmente v=2 Parametri YouTube Google Data API Parametro Descrizione caption category restituisce i video di una determinata categoria fmt Formato sottotitoli sbv Subviewer-compatibile srt Subrip-compatibile format Formato del video: 1 RSTP Stream H.263 per device mobili (176x144) 5 url per embedded player SWF 6 RTSP stream MPEG-4 per device mobili (176x144) lang Specifica la lingua dei sottotitoli location Restituisce i video che hanno una particolare localizzazione geografica. longitudine,latitudine location-radius definisce il raggio della circonferenza in cui selezionare i video in base alla localizzazione. Il centro della circonferenza è il parametro location. Ad es. true restituisce i video che hanno sottotitoli false restituisce i video che non hanno sottotitoli location=37.42307,-122.08427!&location-radius=100km Parametri YouTube Google Data API Parametro Descrizione lr limita la ricerca ai video che hanno titolo e descrizione in una determinata lingua orderby q time relevance (default) publisched ordine inverso di pubbilicazione viewCount numero di visualizzazioni discendenti rating valutazione in ordine descrescente Specifica la query di ricerca all'interno dei metadati del video. q=%22Politecnico di Torino%22 ricerca una frase esatta q=Torino%7Milano operatore or, Torino o Milano q=europa+-italia operatore not, europa e non italia today this_week this_month all_time Esempio 8 Visualizzare un elenco dei titoli dei 10 filmati di YouTube con rating maggiore che contengano come keyword "Politecnico di Torino" Informazioni sul singolo filmato Conoscendo il video id di un filmato è possibile accedere direttamente alle informazioni sul video ◦ http://gdata.youtube.com/feeds/api/videos/ videoid?v=2 Esempio 9 Effettuare una chiamata json che dato l'id di un video YouTube restituisca: ◦ il nome dell'autore ◦ il titolo ◦ la descrizione ◦ la durata ◦ l'immagine Esempio 9 http://gdata.youtube.com/feeds/api/videos/DCKs3Igs6so?v=2&alt=jsonc&callback=funzione&prettyprint=true { "apiVersion": "2.0", "data": { "id": "DCKs3Igs6so", "uploaded": "2011-04-21T09:25:22.000Z", "updated": "2011-05-10T10:08:07.000Z", "uploader": "AnteprimaCinema", "category": "Film", "title": "Harry Potter e i Doni della Morte Parte II - Trailer - Extra Video Clip 2", "description": "Harry Potter e i Doni della Morte Parte II - Trailer - Extra Video Clip 2: diretto ancora una volta da David Yates, Harry Potter e i doni della morte parte II è l'ottavo e ultimo capitolo della saga del mago più celebre della storia.\r\ncom/#!/anteprimacinema\r\n\r\nCheck out our playlist:\r\nhttp://www.youtube.com/AnteprimaCinema#grid/user/A09046110B7CA46A", "tags": [ "Harry", "Potter", "and", "the", "Deathly", "Hallows", "Movie", "Trailer", "Film", "Daniel Radcliffe", "Emma Watson", "Rupert Grint", "David Yates", "Fantasy", "Sci-Fi", "Adventure", "3D" ], "thumbnail": { "sqDefault": "http://i.ytimg.com/vi/DCKs3Igs6so/default.jpg", "hqDefault": "http://i.ytimg.com/vi/DCKs3Igs6so/hqdefault.jpg" }, "player": { "default": "http://www.youtube.com/watch?v\u003dDCKs3Igs6so&feature\u003dyoutube_gdata_player", "mobile": "http://m.youtube.com/details?v\u003dDCKs3Igs6so" }, "content": { "5": "http://www.youtube.com/v/DCKs3Igs6so?f\u003dvideos&app\u003dyoutube_gdata", "1": "rtsp://v1.cache7.c.youtube.com/CiILENy73wIaGQnK6iyI3KwiDBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp", "6": "rtsp://v5.cache1.c.youtube.com/CiILENy73wIaGQnK6iyI3KwiDBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp" }, "duration": 292, "aspectRatio": "widescreen", "rating": 4.6666665, "likeCount": "11", "ratingCount": 12, "viewCount": 4594, "favoriteCount": 3, "commentCount": 0, "accessControl": { "comment": "allowed", "embed": "allowed", } }} "commentVote": "allowed", "videoRespond": "moderated", "rate": "allowed", "list": "allowed", "syndicate": "allowed" Feed Standard • http://gdata.youtube.com/feeds/api/standardfeeds/nomeFeed? parametri Nome feed Descrizioene top_rated video YouTube con valutazione maggiore top_favorites video preferiti da più utenti most_viewed video più visualizzati most_shared video più condivisi tra gli utenti most_popular Algoritmo che combina video favoriti, con maggior valutazione e più visti most_recent Video più recenti most_discussed Video con più commenti most_responded Video con più risposte recently_featured Video che sono stati recentementi visualizzati sulla home di YouTube Feed per Nazione • http://gdata.youtube.com/feeds/api/standardfeeds/regionID/ nomefeed?parametri Esempio 10 Visualizzare un elenco con i titoli, gli autori e la durata dei 20 video più popolari in Italia http://gdata.youtube.com/feeds/api/ standardfeeds/IT/most_popular? v=2&max-results=20