2013-08-12 15 views
12

Ho bisogno di leggere il testo del sottotitolo di terze parti, video YouTube disponibili pubblicamente nella mia app web java, vale a dire NON ho caricato il contenuto.Sottotitoli nell'API di YouTube v3

Mentre v2 of the YouTube Data APIaccesso limitato alle informazioni di didascalia alla persona che ha caricato il video sembra una restrizione molto strano per dare accesso a tutto tranne questo pezzo di dati. Mi aspettavo di vedere questa restrizione rimossa in v3 of the API ma ora l'unico riferimento a didascalia chiusa è un metodo booleano per confermare se CC è collegato al video. Anche il proprietario non sembra poterlo scaricare ora. (Sono Google sta per aggiungerlo indietro almeno?)

Boolean hasCaptions = video.getContentDetails().getCaption() 

Utilizzando v3 YouTube Data API (utilizzando il Google Java API client) sono stato in grado di trovare, autenticare e recuperare le risorse di YouTube (video, playlist, canali, ecc). Posso fare praticamente tutto ciò che l'API ha reso disponibile, ma non riesco a leggere il testo della didascalia.

Ho anche provato il unpublished timed text link workaround ma questo è incoerente, non funziona per i contenuti più recenti e ha molti errori di codifica nel contenuto che copre.

Mi chiedo se qualcuno conosce un metodo per recuperare il testo di didascalia da un video di YouTube da java (non un plugin .js)?

[Caso peggiore, qualcuno sa di una libreria che mi permette di interagire a livello di codice con YouTube come un browser e mi permette di fare clic sul pulsante trascrizione sullo schermo e che può tirare la trascrizione da lì? Prowser non consente l'interazione con i clic e JxBrowser è $ 1,300 +]

Il codice seguente funziona correttamente e mi porta a tutti i dati video, quindi è l'ultimo passaggio su cui ho bisogno di aiuto. L'ho incluso qui se è utile a chiunque abbia bisogno di arrivare così lontano.

// Build a YouTube resource 
YouTube youtube = new YouTube.Builder(new NetHttpTransport(), 
          new JacksonFactory(), 
          new HttpRequestInitializer()) 
        .setApplicationName("caption-retrieval") 
        .build(); 

// Create the video list request, it should only return one 
// result 
YouTube.Videos.List listVideosRequest = youtube.videos().list("id, snippet, contentDetails"); 
listVideosRequest.setKey(API_KEY)); 
listVideosRequest.setId(VIDEO_ID); 

// Request is executed and video list response is returned 
VideoListResponse listVideosResponse = listVideosRequest.execute(); 

List<Video> videos = listVideosResponse.getItems(); 

// Since a unique video id is given, it will only return 
// one video. Would check if video has been removed in 
// production code. 
Video video = videos.get(0); 

// Read the remaining meta information 
title = video.getSnippet().getTitle().trim(); 
author = video.getSnippet().getChannelTitle(); 

captionText = ??????? 

Qualsiasi aiuto è stato ricevuto con gratitudine.

Grazie,

Greg.

risposta

14

Speriamo di avere presto il supporto di Captions su Data API v3. Non avrai bisogno di raschiare il sito web.

Aggiornamento: questo è stato implementato ora. The docs can be found here.

+2

Grazie @IbrahimUlukaya. Questa è una fantastica notizia. Hai un senso su quanto presto potrebbe essere? Settimane, mesi, ecc.? –

+1

Qualche aggiornamento su questo? –

+1

Hai un aggiornamento per noi? –

0

Hanno finalmente introdotto la funzione:

https://developers.google.com/youtube/v3/docs/captions