Buscar imagenes sin abrir un navegador

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola, buenas noches, quisiera pedir su ayuda, de nuevo xd, tengo problemas con un codigo que hice, que hace lo que dice el titulo, pero no procesa la solicitud, quiero ver si alguien tendria algun ejemplo de buscar imagenes, o que me ayuden a solucionar el error en mi codigo xd

function IGetImageLink(sLink, sSearch)
result = HTTP.GetConnectionState();
tblresult = result.Connected
if tblresult == true then
local Reply = HTTP.Submit(sLink, {}, SUBMITWEB_GET, 20, 80, nil, nil);

if Reply ~= "" then
	local Start = String.Find(Reply, sSearch);
	if Start ~= -1 then
	local file_name = Math.Random(100000, 999999);
	Folder.Create(Shell.GetFolder(SHF_APPLICATIONDATA) .."\\Cache");

	HTTP.Download(Start, Shell.GetFolder(SHF_APPLICATIONDATA).."\\Cache"..file_name..".png", MODE_BINARY, 20, 80, nil, nil, nil);
	err = HTTP.GetHTTPErrorInfo();
	if err then
			appdata = Shell.GetFolder(SHF_APPLICATIONDATA)
			return appdata.."\\Cache\\"..file_name..".png"
	else
			return Application.GetLastError();
	end
	else
		error = Application.GetLastError();
		if (error ~= 0) then
				Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
		end
end end
error = Application.GetLastError();
if (error ~= 0) then
	Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
else
	return error
end end end



Aca el apz por si me quisieran ayudar
HIDE: ON
Hidebb Message Hidden Description


Si no contesto es porque estoy ocupado
Edit: Creo que el codigo es algo confuso xd
El String.Find devuelve un número (posición del patrón): "Hola a todos"
Si buscamos la palabra "todos", nos devuelve 8, que es la posición de la letra "t", seguida de "odos"
No puedes descargar el número 8, HTTP.Download necesita la URL, y le estás indicando un número en su lugar

Ese es el error que veo en tu código, estoy programando una solución, espérame un poco jsjsjs
:hypno: :hypno: :hypno:
Listo brodi, tengo tu código, úsalo de la siguiente manera:
Filename, ErrorCode = IGetImageLink('http://example.com/images.html', 'perro_volador')
Si en el código fuente de la página se menciona algo relacionado a "perro_volador"
(por ejemplo "example.com/498324_imagenes_perro_volador_acuatico.png")
Descargará la imagen y retornará el nombre del archivo almacenándolo en "Filename"

Si algún error ocurre, "Filename" quedará con valor "nil" y ErrorCode tendrá un valor de número o string:
1 = USUARIO NO CONECTADO
2 = LA PAGINA NO DEVOLVIO NADA
3 = NO SE ENCONTRO LO QUE BUSCABA
4 = NO SE ENCONTRO EL INICIO REAL
5 = NO SE ENCONTRO EL FINAL DE SSEARCH
[TIPO STRING] = MENSAJE DE ERROR HTTP
-CODIGO
--BUSQUEDA DE ENTRADAS INCOMPLETAS HTML (PEXABOSH @ AMSSPECIALIST)
--PARA XtremeTHN23

function IGetImageLink(sLink, sSearch)
	--VERIFICA SI EL USUARIO ESTA CONECTADO A INTERNET
	local Connected = HTTP.GetConnectionState().Connected
	if Connected then
		--USUARIO CONECTADO, PROCEDEMOS A DESCARGAR EL HTML
		local Reply = HTTP.Submit(sLink, {})
		--VERIFICAMOS QUE LA PAGINA RESPONDIO CORRECTAMENTE
		if Reply ~= "" then
			--BUSCAMOS DONDE SE ENCUENTRA SSEARCH
			local Start = String.Find(Reply, sSearch)
			if Start ~= -1 then
				--BUSCAMOS EL INICIO REAL (A T)
				--                          <--
				--                  ("HOLA A T)
				local RealStart = String.ReverseFind(Reply:sub(1, Start), "\"")
				if RealStart ~= -1 then
					--OMITIMOS LA COMILLA ("HOLA A T) -> (HOLA A T)
					RealStart = RealStart + 1
					--BUSCAMOS EL FINAL DE SSEARCH (HOLA A T)
					--                                   -->
					--                             (HOLA A TODOS)
					local End = String.Find(Reply, "\"", RealStart)
					if End ~= -1 then
						--GUARDAMOS LA PALABRA FINAL (HOLA A TODOS)
						local FinalWord = Reply:sub(RealStart, End)
						--CREAMOS UN NOMBRE DE ARCHIVO ALEATORIO
						local Filename = Math.Random(100000, 999999)..".png"
						--LO CONCATENAMOS CON LA CACHE EN APPDATA
						Filename = Shell.GetFolder(SHF_APPLICATIONDATA).."\\Cache\\"..Filename
						--DESCARGAMOS EL CONTENIDO DE LA URL (SOLO LINKS)
						--PUEDES AGREGAR UN SCRIPT QUE COMPRUEBE SI ES UNA URL
						--EN ESTE CASO, LO DEJAMOS ASÍ POR FINES PRACTICOS
						
						--TAMBIEN PUEDES AGREGAR UN CALLBACK PARA SABER EL ESTADO
						--DE DESCARGA (AMS HELP -> F1)
						HTTP.Download(FinalWord, Filename)
						local HTTPInfo = HTTP.GetHTTPErrorInfo()
						if HTTPInfo.Status > 299 then
							--SI EL CODIGO ES MAYOR A 299, ESTÁ
							--EN EL RANGO DE ERRORES HTTP, NOTIFICARLO
							return nil, HTTPInfo.Message
						end
						return Filename, 0
					else
						return nil, 5 --NO SE ENCONTRO EL FINAL DE SSEARCH
					end
				else
					return nil, 4 --NO SE ENCONTRO EL INICIO REAL
				end
			else
				return nil, 3 --NO SE ENCONTRO LO QUE BUSCABA
			end
		else
			return nil, 2 --LA PAGINA NO DEVOLVIO NADA
		end
	else
		return nil, 1 --USUARIO NO CONECTADO
	end
end
El código es un poco confuso, por eso agregue muchos comentarios, espero te sea de ayuda, si necesitas algo más responde este mensaje, los mensajes privados no me llegan xD
pexabosh escribió:
07 Dic 2021 08:04
:hypno: :hypno: :hypno:
Listo brodi, tengo tu código, úsalo de la siguiente manera:
Filename, ErrorCode = IGetImageLink('http://example.com/images.html', 'perro_volador')
Si en el código fuente de la página se menciona algo relacionado a "perro_volador"
(por ejemplo "example.com/498324_imagenes_perro_volador_acuatico.png")
Descargará la imagen y retornará el nombre del archivo almacenándolo en "Filename"

Si algún error ocurre, "Filename" quedará con valor "nil" y ErrorCode tendrá un valor de número o string:
1 = USUARIO NO CONECTADO
2 = LA PAGINA NO DEVOLVIO NADA
3 = NO SE ENCONTRO LO QUE BUSCABA
4 = NO SE ENCONTRO EL INICIO REAL
5 = NO SE ENCONTRO EL FINAL DE SSEARCH
[TIPO STRING] = MENSAJE DE ERROR HTTP
-CODIGO
--BUSQUEDA DE ENTRADAS INCOMPLETAS HTML (PEXABOSH @ AMSSPECIALIST)
--PARA XtremeTHN23

function IGetImageLink(sLink, sSearch)
	--VERIFICA SI EL USUARIO ESTA CONECTADO A INTERNET
	local Connected = HTTP.GetConnectionState().Connected
	if Connected then
		--USUARIO CONECTADO, PROCEDEMOS A DESCARGAR EL HTML
		local Reply = HTTP.Submit(sLink, {})
		--VERIFICAMOS QUE LA PAGINA RESPONDIO CORRECTAMENTE
		if Reply ~= "" then
			--BUSCAMOS DONDE SE ENCUENTRA SSEARCH
			local Start = String.Find(Reply, sSearch)
			if Start ~= -1 then
				--BUSCAMOS EL INICIO REAL (A T)
				--                          <--
				--                  ("HOLA A T)
				local RealStart = String.ReverseFind(Reply:sub(1, Start), "\"")
				if RealStart ~= -1 then
					--OMITIMOS LA COMILLA ("HOLA A T) -> (HOLA A T)
					RealStart = RealStart + 1
					--BUSCAMOS EL FINAL DE SSEARCH (HOLA A T)
					--                                   -->
					--                             (HOLA A TODOS)
					local End = String.Find(Reply, "\"", RealStart)
					if End ~= -1 then
						--GUARDAMOS LA PALABRA FINAL (HOLA A TODOS)
						local FinalWord = Reply:sub(RealStart, End)
						--CREAMOS UN NOMBRE DE ARCHIVO ALEATORIO
						local Filename = Math.Random(100000, 999999)..".png"
						--LO CONCATENAMOS CON LA CACHE EN APPDATA
						Filename = Shell.GetFolder(SHF_APPLICATIONDATA).."\\Cache\\"..Filename
						--DESCARGAMOS EL CONTENIDO DE LA URL (SOLO LINKS)
						--PUEDES AGREGAR UN SCRIPT QUE COMPRUEBE SI ES UNA URL
						--EN ESTE CASO, LO DEJAMOS ASÍ POR FINES PRACTICOS
						
						--TAMBIEN PUEDES AGREGAR UN CALLBACK PARA SABER EL ESTADO
						--DE DESCARGA (AMS HELP -> F1)
						HTTP.Download(FinalWord, Filename)
						local HTTPInfo = HTTP.GetHTTPErrorInfo()
						if HTTPInfo.Status > 299 then
							--SI EL CODIGO ES MAYOR A 299, ESTÁ
							--EN EL RANGO DE ERRORES HTTP, NOTIFICARLO
							return nil, HTTPInfo.Message
						end
						return Filename, 0
					else
						return nil, 5 --NO SE ENCONTRO EL FINAL DE SSEARCH
					end
				else
					return nil, 4 --NO SE ENCONTRO EL INICIO REAL
				end
			else
				return nil, 3 --NO SE ENCONTRO LO QUE BUSCABA
			end
		else
			return nil, 2 --LA PAGINA NO DEVOLVIO NADA
		end
	else
		return nil, 1 --USUARIO NO CONECTADO
	end
end
El código es un poco confuso, por eso agregue muchos comentarios, espero te sea de ayuda, si necesitas algo más responde este mensaje, los mensajes privados no me llegan xD
Grande pexabosh, me ha encantado el codigo!, muchas gracias, no me habia dado cuenta del problema de String.Find XD, me habia basado de un codigo que encontraba links de mediafire y pense que devolvia texto.
pexabosh escribió:
07 Dic 2021 08:04
:hypno: :hypno: :hypno:
Listo brodi, tengo tu código, úsalo de la siguiente manera:
Filename, ErrorCode = IGetImageLink('http://example.com/images.html', 'perro_volador')
Si en el código fuente de la página se menciona algo relacionado a "perro_volador"
(por ejemplo "example.com/498324_imagenes_perro_volador_acuatico.png")
Descargará la imagen y retornará el nombre del archivo almacenándolo en "Filename"

Si algún error ocurre, "Filename" quedará con valor "nil" y ErrorCode tendrá un valor de número o string:
1 = USUARIO NO CONECTADO
2 = LA PAGINA NO DEVOLVIO NADA
3 = NO SE ENCONTRO LO QUE BUSCABA
4 = NO SE ENCONTRO EL INICIO REAL
5 = NO SE ENCONTRO EL FINAL DE SSEARCH
[TIPO STRING] = MENSAJE DE ERROR HTTP
-CODIGO
--BUSQUEDA DE ENTRADAS INCOMPLETAS HTML (PEXABOSH @ AMSSPECIALIST)
--PARA XtremeTHN23

function IGetImageLink(sLink, sSearch)
	--VERIFICA SI EL USUARIO ESTA CONECTADO A INTERNET
	local Connected = HTTP.GetConnectionState().Connected
	if Connected then
		--USUARIO CONECTADO, PROCEDEMOS A DESCARGAR EL HTML
		local Reply = HTTP.Submit(sLink, {})
		--VERIFICAMOS QUE LA PAGINA RESPONDIO CORRECTAMENTE
		if Reply ~= "" then
			--BUSCAMOS DONDE SE ENCUENTRA SSEARCH
			local Start = String.Find(Reply, sSearch)
			if Start ~= -1 then
				--BUSCAMOS EL INICIO REAL (A T)
				--                          <--
				--                  ("HOLA A T)
				local RealStart = String.ReverseFind(Reply:sub(1, Start), "\"")
				if RealStart ~= -1 then
					--OMITIMOS LA COMILLA ("HOLA A T) -> (HOLA A T)
					RealStart = RealStart + 1
					--BUSCAMOS EL FINAL DE SSEARCH (HOLA A T)
					--                                   -->
					--                             (HOLA A TODOS)
					local End = String.Find(Reply, "\"", RealStart)
					if End ~= -1 then
						--GUARDAMOS LA PALABRA FINAL (HOLA A TODOS)
						local FinalWord = Reply:sub(RealStart, End)
						--CREAMOS UN NOMBRE DE ARCHIVO ALEATORIO
						local Filename = Math.Random(100000, 999999)..".png"
						--LO CONCATENAMOS CON LA CACHE EN APPDATA
						Filename = Shell.GetFolder(SHF_APPLICATIONDATA).."\\Cache\\"..Filename
						--DESCARGAMOS EL CONTENIDO DE LA URL (SOLO LINKS)
						--PUEDES AGREGAR UN SCRIPT QUE COMPRUEBE SI ES UNA URL
						--EN ESTE CASO, LO DEJAMOS ASÍ POR FINES PRACTICOS
						
						--TAMBIEN PUEDES AGREGAR UN CALLBACK PARA SABER EL ESTADO
						--DE DESCARGA (AMS HELP -> F1)
						HTTP.Download(FinalWord, Filename)
						local HTTPInfo = HTTP.GetHTTPErrorInfo()
						if HTTPInfo.Status > 299 then
							--SI EL CODIGO ES MAYOR A 299, ESTÁ
							--EN EL RANGO DE ERRORES HTTP, NOTIFICARLO
							return nil, HTTPInfo.Message
						end
						return Filename, 0
					else
						return nil, 5 --NO SE ENCONTRO EL FINAL DE SSEARCH
					end
				else
					return nil, 4 --NO SE ENCONTRO EL INICIO REAL
				end
			else
				return nil, 3 --NO SE ENCONTRO LO QUE BUSCABA
			end
		else
			return nil, 2 --LA PAGINA NO DEVOLVIO NADA
		end
	else
		return nil, 1 --USUARIO NO CONECTADO
	end
end
El código es un poco confuso, por eso agregue muchos comentarios, espero te sea de ayuda, si necesitas algo más responde este mensaje, los mensajes privados no me llegan xD
Hey te agradezco que me hayas ayudado, pero lo quise hacer con google imagenes y no devuelve nada la pagina xd, me podrias ayudar?
XtremeTHN23 escribió:
07 Dic 2021 17:07
pexabosh escribió:
07 Dic 2021 08:04
Bien descubri el problema, era muy obvio era cambiar a HTTP.SubmitSecure xd

Pero no descarga nadaaaaaaaaaaaaaaa, ayudame xfa
hachetetepedownloadsecure
NicolasG escribió:
08 Dic 2021 15:58
hachetetepedownloadsecure
ya probe xd
Que URL le pasas a la función download mediante "FinalWord"?
NicolasG escribió:
08 Dic 2021 16:42
Que URL le pasas a la función download mediante "FinalWord"?

Supongo que una parte de la url, la verdad esque no entiendo ni madres de lo que escribio pexabosh, solo entiendo unas cosas si quieres te paso el apz que he estado modificando

HIDE: ON
Hidebb Message Hidden Description
mae mia willy :drunk: :drunk: :drunk:
XtremeTHN23 escribió:
07 Dic 2021 17:07
Hey te agradezco que me hayas ayudado, pero lo quise hacer con google imagenes y no devuelve nada la pagina xd, me podrias ayudar?
Voy bro, estoy haciendo algo más sencillo para obtener la primer imagen de Google :yes:
Ya está listo brodi :hypno:

Global Functions:
--OBTENER PRIMER IMAGEN DE GOOGLE (PEXABOSH @ AMSSPECIALIST)
--PARA XtremeTHN23

function GetFirstGoogleImage(Search)
	--MODULO JSON RXI PARA SOLICITUDES EN LA API
	local Json = loadstring("local a={_version=\"0.1.2\"}local b;local c={[\"\\\\\"]=\"\\\\\",[\"\\\"\"]=\"\\\"\",[\"\\b\"]=\"b\",[\"\\f\"]=\"f\",[\"\\n\"]=\"n\",[\"\\r\"]=\"r\",[\"\\t\"]=\"t\"}local d={[\"/\"]=\"/\"}for e,f in pairs(c)do d[f]=e end;local function g(h)return\"\\\\\"..(c[h]or string.format(\"u%04x\",h:byte()))end;local function i(j)return\"null\"end;local function k(j,l)local m={}l=l or{}if l[j]then error(\"circular reference\")end;l[j]=true;if rawget(j,1)~=nil or next(j)==nil then local n=0;for e in pairs(j)do if type(e)~=\"number\"then error(\"invalid table: mixed or invalid key types\")end;n=n+1 end;if n~=#j then error(\"invalid table: sparse array\")end;for o,f in ipairs(j)do table.insert(m,b(f,l))end;l[j]=nil;return\"[\"..table.concat(m,\",\")..\"]\"else for e,f in pairs(j)do if type(e)~=\"string\"then error(\"invalid table: mixed or invalid key types\")end;table.insert(m,b(e,l)..\":\"..b(f,l))end;l[j]=nil;return\"{\"..table.concat(m,\",\")..\"}\"end end;local function p(j)return\'\"\'..j:gsub(\'[%z\\1-\\31\\\\\"]\',g)..\'\"\'end;local function q(j)if j~=j or j<=-math.huge or j>=math.huge then error(\"unexpected number value \'\"..tostring(j)..\"\'\")end;return string.format(\"%.14g\",j)end;local r={[\"nil\"]=i,[\"table\"]=k,[\"string\"]=p,[\"number\"]=q,[\"boolean\"]=tostring}b=function(j,l)local s=type(j)local t=r[s]if t then return t(j,l)end;error(\"unexpected type \'\"..s..\"\'\")end;function a.Encode(j)return b(j)end;local u;local function v(...)local m={}for o=1,select(\"#\",...)do m[select(o,...)]=true end;return m end;local w=v(\" \",\"\\t\",\"\\r\",\"\\n\")local x=v(\" \",\"\\t\",\"\\r\",\"\\n\",\"]\",\"}\",\",\")local y=v(\"\\\\\",\"/\",\'\"\',\"b\",\"f\",\"n\",\"r\",\"t\",\"u\")local z=v(\"true\",\"false\",\"null\")local A={[\"true\"]=true,[\"false\"]=false,[\"null\"]=nil}local function B(C,D,E,F)for o=D,#C do if E[C:sub(o,o)]~=F then return o end end;return#C+1 end;local function G(C,D,H)local I=1;local J=1;for o=1,D-1 do J=J+1;if C:sub(o,o)==\"\\n\"then I=I+1;J=1 end end;error(string.format(\"%s at line %d col %d\",H,I,J))end;local function K(n)local t=math.floor;if n<=0x7f then return string.char(n)elseif n<=0x7ff then return string.char(t(n/64)+192,n%64+128)elseif n<=0xffff then return string.char(t(n/4096)+224,t(n%4096/64)+128,n%64+128)elseif n<=0x10ffff then return string.char(t(n/262144)+240,t(n%262144/4096)+128,t(n%4096/64)+128,n%64+128)end;error(string.format(\"invalid unicode codepoint \'%x\'\",n))end;local function L(M)local N=tonumber(M:sub(1,4),16)local O=tonumber(M:sub(7,10),16)if O then return K((N-0xd800)*0x400+O-0xdc00+0x10000)else return K(N)end end;local function P(C,o)local m=\"\"local Q=o+1;local e=Q;while Q<=#C do local R=C:byte(Q)if R<32 then G(C,Q,\"control character in string\")elseif R==92 then m=m..C:sub(e,Q-1)Q=Q+1;local h=C:sub(Q,Q)if h==\"u\"then local S=C:match(\"^[dD][89aAbB]%x%x\\\\u%x%x%x%x\",Q+1)or C:match(\"^%x%x%x%x\",Q+1)or G(C,Q-1,\"invalid unicode escape in string\")m=m..L(S)Q=Q+#S else if not y[h]then G(C,Q-1,\"invalid escape char \'\"..h..\"\' in string\")end;m=m..d[h]end;e=Q+1 elseif R==34 then m=m..C:sub(e,Q-1)return m,Q+1 end;Q=Q+1 end;G(C,o,\"expected closing quote for string\")end;local function T(C,o)local R=B(C,o,x)local M=C:sub(o,R-1)local n=tonumber(M)if not n then G(C,o,\"invalid number \'\"..M..\"\'\")end;return n,R end;local function U(C,o)local R=B(C,o,x)local V=C:sub(o,R-1)if not z[V]then G(C,o,\"invalid literal \'\"..V..\"\'\")end;return A[V],R end;local function W(C,o)local m={}local n=1;o=o+1;while 1 do local R;o=B(C,o,w,true)if C:sub(o,o)==\"]\"then o=o+1;break end;R,o=u(C,o)m[n]=R;n=n+1;o=B(C,o,w,true)local X=C:sub(o,o)o=o+1;if X==\"]\"then break end;if X~=\",\"then G(C,o,\"expected \']\' or \',\'\")end end;return m,o end;local function Y(C,o)local m={}o=o+1;while 1 do local Z,j;o=B(C,o,w,true)if C:sub(o,o)==\"}\"then o=o+1;break end;if C:sub(o,o)~=\'\"\'then G(C,o,\"expected string for key\")end;Z,o=u(C,o)o=B(C,o,w,true)if C:sub(o,o)~=\":\"then G(C,o,\"expected \':\' after key\")end;o=B(C,o+1,w,true)j,o=u(C,o)m[Z]=j;o=B(C,o,w,true)local X=C:sub(o,o)o=o+1;if X==\"}\"then break end;if X~=\",\"then G(C,o,\"expected \'}\' or \',\'\")end end;return m,o end;local _={[\'\"\']=P,[\"0\"]=T,[\"1\"]=T,[\"2\"]=T,[\"3\"]=T,[\"4\"]=T,[\"5\"]=T,[\"6\"]=T,[\"7\"]=T,[\"8\"]=T,[\"9\"]=T,[\"-\"]=T,[\"t\"]=U,[\"f\"]=U,[\"n\"]=U,[\"[\"]=W,[\"{\"]=Y}u=function(C,D)local X=C:sub(D,D)local t=_[X]if t then return t(C,D)end;G(C,D,\"unexpected character \'\"..X..\"\'\")end;function a.Decode(C)if type(C)~=\"string\"then error(\"expected argument of type string, got \"..type(C))end;local m,D=u(C,B(C,1,w,true))D=B(C,D,w,true)if D<=#C then G(C,D,\"trailing garbage\")end;return m end;return a")()
	local ApiKeys = {
		"f7001d724cae9e4824fedcf5dcb9de5aacce3c9f5d34f4a2fc3cee3037a1fea2",
		"3dae2771c047069f3ded05e230d425437713469b444f3e4bf04db6056a8e9530",
		"bf8d9cbd4a41a5aadaffa3b5e4f9f2593992fa51875986d44a7630322b294896",
		"3d0917560bc84abbb2327d582b39be10e9e84708d2b9d8ef23935fed262e9605",
		"7ed9f4e45e0c5b8d87e2ee2241afa169ad078effce55e87bb6f5c2e812d478a9"
	}
	local Api = ApiKeys[Math.Random(1, Table.Count(ApiKeys))]
	local Reply = HTTP.SubmitSecure("https://serpapi.com/search.json", {q = Search, tbm = "isch", ijn = 0, api_key = Api})
	if Reply ~= "" then
		Reply = Json.Decode(Reply)
		local ImgSource = Reply.images_results[1].original
		if ImgSource == nil then
			return nil, 2
		end
		local Filename = Math.Random(100000, 999999)..".png"
		Filename = Shell.GetFolder(SHF_APPLICATIONDATA).."\\Cache\\"..Filename
		if ImgSource:sub(1, 5) == "https" then
			HTTP.DownloadSecure(ImgSource, Filename)
		else
			HTTP.Download(ImgSource, Filename)
		end
		if Image.GetFileInfo(Filename) == nil then
			return nil, 3
		end
		return Filename
	else
		return nil, 1
	end
end
Uso:
GetFirstGoogleImage(Search)
Ejemplo de uso:
GetFirstGoogleImage("Beethoven Moonlight Sonata Cover")
Retorna: [Nombre de archivo], [Código de Error]
Ejemplo de retorno:
local Filename, Error = GetFirstGoogleImage("Beethoven Moonlight Sonata Cover")
if Error ~= nil then
	Dialog.Message("Error", "Código de Error: "..Error, 0, 16)
else
	Image.Load("Image", Filename)
end


APZ de ejemplo:
HIDE: ON
Hidebb Message Hidden Description


Nota importante: Te recomiendo cambiar las claves API, registrate varias veces en https://serpapi.com/ con correos de https://temp-mail.org/ para tener más claves y no exceder el límite gratuito :dealwithit-1414024955:
NicolasG escribió:
08 Dic 2021 16:42
Que URL le pasas a la función download mediante "FinalWord"?
El código anterior buscaba algún texto que contuviera la palabra de entrada, lo seleccionaba desde la primer comilla, hasta la ultima.
Por ejemplo:
IGetImageLink("https://www.mediafire.com/file/9hud8g8vn3ju9tc/GetFirstGoogleImage.apz/file", "://download")
retornaría:
https://download1337.mediafire.com/kjp7ncd4anbg/9hud8g8vn3ju9tc/GetFirstGoogleImage.apz
pexabosh escribió:
09 Dic 2021 00:57
GetFirstGoogleImage(Search)
Por cierto, las imágenes descargadas se van a "C:\Users\%USERNAME%\AppData\Roaming\Cache"
pexabosh escribió:
09 Dic 2021 02:42
pexabosh escribió:
09 Dic 2021 00:57
GetFirstGoogleImage(Search)
Por cierto, las imágenes descargadas se van a "C:\Users\%USERNAME%\AppData\Roaming\Cache"
te mamaste, gracias :dealwithit-1414024955:

pense que la pagina decia ser papi XD
Thanks