2

目標: プログラム (java または python) を実装して、YouTube チャンネルで公開したビデオからデータを取得します。このプログラムは毎日 (午前 1:00) に開始されます。

解決策: YouTube の 1 日あたりのビュー数などのデータを取得するには、YouTube Analytics API が最適なソリューションだと思います。私は Google アカウント サービス (「GoogleCredential」) を使用して認証を行っています。

static {
    // Build service account credential.
    try {

        // Create a listener for automatic refresh OAuthAccessToken
        List<CredentialRefreshListener> list = new ArrayList<CredentialRefreshListener>();
        list.add(new CredentialRefreshListener() {

            public void onTokenResponse(Credential credential,
                    TokenResponse tokenResponse) throws IOException {
                System.out.println(tokenResponse.toPrettyString());

            }

            public void onTokenErrorResponse(Credential credential,
                    TokenErrorResponse tokenErrorResponse)
                    throws IOException {
                System.err.println("Error: "
                        + tokenErrorResponse.toPrettyString());
            }
        });

        // Create a GoogleCredential for authenticate with ServiceAccount
        // service
        credential = new GoogleCredential.Builder()
                .setTransport(HTTP_TRANSPORT)
                .setJsonFactory(JSON_FACTORY)
                .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
                .setServiceAccountScopes(SCOPES)
                .setClock(Clock.SYSTEM)
                .setServiceAccountPrivateKeyFromP12File(
                        new File("key.p12"))
                .setRefreshListeners(list).build();

        credential.refreshToken();

    } catch (GeneralSecurityException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

そして、Youtube Analytics クエリを実行します。

YoutubeAnalytics youtubeAnalytics = new YoutubeAnalytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
        .setApplicationName("Test-YouTube-Analytics/1.0").build();

    // Create request
    credential.refreshToken();
    YoutubeAnalyticsRequest<?> request = youtubeAnalytics.reports()
            .query("channel==" + channelId, "2012-10-01", "2012-12-01", "views")
            .setAlt("json")
            .setKey(API_KEY)
            .setDimensions("month")
            .setPrettyPrint(true);
    System.out.println(request.buildHttpRequest().getUrl().toString());
    ResultTable first = (ResultTable) request.execute();
}

しかし、次のエラーが表示されます。

com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Unknown error occurred on the server.",
    "reason" : "internalError"
  } ],
  "message" : "Unknown error occurred on the server."
}

あなたの洞察に感謝します!

4

1 に答える 1

5

YouTube アナリティクス API リクエストを行う場合、サービス アカウントは使用できません。YouTube チャンネルの所有者またはチャンネルに関連付けられたコンテンツ所有者のいずれかであるアカウントを使用する必要があります。サービス アカウントがそのいずれかになることはないと思います。YouTube チャンネルを所有する Google アカウントとしてログインしているときに、OAuth 2 フローを 1 回実行してください。保存された OAuth 2 更新トークンは、レポートの実行に使用できる新しいアクセス トークンを取得するために、将来繰り返し使用できます。

その問題を解決してから、もう一度レポートを実行していただけますか?

于 2012-11-30T17:08:07.797 に答える