Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

gorbulas88
Posts: 3
Joined: 01 Sep 2021, 00:50

Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by gorbulas88 » 21 Sep 2022, 14:28

Hola gente, me presento soy nuevo y si bien hace rato navego por el Foro, cada vez que intento descifrar el script a continuacion, lejos de resolver, encuentro mas dudas. Uso AHK de forma elemental aprendiendo de a poco y no tengo conocimientos de programacion. Por lo que, mas aun agradezco la ayuda del que se quiera interesar.
Tengo una script que me lleva directamente a una lista de nombres, y quisiera que AHK detecte una serie de nombres que yo le establezca predeterminadamente. Y de encontrar algun nombre me guarde en el portapapeles el primer nombre que encuentra. Sino encuentra ningun nombre haga Click (x,Y) (para buscar en la siguiente pagina). De no encontrar en la segunda pagina, simplemente continuar con mi script sin guardar nada en el portapapeles, ( en tal caso aunque no es excluyente un msgbox diciendo que no hay coincidencias).
Por ej: Que AHK detecte a "nombre Roberto Lopes" dentro de una pagina de internet con varios nombres, pudiendo o no, estar incluido "roberto lopes".
Si alguien me puede ayudar con esto estaria por demas agradecido y al servicio de lo que tambien le pueda ayudar desde mi humilde posicion.
Un saludo.

sofista
Posts: 644
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by sofista » 21 Sep 2022, 16:52

Hola: ¡Bienvenido al foro! Entiendo lo que estás buscando, pero no informas de varios datos importantes. Sin embargo, para no dejarte sin nada, te ofrezco el siguiente script a modo de ejemplo.

Supongamos que quieres buscar uno de varios nombres en esta misma página. La función URLDownloadToVar capta y guarda todo el texto de la página web y la otra función realiza el proceso de búsqueda. En el array están escritos los nombres a buscar y el ciclo for los busca uno por uno mediante una expresión regular, que dicho sea de paso, no distingue entre mayúsculas y minúsculas debido al uso de la opción i). Si encuentra una correspondencia, la devuelve y el nombre encontrado te aparecerá en un cuadro de diálogo. Si no hay ninguna correspondencia —cambia los nombres del array para que no encuentre ninguno—, el cuadro de diálogo te lo hará saber.

Espero que te sirva o al menos te ayude a encontrar una solución:

Code: Select all

ProcessHtml(url) {
	static arr := ["roberto lopes", "carlos gomes", "marta vazques", "gorbulas88", "sofista"]
	html := URLDownloadToVar(url)
	For k, v in arr {
		if (html ~= "i)" v)
			return arr[k]
	}
	return "No se encontró ningún nombre"
}

URLDownloadToVar(url) {
	hObject := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	hObject.Open("GET", url)
	hObject.Send()
	return hObject.ResponseText
}

MsgBox, % ProcessHtml("https://www.autohotkey.com/boards/viewtopic.php?f=40&t=108703")
return

; output: roberto lopes [Devuelve el primer nombre que encuentra según está escrito en el array.]

gorbulas88
Posts: 3
Joined: 01 Sep 2021, 00:50

Re: Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by gorbulas88 » 22 Sep 2022, 16:21

Hola Sofista te agradezco mucho la respuesta y la inmediatez, la verdad que no esperaba tanta velocidad ja. Me queda una duda, como hago para ejecutar la script? es decir como le digo a AHK que comience a realizar la busqueda de los nombres?. La otra duda que tengo es que la pagina donde AHK deba encontrar esos nombres seguramente cambie de url ya que la pagina se va actualizando, de todas formas me seguiria funcionando el scritp? Muchisimas gracias!!!

sofista
Posts: 644
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by sofista » 22 Sep 2022, 17:54

Me alegro que el script haya sido de ayuda :) Para lanzar el script puedes incuirlo en el hotkey que quieras, más abajo incluyo un ejemplo. Por supuesto puedes usar cualquier otra combinación de teclas, como ^q —control + q—, !r —alt + r— o ^!+w —control, alt, may + w—. La combinación que te quede más cómoda, vos elegís.

Con respecto a cómo ingresar la url, ese es uno de los detalles que no habías aclarado. Una alternativa es cambiarla en cuadro de diálogo o MsgBox del script original. Otra es leerla de un archivo con el comando FileRead —sigue el enlace para más datos— o usar un InputBox, este último cubierto en el ejemplo.

A propósito del InputBox, le agregué un mínimo de control por el que si la url no empieza con "http(s)://" o está en blanco, el script no se ejecuta. Por supuesto, adecúa el título y el prompt —la leyenda que avisa qué información espera el script— a algo más descriptivo.

Esto es todo lo que por ahora se me ocurre.

Code: Select all

q::
	InputBox, url, Detección de nombre, Ingrese una URL válida:
	if !(url ~= "^https?://") || (url = "") {
		MsgBox, La URL ingresada no es válida. Verifíquela y vuelva a intentarlo.
		return
	}
	MsgBox, % ProcessHtml(url)
return

ProcessHtml(url) {
	static arr := ["roberto lopes", "carlos gomes", "marta vazques", "gorbulas88", "sofista"]
	html := URLDownloadToVar(url)
	For k, v in arr {
		if (html ~= "i)" v)
			return arr[k]
	}
	return "No se encontró ningún nombre"
}

URLDownloadToVar(url) {
	hObject := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	hObject.Open("GET", url)
	hObject.Send()
	return hObject.ResponseText
}

gorbulas88
Posts: 3
Joined: 01 Sep 2021, 00:50

Re: Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by gorbulas88 » 23 Sep 2022, 13:47

Barbaro Sofista Ahi entendi y pude hacer lo que buscaba!! Te agradezco mucho en serio ahora puedo seguir con mi script original pero mucho mas avanzado. Te hago una consulta personal, para entender mejor el AHK o su lenguaje o saber hacer el 5% de lo que haces, por donde me recomendas empezar? Lenguajes como javascritp, html? me pueden ayudar no? o me recomendas arrancar por otro lado? Muchisimas gracias Compañer@.

sofista
Posts: 644
Joined: 24 Feb 2020, 13:59
Location: Buenos Aires

Re: Ayuda, Script para que AHK detecte un nombre dentro de una lista y guarde.

Post by sofista » 23 Sep 2022, 22:35

gorbulas88: Según he leído en el foro, AutoHotkey es un desprendimiento de AutoIt. Este lenguaje es parecido a Visual Basic, pero con el tiempo AutoHotkey se diferenció y evolucionó hacia el C. Por esta razón —y respondiendo a tu pregunta— diría que JavaScript o Java serían los lenguajes de programación a tomar en cuenta. Sin embargo, no estoy convencido de que éste sea el camino más conveniente para aprender. Mi experiencia de aprendizaje fue otra.

Porque lo que yo aprendí hasta ahora de AutoHotkey lo logré por medio de la práctica. Aunque ya sabía algunas cosas básicas sobre macros y scripting, no tengo estudios formales en informática —aunque sí los tengo en lógica—, tampoco mi trabajo está relacionado con la computación. En su gran mayoría mis scripts están orientados al tratamiento de texto con expresiones regulares y para aprender no me quedó otro camino que el auto-aprendizaje. Es decir, comencé a escribir código, a ponerlo a prueba, a depurarlo, fui curioso y perseverante, leí una y otra vez la documentación —es buena y contiene bastantes ejemplos de uso—, probé cosas una y otra vez, tratando de entender qué ocurría. En este mismo foro hay muchos ejemplos de código y aprendí tantísimas cosas de ellos. Ahora bien, para esto último el manejo del idioma inglés es poco menos que imprescindible.

Por último, la recomendación principal para quienes empiezan con AutoHotkey es aprender a distinguir con la mayor claridad posible entre la sintaxis clásica o legacy —la que encierra entre porcentajes las variables— y la más moderna sintaxis de expresiones. Confundir sintaxis es una fuente constante de frustraciones para el novato y lo digo por experiencia, porque yo también tropecé con ese inconveniente. Claro está, la recomendación es utilizar expresiones siempre que sea posible. No sólo la sintaxis es más clara y legible, sino que también te prepara para la v2 del lenguaje.

Bueno, no quiero extenderme demasiado. Cualquier duda que te quede, sólo tienes que preguntar.

Saludos.

Post Reply

Return to “Pedir Ayuda”