web-dev-qa-db-ja.com

YouTube APIV3-新しいフィードの推奨ビデオを入手する

API V3の実装と移行に関するYouTubeの公式ドキュメントとして、次のように述べています。

YouTube Data API(v2)機能: 推奨ビデオを取得
v3 APIは、現在のAPIユーザーに推奨されるビデオのみを含むリストを取得しません。ただし、v3 APIを使用して、activities.listメソッドを呼び出し、homeを設定することで、推奨される動画を見つけることができます。 パラメータ値をtrueに設定します。

ただし、パラメータ home も非推奨になりました。現在、homeパラメータをtrueに設定すると、チャンネルに最近アップロードされた動画のみが取得されます: YouTubeで人気の動画snippet.type=recommendationのビデオはまったくありません。

認証されたユーザーの推奨動画を新しいフィードに表示する必要がありますが、この機能はYouTubeによって完全に非推奨になっているようです。誰かがその解決策を持っていますか?
最初に感謝します!

11
Khang .NT

残念ながら、この機能に関するドキュメントや例は見つかりません。これは非推奨になっているようです。ただし、これを確認することはできます documentationrecommendation :などのアクティビティリソースの形式を示すサンプルJSON構造を使用してください。

"recommendation": {
      "resourceId": {
        "kind": string,
        "videoId": string,
        "channelId": string,
},

お役に立てれば!

1
abielita

APIのドキュメントには、リクエストをテストする方法が含まれています。そこにあるコードサンプルは、認証されたリクエストに対して「mine」を設定する方法を示しています。

youtubeアクティビティ

これはAndroidサンプルコードです。バックグラウンドスレッドにある必要があります。channelList応答のsetmine = trueはホームのようなものです(私は思います)。実装が次の目的であるかどうかはわかりませんでした。 Webまたはアプリ。

これはAndroidコード:

 YouTube youtube = new YouTube.Builder(transport, jsonFactory,
                    credential).setApplicationName(getString(R.string.app_name))
                    .build();

            YouTube.Activities.List activities;
            ActivityListResponse activityListResponse = null;
            List<ActivityData> activitiesData = new ArrayList<ActivityData>();

            try {
                /*
                 * Now that the user is authenticated, the app makes a
                 * channels list request to get the authenticated user's
                 * channel. Returned with that data is the playlist id for
                 * the uploaded videos.
                 * https://developers.google.com/youtube
                 * /v3/docs/channels/list
                 */

                ChannelListResponse clr = youtube.channels().list("contentDetails")
                        .setMine(true).execute();


               activities  = youtube.activities().list("id,snippet,subscriberSnippet");
                activities.setChannelId(clr.getItems().get(0).getId());

                activities.setMaxResults((long) 50);
                activityListResponse = activities.execute();

                ArrayList<String> subscriptionListIdentifier = new ArrayList<String>()
                        ,listTitles = new ArrayList<String>()
                        ,listThumbnails = new ArrayList<String>();

                List<Activity> results = activityListResponse.getItems();

                for (Activity activity : results) {
                    listTitles.add(activity.getSnippet().getTitle());
                    listThumbnails.add(activity.getSnippet().getThumbnails().getDefault().getUrl());
                    subscriptionListIdentifier.add(activity.getId());
                    //if ("public".equals(playlist.getStatus()
                    //        .getPrivacyStatus())) {
                    ActivityData data = new ActivityData();
                    data.setActivity(activity);
                    activitiesData.add(data);
                    //}
                }

                return activitiesData;

次のAPI呼び出しを使用してそれらを取得できます。

GET https://www.googleapis.com/youtube/v3/activitiespart=snippet%2CcontentDetails&channelId={channel—_Id}&maxResults=25&regionCode=tw&key={YOUR_API_KEY}
0
金馆长