Clipper On Line • Ver Tópico - Converter site/pdf
Mudar para estilo Clássico
Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos
Postar uma resposta

Converter site/pdf

29 Ago 2019 00:51

Preciso fazer o seguinte:

1. Converter o conteúdo do PDF em texto e/ou dbf

Sony RMVZL620 Codes.pdf
(196.18 KiB) Baixado 60 vezes


2. Mesma coisa com esta página

https://www.sony.com/electronics/support/remote-control-programming?modelName=RM-VLZ620&cpint=spt-banner_00225135_remote_codes_i

O PDF tem código que o site não tem, e vice-versa, e já usei dos dois.
Se o site desaparecer, lá se vão os códigos.

Alguma dica sobre como fazer isso?
No site parece Jason, mas não sei dizer, porque não mexo com isso, é apenas chute.

É do controle remoto Sony, aparelhos que ele pode controlar, e depende de colocar o código correto.

Converter site/pdf

29 Ago 2019 07:22

Quintas, você pode fazer o seguinte:

PDF para texto, veja este site:

https://pdftotext.com

Agora Site para texto, você pode fazer o seguinte:

1 - Entre no site e depois clique com o botão da direita do mouse sobre a página do site e escolha a opção "Salvar Página como...", ai na janela que vai abrir, você pode escolher o Tipo de arquivo você deseja salvar, onde tem opção para salvar como Arquivo Texto (txt).

Converter site/pdf

11 Ago 2020 16:49

Lembrei disso......
Deu um trabalhinho.... mas tava tudo num jason.
Agora falta criar o que interessa.

O fonte cria o texto do hash, e mostra de forma "humana", de como seria usado no fonte.

Tem a função que usei pra converter a string em um fonte PRG
Tem a minha rotina de mostrar como seria usado o hash no fonte.

test.zip
(19.25 KiB) Baixado 58 vezes


A rotina de mostrar, mostra algo deste tipo:

testjason.png

Converter site/pdf

11 Ago 2020 17:15

remotecode.png


Pra quem não viu....

Tem 12 tipos de aparelho, em cada aparelho é escolher o fabricante, e conforme a escolha, mostra os códigos para programação.
É que controle remoto, sem o manual de como configurar, não é útil.
E mais fácil selecionar por um menu desse tipo, do que procurar numa lista gigantesca, com letras miúdas.

É daquele controle remoto que veio da China, mas que é Sony.
Vai que a Sony tira do ar, melhor garantir.

O próximo passo é como criar o fonte da seleção.

Converter site/pdf

11 Ago 2020 17:39

Não pensei que ia ser tão rápido.
Usei como referência a janela anterior, aonde mostra a "nomenclatura" do acesso.
Isso mostra o que já comentei: Seja HASH ou Jason convertido, é tudo array, e acessa igual array, ou por nome ou por número.
TUDO direto no Hash array retornado do hb_JsonDecode()
Mas pra ficar bom... precisa ser em tbrowse, porque em prompt não cabe na tela.

Código:
#include "inkey.ch"

PROCEDURE Main

   LOCAL cTxt, aHash
   LOCAL oAparelho, nOpcAparelho := 1
   LOCAL oFabricante, nOpcFabricante := 1
   LOCAL oCode

   SetMode(30,100)
   CLS
   cTxt := JasonList() // Memoread( "remote.html" )
   aHash := hb_jsonDecode( cTxt )

   DO WHILE .T.
      @ 0, 30 CLEAR TO MaxRow(), MaxCol()
      FOR EACH oAparelho IN aHash[ "devices" ]
         @ oAparelho:__EnumIndex, 1 PROMPT oAparelho[ "device" ]
      NEXT
      MENU TO nOpcAparelho
      IF Lastkey() == K_ESC
         EXIT
      ENDIF
      DO WHILE .T.
         @ 0, 60 CLEAR TO MaxRow(), MaxCol()
         FOR EACH oFabricante IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ]
            @ oFabricante:__EnumIndex, 30 PROMPT oFabricante[ "brand" ]
         NEXT
         MENU TO nOpcFabricante
         IF LastKey() == K_ESC
            EXIT
         ENDIF
         FOR EACH oCode IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ][ nOpcFabricante][ "codes" ]
            @ oCode:__EnumIndex, 60 SAY oCode
         NEXT
         Inkey(0)
      ENDDO
   ENDDO

   //ShowJson( aHash, "aHash" )
   //Inkey(0)

   RETURN


test.png

Converter site/pdf

11 Ago 2020 17:45

Putz... o potencial é grande.

Aparece a lista de tipos de aparelho.
Ao escolher o aparelho, aparece a lista de fabricantes para o tipo de aparelho escolhido.
Ao escolher o fabricante, aparece a lista de códigos para o fabricante escolhido, e para o tipo escolhido.
TUDO UMA ÚNICA VARIÁVEL.
Não consigo nem imaginar qual seria o tamanho do fonte, se fosse fazer diferente.

Imaginem isso pra definir uma tela GUI, combos, textbox, listbox, etc.
Uma única variável com tudo.

Achei sensacional
Abre muitas possibilidades.

Nota: e isso tudo foi só pra poder olhar os códigos na hora de programar o meu controle remoto.... kkkk

Converter site/pdf

11 Ago 2020 18:16

Tava com preguiça... fiz em GUI mesmo.

Código:

#include "inkey.ch"

PROCEDURE Main

   LOCAL cTxt, aHash, oAparelho, oFabricante, oCode
   LOCAL oMenu, oSubMenu1, oSubMenu2, oSubMenu3, nKey := 0

   SetMode(30,100)
   CLS
   cTxt := JasonList() // Memoread( "remote.html" )
   aHash := hb_jsonDecode( cTxt )

   oMenu  := wvgSetAppWindow():MenuBar()
   oSubMenu1 := wvgMenu():New( oMenu, , .T. ):Create()
   FOR EACH oAparelho IN aHash[ "devices" ]
      oSubMenu2 := WvgMenu():new( oSubMenu1, , .T. ):Create()
      FOR EACH oFabricante IN aHash[ "devices" ][ oAparelho:__EnumIndex ][ "brandCodes" ]
         oSubMenu3 := wvgMenu():New( oSubMenu2, , .T. ):Create()
         FOR EACH oCode IN aHash[ "devices" ][ oAparelho:__EnumIndex ][ "brandCodes" ][ oFabricante:__EnumIndex ][ "codes" ]
            oSubMenu3:AddItem( oCode, { || NIL } )
         NEXT
         oSubMenu2:AddItem( oSubMenu3, oFabricante[ "brand" ] )
      NEXT
      oSubMenu1:AddItem( oSubMenu2, oAparelho[ "device" ] )
   NEXT
   oMenu:AddItem( oSubMenu1, "Selecione" )

   DO WHILE nKey != K_ESC
      nKey := Inkey()
   ENDDO
   wvgSetAppWindow():oMenu := NIL
   oMenu:Destroy()

   //ShowJson( aHash, "aHash" )
   //Inkey(0)

   RETURN


teste.png

Converter site/pdf

07 Set 2020 19:08

Eliminei a criação do json do fonte, usando resource:

Código:
STATIC FUNCTION JasonList()

#pragma __binarystreaminclude "resource/remote.json"   | RETURN %s


É com minha função de achoice fiz o resto.

Código:
#include "inkey.ch"

PROCEDURE pTesRemSony

   LOCAL cTxt, aHash, aList, nOpc
   LOCAL oAparelho, nOpcAparelho
   LOCAL oFabricante, nOpcFabricante
   LOCAL oCode

   cTxt := JasonList()
   aHash := hb_jsonDecode( cTxt )

   DO WHILE .T.
      Cls()
      aList := {}
      FOR EACH oAparelho IN aHash[ "devices" ]
         AAdd( aList, oAparelho[ "device" ] )
      NEXT
      wAchoiceNoClose( 1, 1, aList,@nOpcAparelho,  "Device" )
      IF Lastkey() == K_ESC
         EXIT
      ENDIF
      DO WHILE .T.
         @ 0, 60 CLEAR TO MaxRow(), MaxCol()
         aList := {}
         FOR EACH oFabricante IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ]
            AAdd( aList, oFabricante[ "brand" ] )
         NEXT
         wAchoiceNoClose( 5, 30, aList, @nOpcFabricante, "brand" )
         IF LastKey() == K_ESC
            EXIT
         ENDIF
         aList := {}
         FOR EACH oCode IN aHash[ "devices" ][ nOpcAparelho ][ "brandCodes" ][ nOpcFabricante][ "codes" ]
            AAdd( aList, oCode )
         NEXT
         wAchoice( 10, 60, aList, @nOpc, "brandcodes" )
         ( nOpc )
         Inkey(0)
         wClose()
      ENDDO
      wClose()
   ENDDO

   RETURN

STATIC FUNCTION JasonList()

#pragma __binarystreaminclude "resource/remote.json"   | RETURN %s


json.png


Conclusão interessante:
Dá pra aproveitar o arquivo json pra economizar fonte PRG, como as IDEs fazem.
Sei não... possibilidades se mutiplicando.... ainda mais podendo salvar no MySQL...

Assim vou começar a gostar de variável hash.....

Converter site/pdf

07 Set 2020 19:29

Só precisa achar um jeito de reduzir o "linguição".
Agora com título conforme seleção.
Definitivamente, igual array mesmo, só troca número por palavra.

json2.png
Postar uma resposta