#java #android #kotlin #youtube
#java #Android #kotlin #YouTube
Вопрос:
Вот мой вариант использования: я хочу, чтобы пользователи могли загружать видеоконтент со своих устройств непосредственно на мой YouTube или выделенный аккаунт YouTube, не выходя из моего приложения. Прежде всего, возможно ли это? Пожалуйста, я буду признателен за примеры кода. Спасибо
Комментарии:
1. Как насчет использования API youtube? Документы для этого можно найти здесь , а Android quickstart здесь .
2. На самом деле, эта часть документов звучит еще более многообещающе.
3. Спасибо, я проверил это, но, к сожалению, это мне не помогает, поскольку нет прямого решения для моего варианта использования. Это developers.google.com/youtube/v3/quickstart/android только объясняет реализацию python
4. Ссылка, которую вы только что написали, показывает не python, а примеры java / android.
Ответ №1:
Здесь показано, как загрузить видео с помощью HTTP-запроса.
Существуют фрагменты кода, которые также доступны на Java (и kotlin очень похож).
Чтобы узнать, как загрузить видео, перейдите по https://developers.google.com/youtube/v3/code_samples/code_snippets , выберите Videos
в разделе Resource
и insert
в разделе метод.
Если вы затем нажмете Show code
и выберите JAVA
вверху, вы получите этот пример кода:
/**
* Sample Java code for youtube.videos.insert
* See instructions for running these code samples locally:
* https://developers.google.com/explorer-help/guides/code_samples#java
*/
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.Video;
import com.google.api.services.youtube.model.VideoSnippet;
import com.google.api.services.youtube.model.VideoStatus;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.Collection;
public class ApiExample {
// You need to set this value for your code to compile.
// For example: ... DEVELOPER_KEY = "YOUR ACTUAL KEY";
private static final String DEVELOPER_KEY = "YOUR_API_KEY";
private static final String APPLICATION_NAME = "API code samples";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
/**
* 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();
return new YouTube.Builder(httpTransport, JSON_FACTORY, null)
.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 Video object, which will be uploaded as the request body.
Video video = new Video();
// Add the snippet object property to the Video object.
VideoSnippet snippet = new VideoSnippet();
snippet.setCategoryId("22");
snippet.setDescription("Description of uploaded video.");
snippet.setTitle("Test video upload.");
video.setSnippet(snippet);
// Add the status object property to the Video object.
VideoStatus status = new VideoStatus();
status.setPrivacyStatus("private");
video.setStatus(status);
// 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 137438953472.
File mediaFile = new File("YOUR_FILE");
InputStreamContent mediaContent =
new InputStreamContent("application/octet-stream",
new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());
// Define and execute the API request
YouTube.Videos.Insert request = youtubeService.videos()
.insert("snippet,status", video, mediaContent);
Video response = request.setKey(DEVELOPER_KEY).execute();
System.out.println(response);
}
}
Вы также можете посмотреть другой пример кода java для загрузки видео на YouTube на GitHub.
Обратите внимание, что вам нужно будет внести несколько изменений в это:
В Android у вас нет main
. Вам нужно будет (1) поместить этот код везде, где вам нужно, и вы можете захотеть ro (2) сделать это асинхронно.
При использовании kotlin вам также (3) необходимо соответствующим образом изменить синтаксис.
Комментарии:
1. О, спасибо, я обязательно попробую это