88

/** * Sample Java code for youtube.captions.insert * See instructions for running these code samples locally: * https://developers.google.com/explorer-help/guides/code_samples#java */ import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.InputStreamContent; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.youtube.YouTube; import com.google.api.services.youtube.model.Caption; import com.google.api.services.youtube.model.CaptionSnippet; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Arrays; import java.util.Collection; public class ApiExample { private static final String CLIENT_SECRETS= "client_secret.json"; private static final Collection SCOPES = Arrays.asList("https://www.googleapis.com/auth/youtube.force-ssl"); private static final String APPLICATION_NAME = "API code samples"; private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); /** * Create an authorized Credential object. * * @return an authorized Credential object. * @throws IOException */ public static Credential authorize(final NetHttpTransport httpTransport) throws IOException { // Load client secrets. InputStream in = ApiExample.class.getResourceAsStream(CLIENT_SECRETS); GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY, clientSecrets, SCOPES) .build(); Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); return credential; } /** * Build and return an authorized API client service. * * @return an authorized API client service * @throws GeneralSecurityException, IOException */ public static YouTube getService() throws GeneralSecurityException, IOException { final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); Credential credential = authorize(httpTransport); return new YouTube.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME) .build(); } /** * Call function to create API service object. Define and * execute API request. Print API response. * * @throws GeneralSecurityException, IOException, GoogleJsonResponseException */ public static void main(String[] args) throws GeneralSecurityException, IOException, GoogleJsonResponseException { YouTube youtubeService = getService(); // Define the Caption object, which will be uploaded as the request body. Caption caption = new Caption(); // Add the snippet object property to the Caption object. CaptionSnippet snippet = new CaptionSnippet(); snippet.setIsDraft(true); snippet.setLanguage("es"); snippet.setName("Spanish captions"); snippet.setVideoId("YOUR_VIDEO_ID"); caption.setSnippet(snippet); // TODO: For this request to work, you must replace "YOUR_FILE" // with a pointer to the actual file you are uploading. // The maximum file size for this operation is 104857600. File mediaFile = new File("YOUR_FILE"); InputStreamContent mediaContent = new InputStreamContent("*/*", new BufferedInputStream(new FileInputStream(mediaFile))); mediaContent.setLength(mediaFile.length()); // Define and execute the API request YouTube.Captions.Insert request = youtubeService.captions() .insert("snippet", caption, mediaContent); Caption response = request.execute(); System.out.println(response); } } curl --request POST \ 'https://youtube.googleapis.com/youtube/v3/captions?part=snippet&key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{"snippet":{"language":"es","name":"Spanish captions","videoId":"YOUR_VIDEO_ID","isDraft":true}}' \ --compressed { "snippet": { "language": "es", "name": "Spanish captions", "videoId": "YOUR_VIDEO_ID", "isDraft": true } }