use of com.google.api.client.googleapis.media.MediaHttpDownloaderProgressListener in project api-samples by youtube.
the class Captions method downloadCaption.
/**
* Downloads a caption track for a YouTube video. (captions.download)
*
* @param captionId The id parameter specifies the caption ID for the resource
* that is being downloaded. In a caption resource, the id property specifies the
* caption track's ID.
* @throws IOException
*/
private static void downloadCaption(String captionId) throws IOException {
// Create an API request to the YouTube Data API's captions.download
// method to download an existing caption track.
Download captionDownload = youtube.captions().download(captionId).setTfmt(SRT);
// Set the download type and add an event listener.
MediaHttpDownloader downloader = captionDownload.getMediaHttpDownloader();
// Indicate whether direct media download is enabled. A value of
// "True" indicates that direct media download is enabled and that
// the entire media content will be downloaded in a single request.
// A value of "False," which is the default, indicates that the
// request will use the resumable media download protocol, which
// supports the ability to resume a download operation after a
// network interruption or other transmission failure, saving
// time and bandwidth in the event of network failures.
downloader.setDirectDownloadEnabled(false);
// Set the download state for the caption track file.
MediaHttpDownloaderProgressListener downloadProgressListener = new MediaHttpDownloaderProgressListener() {
@Override
public void progressChanged(MediaHttpDownloader downloader) throws IOException {
switch(downloader.getDownloadState()) {
case MEDIA_IN_PROGRESS:
System.out.println("Download in progress");
System.out.println("Download percentage: " + downloader.getProgress());
break;
// been successfully downloaded.
case MEDIA_COMPLETE:
System.out.println("Download Completed!");
break;
// not started yet.
case NOT_STARTED:
System.out.println("Download Not Started!");
break;
}
}
};
downloader.setProgressListener(downloadProgressListener);
OutputStream outputFile = new FileOutputStream("captionFile.srt");
// Download the caption track.
captionDownload.executeAndDownloadTo(outputFile);
}
Aggregations