Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
¿Cómo enviar/recibir mensajes de texto a través de nativeMessaging en Chrome?

Estoy tratando de enviar la URL de la pestaña actualmente activa a un script de Python. Mi extensión ya comienza a ejecutar el script e intenta enviar la URL. Sin embargo, hasta ahora no he podido recibir la URL con el script en ejecución.

ventana emergente.js:

 dlvideo.addEventListener("click", async () => { chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => { // Get current url url = tabs[0].url; // Connect to python script port = chrome.runtime.connectNative('com.ytdlp.batdlvideo'); port.onDisconnect.addListener(function() { console.log("Disconnected"); }); port.onMessage.addListener(function(msg) { console.log("Received" + msg); }); // Send url to script port.postMessage({ text: url }); }); });

dlvideo.py (el código parece atascarse aquí al comienzo del ciclo while):

 import sys if sys.platform == "win32": import os, msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) url = None while True: # The loop seems to get stuck here: text_length_bytes = sys.stdin.read(4) if len(text_length_bytes) == 0: print("test.py: sys.exit0") sys.exit(0) text_length = struct.unpack('i', text_length_bytes)[0] text = sys.stdin.read(text_length).decode('utf-8') if text.startswith('http'): url = text print(str(url)) break else: print(text)

Otros archivos probablemente no sean relevantes, pero los pondré aquí por si acaso: yt_dlp.bat:

 @echo off start cmd /k python "%~dp0/dlvideo.py" %*

manifestAPP.json:

 { "name": "com.ytdlp.batdlvideo", "description": "Youtube-dlp", "path": "C:\\Users\\.....\\native-apps\\dlvideo\\yt_dlp.bat", "type": "stdio", "allowed_origins": [ "chrome-extension://-extensionid-/" ] }

¿Alguien puede ayudar?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Ok, creo que en mi caso, el problema fue que solo se envió un mensaje al host y el host aún no está listo para el momento en que se envía.

Bueno, este al menos es el código que funcionó para mí:

popup.js y manifestAPP.json pueden permanecer igual.

dlvideo.py:

 import struct import json import sys import os # Changes the stdio-mode if sys.platform == "win32": import os, msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) # Read native message from chrome window text_message_length = sys.stdin.buffer.read(4) text_length = struct.unpack("i", text_message_length)[0] text_decoded = sys.stdin.buffer.read(text_length).decode("utf-8") text_asstr = json.loads(text_decoded) # Get URL url = text_asstr['text']

yt_dlp.bat:

 @echo off python dlvideo.py %*
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda