Я пытаюсь контролировать Netflix-плеер из расширения Google Chrome. Здесь изображение панели управления, для тех, кто не знаком с ней.
Мне удалось смоделировать щелчок по воспроизведению/паузе, следующий эпизод и переключить полноэкранные кнопки (с оранжевым квадратом), используя следующий код:
$(".[control class]").click();
Но та же логика, похоже, не применяется к слайдеру, который контролирует, в какой части видео, в котором вы находитесь (тот, что находится внутри синего прямоугольника).
Что я хочу сделать, это изменить текущую позицию видео (например, вернуться на 10 секунд). Вот что я пробовал до сих пор:
Изменить aria-valuenow на section role="slider"
:
$(".player-slider")["aria-valuenow"] = 0;
Получить красный круг, изменить его положение и нажать на него:
$(".player-scrubber-target")["style"] = "width: 30%";
$(".player-scrubber-target").click();
(Отчаянный) Измените ширину и/или щелкните по каждой строке внутри раздела:
.player-scrubber-progress-buffered (change width and click)
.player-scrubber-progress-completed (change width and click)
.player-scrubber-progress (click)
#scrubber-component (click)
@EDIT
Большое спасибо Kodos Johnson за то, что указали мне на этот вопрос и kb0 для исходного кода, с небольшим количеством исследований я могу изменить положение тома и игрока из консоли Chrome Developer Tools. Здесь код (измените [VOLUME] для желаемого объема 0 ~ 99 и [POSITION] для желаемой позиции):
// Change volume
netflix.cadmium.UiEvents.events.resize[0].scope.events.dragend[0].handler(null, {pointerEventData: {drag: {current: {value: [VOLUME]}}}});
// Change player position
netflix.cadmium.UiEvents.events.resize[1].scope.events.dragend[1].handler(null, {value: [POSITION], pointerEventData: {playing: false}});
К сожалению, это не работает вне Chrome Developer Tools. Когда я запускаю фрагменты из моего расширения, я получаю следующее:
Uncaught ReferenceError: netflix is not defined at <anonymous>:1:1
Вот как я запускаю script из моего расширения:
chrome.tabs.getSelected(null, function(tab){
chrome.tabs.executeScript(tab.id, {code: [SNIPPET]}, function(response) {});
});
Вопрос:
Как я могу изменить текущую позицию видео программно (или имитировать, что пользователь нажал на панель и изменил ее вручную) из расширения Chrome?