Почему обновляется только первый плейлист youtube при отправке двух обновлений плейлиста youtube? - PullRequest
0 голосов
/ 10 февраля 2019

При выполнении приведенного ниже примера кода только первый плейлист YouTube ($ YouTubePlaylistId1) обновляется добавленным видео ($ YouTubeVideoId).

Пока не обновляется второй плейлист YouTube ($ YouTubePlaylistId2).

Я не получаю никаких ошибок, но может ли быть проблема с телом json ниже?Или это что-то еще, что я пропустил здесь?

Я пытался переключить плейлист, но всегда определяется первый, который обновляется.

Нет разницы, если этоодин и тот же идентификатор списка воспроизведения, заданный в обеих переменных: $ YouTubePlaylistId1, $ YouTubePlaylistId2, с уникальным видео ($ YouTubeVideoId).

Пробовал несколько вариантов тела json ($ YouTubePlaylistVideoBody), но обычно это заканчивается сообщением об ошибкеформат json.

# Set the first yt playlist id
$YouTubePlaylistId1 = "DummyPlaylistId1"

# Set the second yt playlist id
$YouTubePlaylistId2 = "DummyPlaylistId2"

# Set the yt video id
$YouTubeVideoId = "dQw4w9WgXcQ"

# Set access token provided by https://developers.google.com/oauthplayground
$GoogleAccessToken = "DummyAccessToken"

# Set the rest method to yt playlistitems 
$YouTubePlaylistVideoUri = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet"

# Set the JSON body 
$YouTubePlaylistVideoBody = @"
{
    "snippet": {
    "playlistId": "$YouTubePlaylistId1",
    "resourceId": {
            "kind": "youtube#video",
            "videoId": "$YouTubeVideoId"
        }
    },
    "snippet": {
    "playlistId": "$YouTubePlaylistId2",
    "resourceId": {
            "kind": "youtube#video",
            "videoId": "$YouTubeVideoId"
        }
    }
}
"@

# Create new header object
$HeaderValue = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"

# Append the Google access token in $GoogleAccessToken
$HeaderValue.Add("Authorization", "Bearer $GoogleAccessToken")

# Invoke rest command
Invoke-RestMethod -Headers $HeaderValue -Uri $Uri -Method "POST" -Body 
$YouTubePlaylistVideoBody -ContentType "application/json"

Ожидаемый результат состоит в том, что оба плейлиста YouTube обновляются с помощью видео.

Фактический результат заключается в том, что только первый плейлист (определенный в $ YouTubePlaylistVideoBody) выполняется толькообновлено, без сообщений об ошибках.

Редактировать: Попытка использовать два разных массива JSON, как показано ниже, но все они заканчиваются ошибкой "(400) Bad Request":

$YouTubePlaylistVideoBody = @"
{
    "snippet": [
        "playlistId": "$YouTubePlaylistId1",
        "resourceId": {
            "kind": "youtube#video",
            "videoId": "$YouTubeVideoId"
        },
        "playlistId": "$YouTubePlaylistId2",
        "resourceId": {
                "kind": "youtube#video",
                "videoId": "$YouTubeVideoId"
        }
    ]
}
"@

$YouTubePlaylistVideoBody = @"
[
    "snippet": {
    "playlistId": "$YouTubePlaylistId1",
    "resourceId": {
            "kind": "youtube#video",
            "videoId": "$YouTubeVideoId"
        }
    },
    "snippet": {
    "playlistId": "$YouTubePlaylistId2",
    "resourceId": {
            "kind": "youtube#video",
            "videoId": "$YouTubeVideoId"
        }
    }
]
"@
...