Как программно загружать видео с Youtube на определенную учетную запись YouTube на Android

#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. О, спасибо, я обязательно попробую это