Quería crear botones que cambiaran las calidades de transmisión en Twitch para hacerlo más fácil en lugar de hacer clic tres veces (icono de configuración -> calidad -> calidad específica).
Decidí ocuparme de los complementos/extensiones más tarde e hice todo en un script de usuario dentro de ViolentMonkey para desarrollar, y pensé que simplemente agregar ese script como una entrada de content_scripts en el manifiesto haría que funcionara como una extensión, pero a mi sorpresa, la función no puede encontrar las propiedades de reacción para encontrar el 'reproductor de video real'.
El código que estoy usando para tomar el reproductor de video es este:
function findPlayer() { try { let videoPlayer = null; function findReactNode(root, constraint) { if (root.stateNode && constraint(root.stateNode)) { return root.stateNode; } let node = root.child; while (node) { const result = findReactNode(node, constraint); if (result) { return result; } node = node.sibling; } return null; } let reactRootNode = null; let rootNode = document.querySelector('#root'); if (rootNode && rootNode._reactRootContainer && rootNode._reactRootContainer._internalRoot && rootNode._reactRootContainer._internalRoot.current) { reactRootNode = rootNode._reactRootContainer._internalRoot.current; } videoPlayer = findReactNode(reactRootNode, node => node.setPlayerActive && node.props && node.props.mediaPlayerInstance); videoPlayer = videoPlayer && videoPlayer.props && videoPlayer.props.mediaPlayerInstance ? videoPlayer.props.mediaPlayerInstance : null; if (videoPlayer) { return videoPlayer; } } catch(err) { console.log(err); } } Noté que cuando traté de ejecutar la extensión, no hizo nada, así que, después de depurar un poco, descubrí que aunque rootNode regresa con éxito, en un script de usuario tiene todas las siguientes propiedades, pero cuando está en una extensión, le faltan los dos últimos, va de defineGetter a proto y listo.
__defineGetter__ __defineSetter__ __lookupGetter__ __lookupSetter__ __proto__ __reactContainer$dbrtyzpjr3t _reactRootContainer <-- what I need Incluso traté de buscar _reactRootContainer directamente, pero no hay muchos resultados de esto, y ninguno útil, también, traté de encontrar otras formas de entrometerme con las cosas internas de reacción de esta publicación: React: obtener un componente de un elemento DOM para depuración , que tampoco devuelve nada.
Alguien tiene alguna idea sobre cómo obtener el reproductor de video, no es necesario que sea a través de este método, nada que pueda usar para hacer videoPlayer.setQuality y demás.
¡Muchas gracias por adelantado!