Youtube позволяет программно создавать списки воспроизведения на вашем канале и добавлять элементы в списки воспроизведения . Вызов playlistItems/insert
также позволяет указывать свойства position
, startAt
и endAt
для клипа, который, по-видимому, соответствует вашему варианту использования.
Одно предостережение при использовании этот API - вы должны быть зарегистрированы, чтобы использовать его
Плейлист может содержать до 200 видео
UPD Я запустил следующие запросы API и смог успешно создать список воспроизведения .
curl --request POST \
'https://www.googleapis.com/youtube/v3/playlists?part=snippet%2Cstatus&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"snippet":{"title":"Sample playlist created via API","description":"This is a sample playlist description."},"status":{"privacyStatus":"unlisted"}}' \
--compressed
curl --request POST \
'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"snippet":{"playlistId":"PL5W0uIHD5lLZAK1reCuTDFpGMPygNDWvm","position":0,"resourceId":{"kind":"youtube#video","videoId":"PLOPygVcaVE"}},"contentDetails":{"videoId":"PLOPygVcaVE","startAt":"PT4H37M0.000S","endAt":"PT4H38M0.000S"}}' \
--compressed
curl --request POST \
'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"snippet":{"playlistId":"PL5W0uIHD5lLZAK1reCuTDFpGMPygNDWvm","position":1,"resourceId":{"kind":"youtube#video","videoId":"L_LUpnjgPso"}},"contentDetails":{"videoId":"L_LUpnjgPso","startAt":"PT8H37M0.000S","endAt":"PT8H38M0.000S"}}' \
--compressed
Но, похоже, на Youtube устарело contentDetails.startAt
и contentDetails.endAt
, на который я предлагал вам положиться: время начала, кажется, все еще работает, но клип воспроизводится до конца.
Я бы предложил проверить предложения из этой SO-темы - вы можете использовать некоторые идеи из ответов (например, использовать сторонних разработчиков или Javascript события в плеере)