load Logo from Internet ?

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

User avatar
AUGE_OHR
Posts: 2117
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

load Logo from Internet ?

Post by AUGE_OHR »

hi,

is it possible to load Image from Internet and display it in IMAGE :?:

for my IPTV i got a Logo for each TV / Radio Station like this

Code: Select all

http://logos.zattic.com/images/channels/logos/42a29350387ee5fda8fe/black/84x48.png
i try to load it this Way

Code: Select all

   cImage := TRIM(FIELD->TVLOGO)
   IF !EMPTY(cImage)
      hBitmap := BT_BitmapLoadFile (cImage)
      BT_HMGSetImage ("IPTVMAIN", "Image_1", hBitmap, .T.)
   ENDIF
but this does not work :(

is there a Solution :idea:
have fun
Jimmy
franco
Posts: 921
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: load Logo from Internet ?

Post by franco »

Why not just download the image and put it in your program directory.
All The Best,
Franco
Canada
User avatar
AUGE_OHR
Posts: 2117
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: load Logo from Internet ?

Post by AUGE_OHR »

hi Franco,
franco wrote: Sun Mar 13, 2022 8:45 pm Why not just download the image and put it in your program directory.
hm ... how under HMG :?:
have fun
Jimmy
User avatar
mol
Posts: 3825
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: load Logo from Internet ?

Post by mol »

Hi!
In my opinion, you should download logo to temporary fil.
You can use this function:

Code: Select all


PROCEDURE DownloadFromWWW
	param cURL, cLocalFileName, lSilent
	LOCAL oCon, oUrl, i, cResponse
	local ret := .f.
	local StaraObslugaBledu
	
	BEGIN SEQUENCE with {|| break()}
	
	cLocalFileName := alltrim(cLocalFileName)
	if lSilent = NIL
		lSilent := .f.
	endif
	
	oUrl := tURL():New( cUrl )
	IF Empty( oUrl )
		if !lSilent
			MsgBox("Wrong url adress" + cUrl)
		endif
		BREAK
	ENDIF
					
	IF oUrl:cProto != "http"
		if !lSilent
			MsgBox('Wrong http adress')
		endif
		BREAK
	END
   
	oCon := TipClientHttp():New( oUrl )
	oCon:nConnTimeout := 20000
	if !lSilent
		MsgBox("Connecting with "+ oUrl:cServer)
	endif
	IF oCon:Open( cUrl )
		if !lSilent
			MsgBox("Connection established." +chr(10)+"Press OK to download " + oUrl:cPath +oUrl:cFile)
		endif
		oCon:WriteAll(cLocalFileName)
		if !lSilent
			MsgBox("Downloaded and written as: "+cLocalFileName)
		endif
		oCon:Close()
		ret := .t.
	ELSE
		IF oCon:SocketCon == NIL
			cResponse := "Connection not initialized"
		ELSEIF hb_InetErrorCode( oCon:SocketCon ) == 0
			cResponse := oCon:cReply
		ELSE
			if !lSilent
				cResponse := "Error in connection: " + hb_InetErrorDesc( oCon:SocketCon )
			endif
		ENDIF
		if !lSilent
			MsgBox("Connection can't be established: "+ oUrl:cServer+chr(10)+"Server answer: "+cResponse)
		endif
		ret := .f.
	END
	RECOVER
		if !lSilent
			MSGSTOP("Connection failed!")
		endif
	END SEQUENCE

RETURN ret
and use this function:

Code: Select all

cImageAddress := "http://logos.zattic.com/images/channels/logos/42a29350387ee5fda8fe/black/84x48.png"

if DownloadFromWWW(cImageAddress , cLocalTempFile, .t.)
      hBitmap := BT_BitmapLoadFile (cLocalTempFile)
      BT_HMGSetImage ("IPTVMAIN", "Image_1", hBitmap, .T.)
endif
User avatar
AUGE_OHR
Posts: 2117
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: load Logo from Internet ?

Post by AUGE_OHR »

hi Mol,
mol wrote: Mon Mar 14, 2022 7:03 am You can use this function:
Thx for Sample

i do got a Image in %TEMP% with

Code: Select all

cImageAddress := "http://logos.zattic.com/images/channels/logos/42a29350387ee5fda8fe/black/84x48.png"
but it is a HTML-Error Text :?:
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>
---

what do i need *.HBC :?:
i have

Code: Select all

Libs=hbtip
have fun
Jimmy
User avatar
AUGE_OHR
Posts: 2117
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: load Logo from Internet ?

Post by AUGE_OHR »

hi,

have test \HARBOUR\contrib\hbtip\tests\tipwget.prg

like Demo before i got Error
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty</center>
</body>
</html>
when using Firefox i can "see" Logo so it does exist
but what does this Error Message mean when File exist :?:
have fun
Jimmy
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: load Logo from Internet ?

Post by edk »

Code: Select all

IF !File ( "84x48.png" )
	MsgInfo( "Pobieranie 84x48.png ...." )
	IF !PobierzPlik( "http://logos.zattic.com/images/channels/logos/42a29350387ee5fda8fe/black/84x48.png", "84x48.png" )
		MsgInfo ( "Nie można pobrać pliku 84x48.png.")
	ELSE
		MsgInfo ( "Plik 84x48.png został pobrany." )
	ENDIF
ENDIF


***********************************
FUNCTION PobierzPlik( cUrl, cFile )

Local oHttp := Win_OleCreateObject( "MSXML2.ServerXMLHTTP" )

IF File ( cFile )
	hb_FileDelete ( cFile )
ENDIF

BEGIN SEQUENCE WITH {|o| break(o)}
	
	oHttp:Open( "GET", cUrl, .F. )

	oHttp:setRequestHeader( "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0" )

	oHttp:Send()

	IF oHttp:Status = 200	
		StrFile ( oHttp:ResponseBody(), cFile ) 
	ENDIF
	
	oHttp:Abort()
	
RECOVER USING oErr

	MsgStop ( "Nie udało się pobrać pliku z adresu " + cUrl )
	
END SEQUENCE

RETURN FILE( cFile )
franco
Posts: 921
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: load Logo from Internet ?

Post by franco »

Why not Download the logo with Firefox and put in a program folder.
My one logo for desktops is called desktoplogo.jpg .... I use jpeg. I am sure you could use png.
You may need to work with it depending on size.

Code: Select all

  #include "hmg.ch"
  #define CRLF    HB_OsNewLine()
  #include "FILEIO.CH"

  function Main()

        DEFINE WINDOW Win_1                  ;
           AT         0,0                    ;
           WIDTH      getdesktopWidth()-25      ;
           HEIGHT     getDeskTopHeight()-45  ;
           TITLE      "Advanced "   ;
	   MAIN                              ;
           NOMAXIMIZE                    ;
           NOSIZE                            ;
           BACKCOLOR  GRAY ;
            FONT 'Arial' SIZE 9 
		if file('desktoplogo.jpg')
			define image image_1
			row 10
			col 10
			height getdesktopheight()-110
			width getdesktopwidth()-50 //-50
			picture 'desktoplogo.jpg'
			stretch .t.
			ADJUSTIMAGE .T.
			end image
		endif


        END WINDOW

        ACTIVATE WINDOW Win_1

  return NIL
 
All The Best,
Franco
Canada
edk
Posts: 999
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: load Logo from Internet ?

Post by edk »

franco wrote: Tue Mar 15, 2022 7:26 pm Why not Download the logo with Firefox and put in a program folder.
My one logo for desktops is called desktoplogo.jpg .... I use jpeg. I am sure you could use png.
You may need to work with it depending on size.
Jimmy needs to fetch thumbnails from links that the user creates or import from .m3u files . These are not files permanently embedded in the program and are dynamicly changed for each selected record, therefore they must be downloaded in runtime.
Post Reply