API Javascript для Netflix Instant Player (серебристый свет)? - PullRequest
9 голосов
/ 22 мая 2011

Существует ли Javascript API для проигрывателя Netflix Instant (silverlight)?Предпочтительно поддерживаемый, документированный, но неподдерживаемый, недокументированный тоже может быть в порядке;это для личного проекта.

Я хотел бы иметь возможность играть / останавливаться и искать определенное время.

Ответы [ 5 ]

13 голосов
/ 01 марта 2013

Мне было весело копаться в этом, и я думаю, что нашел ваш ответ.

Для начала я нашел (по общему признанию) старый пост от кого-то из Netflix, в котором говорится, что его лицензионные требования запрещают ему предоставлять способы внешнего управления плеером (все, что нужно, чтобы обернуть его в приложении под брендом Netflix, и способы внешнее взаимодействие с игроком позволило бы вам встроить проигрыватель netflix в места, где он не должен идти. Этот ответ можно найти здесь (хотя ему четыре года, я думаю, что мало что изменилось.)

http://developer.netflix.com/forum/read/54172

Я попытался сам покопаться на странице «мгновенного просмотра», и есть такие объекты, как netflix.SilverLight и netflix.SilverLight.MoviePlayer (у которого есть метод getPlugin (), который возвращает некоторые сведения о плагине и подключаемых событиях, но нет методов для контроля,) но они в основном имеют отношение к раскрытию размера окна просмотра игрока, помимо прочего, необходимого для размещения его на странице. Я не мог найти ничего в объектах, которые предположили, что они взаимодействовали с проигрывателем фильмов, которые, казалось бы, позволили мне получить к нему доступ.

Я также поймал двоичные файлы игроков и, просматривая их, обнаружил внутри себя объект ScriptInterface с методами, декорированными [ScriptableMember], которые называются PlayMovie (), StopMovie (), ShowCurtain (), HideCurtain ().

Затем я заметил, что в двоичных файлах плеера есть еще одно пространство имен, называемое Netflix.Silverlight.CBPApp.HostedPlayer, которое имеет собственный интерфейс - HostedPlayerScriptInterface. В нем есть все , что вы хотите - данные о позиции воспроизведения, элементы управления для увеличения и уменьшения скорости воспроизведения, пауза, воспроизведение, настройка позиции воспроизведения, запрос состояния воспроизведения и т. Д. Все они оформлены как [ScriptableMember ] s.

Теперь я разбиваю ваше сердце - похоже (по какой-то причине) этот интерфейс не представлен как [ScriptableType], который, насколько я понимаю, является требованием для возможности доступа к нему из javascript. Фактически, единственными вещами, которые, кажется, выставлены таким образом, являются события, которые запускает игрок. Я предполагаю, что этот код предназначен для интеграции с другими партнерами или от кого-то, от кого они унаследовали исходный код для видеоплеера, но кажется, что этот параметр [ScriptableType] намеренно пропущен. Может быть способ запросить двоичный файл, который создан как «размещенный», хотя я не уверен, что это значит, и я также подозреваю, что он будет очевиден для людей, наблюдающих за тем, что вы пытаетесь сделать, и у вас есть прекратить ставить его быстро.

Извините за многословный ответ, который заканчивается разочарованием, но на данный момент, похоже, на самом деле не существует способа сделать это. Я видел некоторые предложения, которые в основном сводятся к отправке нажатий клавиш в окно браузера, которые имитируют элементы управления клавиатуры, но это явно не то, что вы ищете, поэтому я собираюсь перейти с «нет» в качестве ответа здесь , :)

Edit:

Дальнейшие исследования показывают, что это не тупик, как я думал. Я обновлю это, как только закончу копать.

Редактировать 2:

Похоже, вам нужно обмануть игрока Netflix, заставив его думать, что он работает в режиме размещенного игрока. Есть некоторые параметры конфигурации, которые можно передать, но я не уверен, как именно вы это сделаете. Похоже, что все настроено на инициализацию плеера - может быть, какой-то букмарклет мог бы перезагрузить страницу и внести изменения? Или просто перезагрузите плеер и измените настройки.

this.PlayerViewModel = (applicationConfiguration.PlayerConfiguration.EnableHostedPlayerControl ? new HostedPlayerViewModel() : new GenesisPlayerViewModel());

Вот где я это понял. Когда используется HostedPlayerViewModel, этот код запускается:

HtmlPage.RegisterScriptableObject("HostedPlayerControlScriptInterface_1", this.b)

, который, если я правильно читаю, позволит вам получить доступ к этому зарегистрированному объекту, получив объект DOM, содержащий проигрыватель netflix silverlight и вызвав

silverlightPlayer.content.findName('HostedPlayerControlScriptInterface_1').WhateverMethod()

Имейте в виду, что я не сделал большую часть этого взаимодействия с javascript, так как многое из этого вытекает из документации, но кажется, что там есть API-интерфейс управления javascript, это всего лишь обман игрока в работу в режиме хостинга.

Нам придется остановиться здесь, но, надеюсь, это даст вам хорошее начало. Я поместил содержимое этого файла API Javascript размещенного проигрывателя, чтобы вы могли увидеть методы, которые будут доступны после того, как вам удастся перевести проигрыватель в размещенный режим.

http://pastebin.com/UeN3NFMg

Удачи!

4 голосов
/ 25 февраля 2015

Я опаздываю на вечеринку и уверен, что многое изменилось в том, как netflix обрабатывает свой клиентский код, но я предлагаю вам взглянуть на объект, возвращенный netflix.cadmium.objects.videoPlayer().

Это изменится в конце концов, но эй, это может быть полезно.

3 голосов
/ 22 мая 2011

Так как вы упомянули недокументированное ...

В Silverlight для метода, который может быть напрямую открыт для JavaScript, ему необходимы атрибуты [ScriptableType] для его класса и [ScriptableMember] для самого себя. Вы можете попробовать открыть файл XAP для плеера Netflix, разобрать основную сборку и найти любые методы с прикрепленным к ним [ScriptableMember]. Это может не принести ничего полезного, но все же вы можете попробовать это.

1 голос
/ 27 ноября 2014

Boxee, возможно, мог бы управлять им в какой-то момент: http://dir.boxee.tv/apps/helper2/netflix.js

(несколько других форков также могут быть рядом).

Мне также интересно, переносит ли netflixреализация HTML5 позволит плагину управлять воспроизведением.GL!

1 голос
/ 22 мая 2011

Возможно, официальная веб-страница Netflix - это место, где стоит начать поиск?

http://developer.netflix.com/docs/JavaScript_APIs

...