PC SOFT
ONLINE REPOSITORY
FOR WINDEVWEBDEV AND WINDEV MOBILE

Home |  | Sign in | English US
WebCopy OpenSource - Aplicação WINDEV que permite fazer o Download de um site e seus artefatos css, js e imagens
Published by Boller
in the category Tools
New features



Description
WebCopy OpenSource - Aplicação WINDEV que permite fazer o Download de um site e seus artefatos css, js e imagens
Illustrations, screen shots
none
none
User reviews
(To evaluate this resource, click 'Write a review')
Boller
// Summary: <specify the procedure action>
// Syntax:
// Evento_Zerar_Arquivos ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Zerar_Arquivos()

HDeleteAll(t001_projetos)
HDeleteAll(t002_paginas)
HDeleteAll(t003_linhas)
HDeleteAll(t004_links)

EDT_Resultado = ""

EDT_Resumo = ""

TREE_Sites.Display(taInit)

TABLE_T003_linhas.Display(taInit)
Boller
// Summary: <specify the procedure action>
// Syntax:
// Evento_Testar_Html ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Testar_Html()

IF EDT_Resultado <> "" THEN

url is string = fCurrentDir()+fSep()+"index.html"

fSaveText(url,EDT_Resultado)

BrowserRunApp(url)

END
Boller
// Summary: <specify the procedure action>
// Syntax:
// Evento_Remontar_Html ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Remontar_Html()

HourGlass(True)
x is int
STC_NumLinhas = ""
EDT_Resultado = ""
FOR EACH t003_linhas
IF t003_linhas.t003_Html_Original <> "" THEN
EDT_Resultado += t003_linhas.t003_Html_Original+CR
x++
END
END
STC_NumLinhas = x
HourGlass(False)
Boller
// Summary: <specify the procedure action>
// Syntax:
//Evento_Download_Site ()
//
// Parameters:
// None
// Example:
// <Specify a usage example>
//
// Return value:
PROCEDURE Evento_Download_Site()

IF EDT_Url <> "" THEN

HourGlass(True)

BuscaSite is httpRequest
BuscaSite..URL = EDT_Url
BuscaSite..ContentType = typeMimeHTML
BuscaSite..IgnoreError = httpIgnoreExpiredCertificate+httpIgnoreInvalidCertificateName+httpIgnoreRedirection+httpIgnoreRedirectToHTTPS+httpIgnoreRedirectToHTTP+httpIgnoreRevocation
Resultado is httpResponse = HTTPSend(BuscaSite)

EDT_Resultado = Resultado..Content.UTF8ToUnicode()

// EDT_Resultado = Replace(EDT_Resultado,">",">"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<!--",cr+"<!--")
//
// EDT_Resultado = Replace(EDT_Resultado,"-->","-->"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<div",CR+"<div")
//
// EDT_Resultado = Replace(EDT_Resultado,"</div>",cr+"</div>"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<span",CR+"<span")
//
// EDT_Resultado = Replace(EDT_Resultado,"</span>",CR+"</span>"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<iframe",CR+"<iframe")
//
// EDT_Resultado = Replace(EDT_Resultado,"</iframe>",CR+"</iframe>"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<table",CR+"<table")
//
// EDT_Resultado = Replace(EDT_Resultado,"</table>",CR+"</table>"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,"<script",CR+"<script")
//
// EDT_Resultado = Replace(EDT_Resultado,"</script>",CR+"</script>"+CR)
//
// EDT_Resultado = Replace(EDT_Resultado,cr+cr+cr,cr)

TotalMenor is int = StringCount(EDT_Resultado,"<")
TotalMaior is int = StringCount(EDT_Resultado,">")

TotalParentesesMenor is int = StringCount(EDT_Resultado,"(")
TotalParentesesMaior is int = StringCount(EDT_Resultado,")")

TotalCochetesMenor is int = StringCount(EDT_Resultado,"[")
TotalCochetesMaior is int = StringCount(EDT_Resultado,"]")

TotalChaveJavaScriptMenor is int = StringCount(EDT_Resultado,"{")
TotalChaveJavaScriptMaior is int = StringCount(EDT_Resultado,"}")

Resumo is string = [
TotalMenor < = @TotalMenor@
TotalMaior > = @TotalMaior@

TotalParentesesMenor ( = @TotalParentesesMenor@
TotalParentesesMaior ) = @TotalParentesesMaior@

TotalCochetesMenor [ = @TotalCochetesMenor@
TotalCochetesMaior ] = @TotalCochetesMaior@

TotalChaveJavaScriptMenor { = @TotalChaveJavaScriptMenor@
TotalChaveJavaScriptMaior } = @TotalChaveJavaScriptMaior@
]

Resumo = Replace(Resumo,"@TotalMenor@",TotalMenor)
Resumo = Replace(Resumo,"@TotalMaior@",TotalMaior)
Resumo = Replace(Resumo,"@TotalParentesesMenor@",TotalParentesesMenor)
Resumo = Replace(Resumo,"@TotalParentesesMaior@",TotalParentesesMaior)
Resumo = Replace(Resumo,"@TotalCochetesMenor@",TotalCochetesMenor)
Resumo = Replace(Resumo,"@TotalCochetesMaior@",TotalCochetesMaior)
Resumo = Replace(Resumo,"@TotalChaveJavaScriptMenor@",TotalChaveJavaScriptMenor)
Resumo = Replace(Resumo,"@TotalChaveJavaScriptMaior@",TotalChaveJavaScriptMaior)

EDT_Resumo = Resumo


HReset(t001_projetos)
IF HReadSeek(t001_projetos,t001_Projeto,EDT_Url,hIdentical) = False
t001_projetos.t001_DataHora = DateSys()+TimeSys()
t001_projetos.t001_Projeto = EDT_Projeto
t001_projetos.t001_Status = False
IF HAdd(t001_projetos) = True THEN

projetoID = t001_projetos.t001_Projeto_ID

t002_paginas.T001_Projeto_ID = projetoID
t002_paginas.t002_DataHora = DateSys()+TimeSys()
t002_paginas.t002_NomePagina = fExtractPath(EDT_Url,fFile)+fExtractPath(EDT_Url,fExtension)
t002_paginas.t002_Path = EDT_Url
t002_paginas.T002_Html = EDT_Resultado
t002_paginas.t002_Status = False

IF HAdd(t002_paginas) = True THEN
paginaID = t002_paginas.t002_Pagina_ID
END

END

ELSE

projetoID = t001_projetos.t001_Projeto_ID

HReset(t002_paginas)
IF HReadSeek(t002_paginas,t002_NomePagina,EDT_Url,hIdentical) = True THEN

paginaID = t002_paginas.t002_Pagina_ID

END

END



HReset(t003_linhas)
IF HReadSeek(t003_linhas,T001_Projeto_ID,projetoID,hIdentical) = True THEN
HDeleteAll(t003_linhas)
END

x is int

FOR EACH STRING linha IN EDT_Resultado SEPARATED BY CR

IF NoSpace(linha) <> "" THEN
x++
t003_linhas.t003_Html_Original = linha
t003_linhas.T001_Projeto_ID = projetoID
t003_linhas.T002_Pagina_ID = paginaID
t003_linhas.t003_Traduzido = False
IF HAdd(t003_linhas) = True
STC_NumLinhas = x
linhaID = t003_linhas.t003_Linha_ID
Evento_Download_Find_Links(linha,1)
Evento_Download_Find_Links(linha,2)
Evento_Download_Find_Links(linha,3)
Evento_Download_Find_Links(linha,4)
Evento_Download_Find_Links(linha,5)
END
END

END

TableDisplay(TABLE_T003_linhas,taInit)
TableDisplay(TABLE_T003_linhas,taReExecuteQuery)

TREE_Sites.Display(taInit)
TREE_Sites.Display(taReExecuteQuery)
TREE_Sites.ExpandAll()

HourGlass(False)
END
Boller
// Summary: <specify the procedure action>
// Syntax:
//Evento_Download_Find_Links (<linha>, <posicao>)
//
// Parameters:
// linha:
// posicao: <specify the role of posicao>
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Download_Find_Links(linha, posicao)

IF linha = ""
RETURN
END

linha = ExtractString(linha,(1+posicao),Charact(34),FromBeginning)

linha = ExtractString(linha,1,"?",FromBeginning)

arquivo is string = fExtractPath(linha,fFile) + fExtractPath(linha,fExtension)

extenso is string = Lower(fExtractPath(linha,fExtension))

IF linha = "<EOT>" OR arquivo = ""
RETURN
END

IF Contains(linha,"https:\snap.licdn.com") = True THEN
RETURN
END

IF Contains(linha,"https:\https:\www.google") = True THEN
RETURN
END

IF StringCount(arquivo,".",IgnoreCase) = 0 OR StringCount(extenso,".",IgnoreCase) = 0
RETURN
END

// extenso em minusculo
IF extenso = "." OR
extenso = ".)" OR
extenso = ".]" OR
extenso = ".value=" OR
extenso = ".pcsoft" OR
extenso = ".com" OR
extenso = ".br" OR
extenso = ".fr" OR
extenso = ".php" OR
extenso = ".net" OR
extenso = ".org" OR
extenso = ".submit();" OR
extenso = ".00em;colo" OR
extenso = ".25rem" OR
extenso = ".714em;" OR
extenso = ".async = t" OR
extenso = ".<br>" OR
extenso = ".html(temV" OR
extenso = ".isInviewp" OR
extenso = ".innerhtml" OR
extenso = ".push(['_t" OR
extenso = ".src = url" OR
extenso = ".async = t"
RETURN
END

IF StringCount(extenso,"(",IgnoreCase) > 0 OR
StringCount(extenso,")",IgnoreCase) > 0 OR
StringCount(extenso,"[",IgnoreCase) > 0 OR
StringCount(extenso,"]",IgnoreCase) > 0 OR
StringCount(extenso,"{",IgnoreCase) > 0 OR
StringCount(extenso,"}",IgnoreCase) > 0 OR
StringCount(extenso,"src",IgnoreCase) > 0 OR
StringCount(extenso,".push",IgnoreCase) > 0 OR
StringCount(extenso,".async = t",IgnoreCase) > 0 OR
StringCount(extenso,".00em;colo",IgnoreCase) > 0 OR
StringCount(extenso,".innerhtml",IgnoreCase) > 0
RETURN
END

IF arquivo <> "" AND extenso <> "" AND Length(extenso) >= 3 AND Length(extenso) <= 10 AND ExtractString(arquivo,1,".",FromBeginning) <> ""

HReset(t004_links)

IF HReadSeek(t004_links,t004_arquivo_ext,arquivo,hIdentical) = False THEN

novalinha is string = Replace(linha,EDT_Url,"",IgnoreCase)
linha = novalinha

t004_links.T001_Projeto_ID = projetoID
t004_links.T002_Pagina_ID = paginaID
t004_links.T003_Linha_ID = linhaID
t004_links.t004_data_hora = DateSys()+TimeSys()
t004_links.t004_path = novalinha
t004_links.t004_diretorios = fExtractPath(linha, fDrive + fDirectory)
IF t004_links.t004_diretorios = "" THEN
t004_links.t004_diretorios = "/"
t004_links.t004_path = "/"+t004_links.t004_path
END
IF Middle(t004_links.t004_path,1,1) <> "/" AND StringCount(t004_links.t004_path,"http",IgnoreCase) = 0
t004_links.t004_path = "/"+t004_links.t004_path
t004_links.t004_diretorios = "/"
END
t004_links.t004_arquivo_ext = arquivo
t004_links.t004_arquivo = ExtractString(arquivo,1,".",FromBeginning)
t004_links.t004_extensao = extenso
t004_links.t004_download = False

newpathdir is string = fCurrentDir()+t004_links.t004_diretorios
newpathdir = Replace(newpathdir,EDT_Url,"",IgnoreCase)
newpathdir = Replace(newpathdir,"//","/")
newpathdir = Replace(newpathdir,"/","\")
newpathdir = Replace(newpathdir,":\","\")
newpathdir = Replace(newpathdir,"https","")
newpathdir = Replace(newpathdir,"http","")


newpathfile is string = t004_links.t004_arquivo_ext
newpathfile = Replace(newpathfile,EDT_Url,"",IgnoreCase)
newpathfile = newpathdir + newpathfile
newpathfile = Replace(newpathfile,"//","/")
newpathfile = Replace(newpathfile,"/","\")
newpathfile = Replace(newpathfile,":\","\")
newpathfile = Replace(newpathfile,"https","")
newpathfile = Replace(newpathfile,"http","")

IF Middle(newpathfile,1,2) = "C\"
newpathfile = Replace(newpathfile,"C\","C:\")
END

IF Middle(newpathdir,1,2) = "C\"
newpathdir = Replace(newpathdir,"C\","C:\")
END

IF fDirectoryExist(newpathdir) = False AND StringCount(newpathdir,"http",IgnoreCase) = 0
fMakeDir(newpathdir)
END

t004_links.t004_new_path = newpathfile

IF t004_links.t004_path <> "" AND t004_links.t004_new_path <> "" AND fDirectoryExist(newpathdir) = True
HAdd(t004_links)
END

END

END
Boller
// Summary: <specify the procedure action>
// Syntax:
//Evento_Download_Objetos_Site ()
//
// Parameters:
// None
// Example:
// <Specify a usage example>
//
// Return value:
PROCEDURE Evento_Download_Objetos_Site()

HourGlass(True)

Img is Image

bufMyBuffer is Buffer

FOR EACH t004_links

IF t004_links.t004_download = False AND t004_links.t004_diretorios <> ""

url is string = t004_links.t004_path

IF Middle(url,1,1) = "/" THEN
url = EDT_Url + url
END

HTTPRequest(url)

bufMyBuffer = HTTPGetResult()

//IMAGEMS: png, bmp, gif, jpg, jpge, jpe, jfif
//---------------------------------------------
Img = bufMyBuffer
IF t004_links.t004_extensao = ".png"
dSaveImagePNG(Img,t004_links.t004_new_path)
ELSE IF t004_links.t004_extensao = ".bmp"
dSaveImageBMP(Img,t004_links.t004_new_path)
ELSE IF t004_links.t004_extensao = ".gif"
dSaveImageGIF(Img,t004_links.t004_new_path)
ELSE IF t004_links.t004_extensao = ".jpg" OR t004_links.t004_extensao = ".jpeg" OR t004_links.t004_extensao = ".jpe" OR t004_links.t004_extensao = ".jfif"
dSaveImageJPEG(Img,t004_links.t004_new_path)
ELSE IF t004_links.t004_extensao = ".ico" OR t004_links.t004_extensao = ".mp4"
fSaveBuffer(t004_links.t004_new_path,bufMyBuffer)
END
//---------------------------------------------

//TEXTOS: txt, htm, html, css, js
//-------------------------------------------------
IF t004_links.t004_extensao = ".txt" THEN
fSaveText(t004_links.t004_new_path,bufMyBuffer)
ELSE IF t004_links.t004_extensao = ".htm" THEN
fSaveText(t004_links.t004_new_path,bufMyBuffer)
ELSE IF t004_links.t004_extensao = ".html" THEN
fSaveText(t004_links.t004_new_path,bufMyBuffer)
ELSE IF t004_links.t004_extensao = ".css" THEN
fSaveText(t004_links.t004_new_path,bufMyBuffer)
ELSE IF t004_links.t004_extensao = ".js" THEN
fSaveText(t004_links.t004_new_path,bufMyBuffer)
END
//-------------------------------------------------

IF fFileExist(t004_links.t004_new_path) = True THEN

t004_links.t004_data_hora = DateSys()+TimeSys()

t004_links.t004_download = True

HModify(t004_links)

obj++

STC_NumLinhasObjs = obj

END

END

END

HourGlass(False)