I asked chatgpt for an answer and got this code.
import com.google.api.client.auth.oauth2.Credential;import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;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.Video;import com.google.api.services.youtube.model.VideoAccessControl;import com.google.api.services.youtube.model.VideoSnippet;import com.google.api.services.youtube.model.VideoStatus;import org.springframework.stereotype.Service;import java.io.IOException;import java.security.GeneralSecurityException;import java.util.Collections;import java.util.List;@Servicepublic class YouTubeService { private final YouTube youtube; public YouTubeService() throws GeneralSecurityException, IOException { JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); Credential credential = GoogleCredential.getApplicationDefault().createScoped(Collections.singleton("https://www.googleapis.com/auth/youtube.force-ssl")); youtube = new YouTube.Builder(GoogleNetHttpTransport.newTrustedTransport(), jsonFactory, credential) .setApplicationName("Your Application Name") .build(); } public void updateVideoPrivacyAndShare(String videoId, List<String> emailAddresses) throws IOException { // Update video privacy status Video video = youtube.videos().list("snippet,status").setId(videoId).execute().getItems().get(0); VideoStatus status = video.getStatus(); status.setPrivacyStatus("private"); video.setStatus(status); youtube.videos().update("status", video).execute(); // Share video with email addresses for (String email : emailAddresses) { VideoAccessControl accessControl = new VideoAccessControl(); accessControl.setDomain("youtube.com"); accessControl.setRole("reader"); accessControl.setEmail(email); youtube.videoAccessControl().insert(videoId, accessControl).execute(); } }}
However, VideoAccessControl sadly does not exist. So is there any other way of sharing emails using the youtube api? I'd prefer not to set the status to 'unlisted' for security reasons. Chatgpt also recommended I just place the emails in the description of the video and have the user input the emails manually but that seems kind of inconvenient. Any suggestions? Is there a classes like VideoAccessControl that's hidden under the radar that anyone knows about?