Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!