Java e API YouTube: gestione automatizzata dei video

19 maggio 2014

YouTube propone una vasta serie di interfacce per la gestione automatizzata dei video; in quest’articolo descriveremo l’operazione più interessante dal punto di vista dell’automazione, cioè l’attività di pubblicazione (“upload”), effettuata tramite Java, le API (Application Programming Interface) del servizio di Mountain View e le sue librerie ufficiali.

Account ed autorizzazioni

La prima cosa che bisogna fare per poter utilizzare le API di YouTube è quella di procurarsi un account Google, grazie ad esso si potrà accedere all’interfaccia Developer Console di Google dove registrare la propria applicazione. La creazione del progetto è piuttosto semplice e si limita a definire il nome dello stesso. Passo successivo sarà quello di dare l’autorizzazione alle API che vorrete utilizzare. Nel nostro caso abilitiamo “YouTube Data API v3“.

Figura 1. Google Developers Console

Google Developers Console

A questo punto si dovrà creare una nuova chiave (public API access) per definire gli IP da cui l’applicazione effettuerà la chiamata verso i server di YouTube. Verrà consegnata una API key da utilizzare in seguito per l’integrazione.

Figura 2. Client e Key IDs

Client e Key IDs

Una volta ottenuta la chiave si dovrà creare un identificativo del client, che potrà variare in funzione del tipo di applicazione progettata, Web, service o mobile:

Figura 3. Tipo di servizio

Tipo di servizio

Nell’esempio che descriveremo nei prossimi paragrafi utilizzeremo un servizio di tipo “service account”, per il quale non sarà necessario aggiungere nessun tipo di informazione. Appena creato il Client ID potremo recuperare il codice attraverso un file JSON che la stessa interfaccia ci permetterà di scaricare. A questo punto avremo le chiavi di accesso al sistema di YouTube attraverso il nostro account.

Librerie e progetti di riferimento

Prima di passare all’esempio concreto è bene chiarire che la relativa semplicità che mostreremo è nascosta da una grande quantità di codice giá scritto e librerie che riutilizzeremo in maniera più o meno consapevole. Il progetto di riferimento per questa trattazione è basato sugli esempi di sviluppo delle stesse YouTube Data API che si fonda su google-api-java-client che a sua volta si basa su Google HTTP Client Library for Java e Google OAuth Client Library for Java. Si avrà quindi bisogno di una buona quantità di altri progetti come Guava, Jetty e le relative dipendenze. Qui le riassumo in modo che possiate linkarle in maniera diretta. Se doveste usare Maven si potrà fare riferimento ai repository ufficiali dei suddetti progetti.

  • commons-logging-1.1.1.jar
  • google-api-client-1.17.0-rc.jar
  • google-api-client-java6-1.17.0-rc.jar
  • google-api-services-oauth2-v2-rev63-1.17.0-rc.jar
  • google-api-services-YouTube-v3-rev94-1.17.0-rc.jar
  • google-http-client-1.17.0-rc.jar
  • google-http-client-jackson2-1.17.0-rc.jar
  • google-oauth-client-1.17.0-rc.jar
  • google-oauth-client-java6-1.17.0-rc.jar
  • google-oauth-client-jetty-1.17.0-rc.jar
  • gson-2.1.jar
  • guava-16.0.jar
  • httpclient-4.0.1.jar
  • httpcore-4.0.1.jar
  • jackson-core-2.1.3.jar
  • jackson-core-asl-1.9.11.jar
  • jetty-6.1.26.jar
  • jetty-util-6.1.26.jar
  • jsr305-1.3.9.jar
  • log4j-1.2.14.jar
  • protobuf-java-2.4.1.jar
  • servlet-api.jar
  • xpp3-1.1.4c.jar

Dal punto di vista architetturale utilizzeremo le API in stile REST in una maniera simile a quanto abbiamo scritto relativamente alla tecnologia CXF, con lo scambio di informazioni attraverso protocollo HTTP. Attraverso le librerie di Jetty verrà messo su un piccolo Web server per poter comunicare con i server YouTube e, nel nostro caso, essere capaci di pubblicare i video.

Codice di esempio Upload

L’obiettivo del nostro esempio è quello di descrivere come sia possibile far uso delle API di YouTube per pubblicare un video nel nostro account. La prima cosa da fare, seguendo le regole della programmazione Object Oriented, sarà quella di creare la nostrá entità, nel nostro caso una classe che chiameremo YTVideo, che conterrà tutte le informazioni utili (o almeno il minimo set necessario) per poter pubblicare un video.

	package html.it.YouTube.model;
	…
	public class YTVideo {
		String code;
		String title;
		String description;
		String localFile;
		String privacy;
		List<String>  tags;
		String ytCode;
		String ytStatus;
		private long size;

	… // costruttore e relativi getter e setter
	}

Un semplicissimo bean ci permetterà di gestire le informazioni base per la pubblicazione, come il titolo, la descrizione del video e attributi opzionali molto utili come i tag e la risorsa vera e propria, rappresentata dal file (potreste decidere di rendere la cosa più strutturata con ulteriori entità, come YouTubeFile o YouTubeTag). Infine, molto utili per le integrazioni, attributi come lo stato di pubblicazione o il codice che YouTube assegnerà alla risorsa (rispettivamente ytStatus e ytCode). Anche qui, per semplicità ci limiteremo a utilizzare degli String.

Sempre per mantenere un minimo di astrazione, creiamo un’interfaccia, che estenderemo con una classe che sarà il nostro vero controller applicativo.

package html.it.YouTube;

import html.it.YouTube.model.YTVideo;
import java.io.IOException;


public interface YTUploader {
	String uploadYTVideo(YTVideo video) throws IOException;
}

Nella prossima parte di questa trattazione verranno analizzate tutte le operazioni e il codice necessari per i passaggi che vanno dall’autenticazione fino all’upload dei contenuti.

Se vuoi aggiornamenti su Java e API YouTube: gestione automatizzata dei video inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Java e API YouTube: gestione automatizzata dei video

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy