API Javascript pour Netflix Instant Player (Silverlight)?

Existe-t-il une API Javascript pour le lecteur Netflix Instant (Silverlight)? De préférence, un document soutenu, documenté, mais non supporté, sans papiers peut être acceptable aussi; C'est pour un projet personnel.

Je voudrais pouvoir jouer / suspendre et chercher à un moment donné.

Je me suis amusé à creuser cela, et je pense que j'ai trouvé votre réponse.

Pour commencer, j'ai trouvé un message (de toute évidence ancien) de quelqu'un à Netflix indiquant que leurs exigences en matière de licences les interdisaient de fournir des moyens de contrôler le lecteur à l'extérieur (tout devait être enveloppé dans une application de marque netflix et fournir des moyens d'interagir avec Le joueur à l'extérieur vous permettra d'intégrer le lecteur netflix dans les endroits où il ne devrait pas aller.) Vous pouvez trouver cette réponse ici (bien qu'il ait quatre ans, j'imaginer que peu de choses ont changé.)

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

J'ai essayé de snooping sur la page «regarder instantanément», et il y a des objets tels que netflix.SilverLight et netflix.SilverLight.MoviePlayer (qui a une méthode getPlugin () qui renvoie certains détails sur le plugin et les événements accessibles, mais pas de méthodes Pour le contrôle, mais ils ont surtout à voir avec l'exposition de la taille de la fenêtre de lecture du joueur, entre autres choses nécessaires pour le placer sur la page. Je ne pouvais vraiment rien trouver dans aucun des objets qui ont suggéré qu'ils interagissent avec le joueur de film qui semblerait me permettre d'y accéder.

J'ai également saisi les fichiers binaires du joueur et j'ai fait un sondage à travers eux. J'ai trouvé un objet ScriptInterface en interne avec [ScriptableMember] -decorated methods dans le jeu PlayMovie (), StopMovie (), ShowCurtain (), HideCurtain ().

Ensuite, j'ai remarqué qu'il y a un autre espace de noms dans les binaires du lecteur appelé Netflix.Silverlight.CBPApp.HostedPlayer, qui a sa propre interface – HostedPlayerScriptInterface. Cela a tout ce que vous voulez: données sur la position de jeu, contrôles pour augmenter et diminuer la vitesse de lecture, pause, lecture, réglage de la position de jeu, interrogation de l'état de lecture, etc. Tous ces éléments sont décorés comme [ScriptableMember] s.

Maintenant, je brise votre coeur – il ressemble (pour quelque raison que ce soit), cette interface n'est pas exposée en tant que [ScriptableType], ce qui, à mon avis, est une exigence pour pouvoir l'accéder à partir de javascript. En fait, les seules choses qui semblent être exposées de cette façon sont les événements que le joueur tire. Je suppose que ce code consiste à s'intègrer avec d'autres partenaires ou à quitter une personne à laquelle ils ont hérité le code original, mais il semble intentionnellement que ce paramètre [ScriptableType] soit exclu. Il peut y avoir un moyen de demander un binaire qui a été construit pour être «hébergé», même si je ne suis pas sûr de ce que cela signifie, et je soupçonne également qu'il sera évident pour les gens de regarder ce que vous essayez de faire et d'avoir un Arrêtez-le rapidement.

Désolé pour la réponse à long terme qui se termine par la déception, mais il apparaît dès maintenant qu'il n'y a pas vraiment de moyen de le faire. J'ai vu quelques suggestions qui, en principe, représentent l'envoi de frappes à la fenêtre du navigateur qui imitent les commandes du clavier, mais ce n'est évidemment pas ce que vous recherchez, alors je vais aller avec «non» comme réponse ici . 🙂

Modifier:

D'autres recherches montrent que ce n'est pas la panique que j'ai pensé que c'était. Je vais le mettre à jour une fois que je terminerai de creuser.

Modifier 2:

Donc, il semble que vous devez tromper le lecteur Netflix pour penser qu'il fonctionne en mode lecteur hébergé. Certaines options de configuration peuvent être transmises, mais je ne suis pas sûr de savoir comment, en particulier, vous ferez cela. Il semble que tout soit mis en place lors de l'initialisation du joueur – peut-être une sorte de bookmarklet pourrait-il recharger la page et injecter une modification? Ou peut-être simplement recharger le lecteur et modifier les paramètres.

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

C'est ce que j'ai compris. Lorsque le HostedPlayerViewModel est utilisé, ce code est exécuté:

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

Qui, si je lis correctement, vous permettra d'accéder à cet objet enregistré en obtenant l'objet DOM contenant le lecteur netflix silverlight et en appelant

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

Gardez à l'esprit que je n'ai pas fait beaucoup de ce type d'interopérabilité javascript, tellement cela est déduit de la documentation, mais il semble qu'il y ait une API de contrôle de javascript là-bas, il ne s'agit que de tromper le joueur en fonctionnant Mode hébergé.

Je vais devoir m'arrêter ici, mais j'espère que cela vous donne un bon début. J'ai laissé tomber le contenu de ce fichier de l'API JavaScript du lecteur hébergé afin que vous puissiez voir les méthodes qui seront exposées une fois que vous aurez réussi à obtenir le lecteur en mode Hébergé.

http://pastebin.com/UeN3NFMg

Bonne chance!

Je suis très en retard pour la fête et je suis sûr que beaucoup a changé à la façon dont netflix gère son code client, mais je vous suggère de regarder l'objet renvoyé par netflix.cadmium.objects.videoPlayer() .

Cela changera éventuellement, mais bon, cela pourrait être utile.

Puisque vous avez mentionné les sans-papiers …

Dans Silverlight pour une méthode pour être exposé directement à JavaScript, il a besoin d'attributs [ScriptableType] sur sa classe et [ScriptableMember] sur lui-même. Vous pouvez essayer d'ouvrir le fichier XAP pour le lecteur Netflix, de démonter l'assemblage principal et de rechercher toutes les méthodes avec [ScriptableMember] attachées. Cela peut ne pas générer d'utilité, mais c'est quelque chose que vous pouvez essayer néanmoins.

  • Un cours en JavaScript <-> Silverlight interop
  • ILSpy – Un outil pour le démontage de l'assemblage .NET

Peut-être que le site Web officiel de Netflix est un endroit pour commencer à chercher?

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

Boxee aurait peut-être pu le contrôler à un moment donné: http://dir.boxee.tv/apps/helper2/netflix.js

(Quelques autres fourches de ce genre peuvent aussi être autour).

Je me demande aussi si netflix transférant vers une implémentation HTML5 permettrait en quelque sorte un plugin de contrôler la lecture. GL!