• Welcome to Jose's Read Only Forum 2023.
 

WEB-Site Generator for www.fa2.de

Started by Theo Gottwald, January 24, 2022, 01:18:29 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Theo Gottwald

There is my Link-Site
www.fa2.de
which is a collection of Links and there are some pictures.

Now there are Updates sometimes. Take a look - how do i do these Updates?
Do I make a Screenshot of every page and then arange the HTML-Code etc?

NOT really. Its done automatically using the SPR. Its an idea from another valuable long year SPR-User.

Here is the Script that will take an INI-File and produce the "ready to upload" WEB-Site and Pictures-Folder.
All Pictures are generated and scaled - ready for uploading.

The Ini file is at the very end, note that i have only copied the first two rows.

With time the Script improved, by now the Pictures have filename that is made out of the checksum from the
Path of the linked WEB-Site. Therefore A Site can be moved to another position,
without changing the name of the picture.
Pictures that have already been created will not be deleted. The creation of the picture will just be skipped.
Therefore you can anytime stop the process and rerun the process, it will just continue where it has been left of.
You can also manually deleted pictures and rerun the process. In this case only the deleted pictures will be newly created.

For the script to work, Firefox must be installed as it is used to snapshot the WEB-Sites.

The result of the Script is a folder called "website" and in this folder you will find the "ready to upload" "index.html" as well as another folder "pics" that contains all pictures that must also be uploaded to the server.

The Script uses Macros, Subprogrammes and dynamically generated Variable-Names.
So do not wonder about a Variable $$UA§§§01 or VAR.$$VAT=$$LB§§§01
Herby the name of the Variable is constructed dynamically from a Prefix VAR.$$VAT=$$LB§§§01 and a number which is
Input Parameter 1 (§§§01) of the Macro. So we get §§UA1 ...  §§UA2 etc.
during final execution.


'MR Script-file:   
'Version:
'Purpose:
'Author: Andreas Walkenhorst
'Creation date:
'===========================================================
'#EXE:?pfad\
'#SPI:ForceWrite
#LIB:?path\Library\
'
$$PFA=?exeloc\

'---------------------------------------------------
'  Ini auslesen
'---------------------------------------------------
' Quell-INI
$$INI=$$PFAMain.ini
NEF.$$INI
  MBX.Datei nicht gefunden:$crlf$$$INI
  ENR.   
EIF.

' Number of Blocks
$$SEC=General
$$KEY=Count
CFI.$$INI|$$SEC|$$KEY|$$LIZ

' Größe der Bilder ist 175x130 (350x260)
' Dateiname = Zeile_Spalte.jpg (ohne führende "0")
'VAN.$$PIX=175
$$KEY=PicX
CFI.$$INI|$$SEC|$$KEY|$$PIX

'VAN.$$PIY=130
$$KEY=PicY
CFI.$$INI|$$SEC|$$KEY|$$PIY

'VAR.$$PRZ=16%
$$KEY=Size
CFI.$$INI|$$SEC|$$KEY|$$PRZ

' Zeilen pro Block derzeit 2
VAR.$$ZLZ=2

'$$TXF=index.html
$$KEY=Target
CFI.$$INI|$$SEC|$$KEY|$$TXF

' Anzahl Spalten anch rechts je Zeile
'VAN.$$SPA=6
$$KEY=Column
CFI.$$INI|$$SEC|$$KEY|$$SPA
CAL.$$SPB=$$SPA+1
VAR.$$DIR=$$PFAwebsite
'---------------------------------------------------
'  Zielverzeichnis und Zieldatei vorbereiten
'---------------------------------------------------

IEF.$$DIR
ELS.
  MKD.$$DIR
EIF.

VAR.$$FIO=$$DIR\$$TXF
IEF.$$FIO
  DEL.$$FIO
EIF.

'---------------------------------------------------
' Unterverzeichnis mit Bildern vorbereiten
'---------------------------------------------------
' Name des Unterverzeichnisses mit den Bildern
$$KEY=Subfolder
CFI.$$INI|$$SEC|$$KEY|$$SUB
VAR.$$PIF=$$DIR\pics
MKD.$$PIF

'---------------------------------------------------
'  HTML-Prefix holen (Seitenanfang ist immer gleich)
'---------------------------------------------------
'GSB.Prefix_File
' New Version get Prefix from Inline Data
GSB.Inline_Prefix

' Old Version using Prefix-File
'VAF.$$PRF=$$PFAPrefix.txt
'CFF.$$PRF|$$PRE
LEN.$$PRE|$$LEN
JIV.$$LEN<10|Lab_error

'---------------------------------------------------
'  HTML-Prefix in Zieldatei schreiben
'---------------------------------------------------
' Prefix mit Google Feld schreiben
%Write $$PRE

'---------------------------------------------------
'  Variablen Teil schreiben
'---------------------------------------------------
FOR.$$LAU|1|$$LIZ
  DBP.Writing ...$$LAU
  %ReadLine $$LAU
  %Write <tr>

  FOR.$$LAA|1|$$SPA
    %WriteBlock $$LAA|$$LAU|$$LAA
  NEX. 

  %Write </tr>
  %Write <tr>
  FOR.$$LAA|1|$$SPA
    %Footer $$LAA     
  NEX.
  %Write </tr>
  %Write <tr>
  %Write <td colspan="11" bgcolor="#C0C0C0">&nbsp;</td>
  %Write </tr>
NEX.

'---------------------------------------------------
' Footer schreiben
'---------------------------------------------------
%Write </tbody>
%Write </td
%Write </tr>
%Write </tbody>
%Write </table>

MBT.FERTIG||15
END.
'-----------------------------------------------------------
' Unterprogramme
'-----------------------------------------------------------
' Parameter 1 ist Zeilen-Nummer
'
: %ReadLine 1
GSB.Lab_Doit|§§§01
END%

:Lab_Doit
' Text-Eintrag in INI lesen
$$SEC=B§§_01
GSB.ReadSec|$$UA|T

' Link-Eintrag in INI lesen
GSB.ReadSec|$$LB|L
RET. 
'-----------------------------------------------------------
' Liest alle Links einer Zeile von Links nach rechts
' Diese kommen dann in $$LB1 .. $$LB8 oder $$UA1 ..$$UA8
:ReadSec
FOR.$$NUM|1|$$SPA
  $$KEY=§§_02$$NUM
  CFI.$$INI|$$SEC|$$KEY|$$VAL
  ' $$LB1 .. $$LB8
  VAR.$$RET=§§_01$$NUM
  VAI.$$RET=$$VAL
NEX.
RET.
'-----------------------------------------------------------
: %Write 1
GSB.Lab_Writer|§§§01
END%
'-----------------------------------------------------------
' Not used, Alternative to Inline_Data
:Prefix_File
IEF.$$PIF\
  MBX.Deleting:$crlf$ $$PIF
  RMD.$$PIF
ELS.
  DBP.$$PIF not found
EIF.
RET.
'-----------------------------------------------------------
:Lab_Writer
$$CON=§§_01$crlf$
ATF.$$FIO|$$CON
RET.
'-----------------------------------------------------------
: %Footer 1
VAV.$$VAS=$$UA§§§01
VAR.$$ELK=<td align="center" width="16%"> <b> <font size="4">$$VAS</font></b></td>
%Write $$ELK
END%
'-----------------------------------------------------------
' Parameter 1: Blocknummer
' 2 - Blockzeile
' 3 - Blockspalte
'
: %WriteBlock 3
VAR.$$VAT=$$LB§§§01
VAV.$$LNK=$$VAT
'#######################################################################
VAV.$$VAF=§§§02
VAV.$$VAG=§§§03
GSB.Do_Snap|$$LNK|$$VAF|$$VAG
'#######################################################################
VAR.$$OUA=<td width="$$PRZ" align="center">
$$OUA=$$OUA$crlf$<a
VAR.$$ELK=href="$$VAT">
VAV.$$OUA=$$OUA$crlf$$$ELK
CAL.$$LAD=§§§01
GSB.Gen_Filename|$$LNK
VAR.$$ELK=<img width="$$PIX" height="$$PIY" border="0" src=".$$SUB/$$FIN"/>
$$OUA=$$OUA$crlf$ $$ELK
$$OUA=$$OUA$crlf$ </a>
$$OUA=$$OUA$crlf$ </td>
%Write $$OUA
END%
'-----------------------------------------------------------
:Do_Snap
SAV.Save|$$VAA|$$VAB|$$VAC|$$TAX|$$TAY|$$FIN|$$TMP
VAN.$$TAX=350
VAN.$$TAY=260
VAF.$$TMP=?exeloc\Temp.jpg
VAR.$$VAA=§§_01
VAR.$$VAB=§§_02
VAR.$$VAC=§§_03
GSB.Gen_Filename|$$LNK
PRT.($$VAB,$$VAC) $$FIN -> $$LNK
VAR.$$FIM=$$PIF\$$FIN
NEF.$$FIM
  %Locate_Run $$LNK
  %Locate_TW
  SWP.0,0|1348,1244|T
  PAU.10
  ANA.Set_Data|8|0
  ANA.Snap|0
  ANA.CutRect|0|10|90|1300|1200
  ANA.ResizeTo|0|0|$$TAX|$$TAY
  ANA.Save|0|$$TMP
  COP.$$TMP|$$FIM
  NEF.$$FIM
    MBX.Datei nicht erzeugt: $$FIM
  EIF.
  CAL.$$VAD=$$VAB+$$VAC
  IVV.$$VAD>2
    %Locate_TW
    MLI.
    PAU.0.5
    SDK.^w
    PAU.1
  EIF.
EIF.
'ANA.Show|0!
SAV.Restore
RET.
'-----------------------------------------------------------
:Gen_Filename
SAV.Save|$$VAA|$$VAB|$$VAC|$$VAD|$$VAE|$$TAX|$$TAY|$$TMP
VAR.$$VAA=§§_01
GMD.v|$$VAA|$$VAD
GMD.e|$$VAA|$$VAE
VAR.$$FIN=$$VAD_$$VAE.jpg
' Filename is in $$FIN
SAV.Restore
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
' Prefix.txt
' $$DTA = Data
' $$FIN = Filename of Sourcefile
' Length:  2010 Bytes in  31 Lines.
:Inline_Prefix
VDA.$$PRE|$$FIN=
  ?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
  hjyV+AOtp0YT77uqlJkn5LPDItoB
VDE.
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
#INC:Library.mrt
'-----------------------------------------------------------
:Lab_error
MBX.Fehler: $$LEN<10
ENR.
[code]
'
'SPR Script-file: New Script_1
'Purpose:
'Author: TEOT\Theo
'Creation date: 02-04-2017 at 16:44:48
'===========================================================


'===========================================================
' Sub-Programmes
'===========================================================
'-----------------------------------------------------------
'===========================================================
:CheckShift
IKS.{SHIFT}
  END. 
EIF.
RET.
'===========================================================
' Locate or - if not open - run Firefox
' with Link in Parameter
: %Locate_Run 1
GSB.Run_Loc|§§§01
END%

:Run_Loc
NEW.$$HWN
  STW.ctwoX|MozillaWindowClass|Mozilla Firefox|0|Runit
  SWP.0,0|2300,1700|T
  HTV.$$HWN
ELS.
  :Runit
  $$LNA=§§_01
  %Firefox $$LNA
EIF.
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
'
: %Locate_TW 0
GSB.Loc_TW
END%

:Loc_TW
NEW.$$HWN
  STW.ct|MozillaWindowClass|Mozilla Firefox
  'STW.ct|MozillaWindowClass|Safir - Mozilla Firefox
  SWP.0,0|2300,1700|T
  HTV.$$HWN
ELS. 
  STW.h|$$HWN
EIF.
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
' Kann ohne Parameter aufgerufen werden,
' oder mit einem Parameter mit dem Link für die neue Site
'
: %New_TAB 0
#IF PARAMS=1
SAV.Save|$$LNA
VAR.$$LNA=§§§01
GSB.New_TAB
PAU.1
%Firefox_Set_Site $$LNA
SAV.Restore
#EIF
#IF PARAMS=0
GSB.New_TAB
#EIF
END%
'-----------------------------------------------------------
:New_TAB
GSB.Loc_TW
AGR.43!WII.MLI.|Einen neuen Tab öffnen (Strg+T)||1|3|60
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
'
: %Firefox_Set_Site 1
SAV.Save|$$TXT|$$PAR
$$PAR=§§§01
GSB.Set_Site|$$PAR
SAV.Restore
END%
:Set_Site
VAR.$$TXT=§§_01
GSB.Loc_TW
AGR.43!WII.MLI.|Startseite||1|3|60
PAU.0.5
NAV.Rr|R|42
MLI.
PAU.0.5
CLP.t|$$TXT|1
KBC.Paste Over
SKP.{Enter}
PAU.0.5
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
'
' P1 - Text that is on the TAB we want
' P2 - optional the number of the TAB if it has the same Text like on other TABs
'  normally Nr. is 1
' The minimum Number of Parameters is 1 thats why we have a "1" here after The Macroname
'
: %Locate_TAB 1
SAV.Save|$$NUM|$$TXT
VAR.$$TXT=§§§01
#IF PARAMS=1
VAR.$$NUM=1
GSB.Loc_TAB
#EIF
#IF PARAMS=2
VAR.$$NUM=§§§02
GSB.Loc_TAB|§§§01
#EIF
SAV.Restore
END%
'-----------------------------------------------------------
:Loc_TAB
GSB.Loc_TW
AGR.42!WII.MOS.|$$TXT||$$NUM|3|60
GSB.Loc_TW
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
'
: %Firefox 1
GSB.Lab_Run_Firefox|§§§01
END%
'-----------------------------------------------------------
:Lab_Run_Firefox
SAV.Save|$$PAT|$$NAM|$$RES|$$EXE|$$LNK
'-----------------------------------------------------------
IAI.Mozilla Firefox
  VAR.$$LNK=§§_01
  GSB.Lab_FF_starten
ELS.
  MBX.Firefox ist nicht installiert.
  END.
EIF.
RET.

:Lab_FF_starten
VAR.$$NAM=$tos$
GII.$$NAM|$$RES|u
BLB.$$RES|$$RES
BLB.$$RES|$$RES
  ' $$PAT enthällt Programmpfad ohne "\"
VAR.$$PAT=$$RES
VBT.$$PAT|"
VAR.$$EXE=$$PAT\Firefox.exe
IEF.$$EXE
  EXE.$$EXE|$$LNK
ELS.
  MBX.Kann FF nicht starten.
  END.   
EIF.
SAV.Restore
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
: %Firefox_Back 0
GSB.Lab_Back
END%

:Lab_Back
GSB.Loc_TW
AGR.43!WII.MOS.|Zurück||1|3|60
PAU.0.7
RET.

'-----------------------------------------------------------
'
'-----------------------------------------------------------
: %Firefox_Close 0
GSB.Lab_Close_FF
END%

:Lab_Close_FF
GSB.Loc_TW
CLW.$$HWN
STW.ct|MozillaDialogClass|schließen?&OR:close
' AGR. uses a waiting time of 60 seconds, you can change it below.
AGR.43!WII.MOS.|Tabs schließen&OR:close||1|3|60
MLI.
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------


At the time when the Script was first made, we used dynamic variables as a sort of Array.
They are limited to maximum of ($$L00 to $$LFF) = 99 (dezimal) to 256 (Hex) Entries.
So how does the SPR regularly store ARRAYS?
For this Data-Blocks are used.
They are not limited and they can even contain other Data-Blocks in a recursive way.
I have therefore changed the Script from Dynamic Variables to Data-Blocks.


'Purpose:
'Author: Andreas Walkenhorst
'Creation date:
'===========================================================
'#EXE:?pfad\
'#SPI:ForceWrite
#LIB:?path\Library\
'
$$PFA=?exeloc\
'-----------------------------------------------------------
'  Ini auslesen
'-----------------------------------------------------------
' Quell-INI
$$INI=$$PFAMain.ini
NEF.$$INI
  MBX.Datei nicht gefunden:$crlf$$$INI
  ENR.   
EIF.

' Number of Blocks
$$SEC=General
$$KEY=Count
CFI.$$INI|$$SEC|$$KEY|$$LIZ

' Größe der Bilder ist 175x130 (350x260)
' Dateiname = Zeile_Spalte.jpg (ohne führende "0")
'VAN.$$PIX=175
$$KEY=PicX
CFI.$$INI|$$SEC|$$KEY|$$PIX

'VAN.$$PIY=130
$$KEY=PicY
CFI.$$INI|$$SEC|$$KEY|$$PIY

'VAR.$$PRZ=16%
$$KEY=Size
CFI.$$INI|$$SEC|$$KEY|$$PRZ

' Zeilen pro Block derzeit 2
VAR.$$ZLZ=2

'$$TXF=index.html
$$KEY=Target
CFI.$$INI|$$SEC|$$KEY|$$TXF

' Anzahl Spalten anch rechts je Zeile
'VAN.$$SPA=6
$$KEY=Column
CFI.$$INI|$$SEC|$$KEY|$$SPA
CAL.$$SPB=$$SPA+1
VAR.$$DIR=$$PFAwebsite
'-----------------------------------------------------------
'  Array-Variable Initialisieren
'-----------------------------------------------------------
' Für Links
CNB.$$LBA|$$SPA
' Für Text
CNB.$$UAA|$$SPA
'-----------------------------------------------------------
'  Zielverzeichnis und Zieldatei vorbereiten
'-----------------------------------------------------------

IEF.$$DIR
ELS.
  MKD.$$DIR
EIF.

VAR.$$FIO=$$DIR\$$TXF
IEF.$$FIO
  DEL.$$FIO
EIF.

'-----------------------------------------------------------
' Unterverzeichnis mit Bildern vorbereiten
'-----------------------------------------------------------
' Name des Unterverzeichnisses mit den Bildern
'VAR.$$SUB=/pics
$$KEY=Subfolder
CFI.$$INI|$$SEC|$$KEY|$$SUB
VAR.$$PIF=$$DIR\pics
MKD.$$PIF

'-----------------------------------------------------------
'  HTML-Prefix holen (Seitenanfang ist immer gleich)
'-----------------------------------------------------------
'GSB.Prefix_File
' New Version get Prefix from Inline Data
GSB.Inline_Prefix

' Old Version using Prefix-File
'VAF.$$PRF=$$PFAPrefix.txt
'CFF.$$PRF|$$PRE
LEN.$$PRE|$$LEN
JIV.$$LEN<10|Lab_error

'-----------------------------------------------------------
'  HTML-Prefix in Zieldatei schreiben
'-----------------------------------------------------------
' Prefix mit Google Feld schreiben
%Write $$PRE

'-----------------------------------------------------------
'  Variablen Teil schreiben
'-----------------------------------------------------------
FOR.$$LAU|1|$$LIZ
  DBP.Writing ...$$LAU
  %ReadLine $$LAU
  %Write <tr>

  FOR.$$LAA|1|$$SPA
    %WriteBlock $$LAA|$$LAU|$$LAA
  NEX. 

  %Write </tr>
  %Write <tr>
  FOR.$$LAA|1|$$SPA
    %Footer $$LAA     
  NEX.
  %Write </tr>
  %Write <tr>
  %Write <td colspan="11" bgcolor="#C0C0C0">&nbsp;</td>
  %Write </tr>
NEX.

'-----------------------------------------------------------
' Footer schreiben
'-----------------------------------------------------------
%Write </tbody>
%Write </td
%Write </tr>
%Write </tbody>
%Write </table>

MBT.FERTIG||55
END.
'-----------------------------------------------------------
' Unterprogramme
'-----------------------------------------------------------
' Parameter 1 ist Zeilen-Nummer
'
: %ReadLine 1
GSB.Lab_Doit|§§§01
END%

:Lab_Doit
' Text-Eintrag in INI lesen
$$SEC=B§§_01
GSB.ReadSec|1|T

' Link-Eintrag in INI lesen
GSB.ReadSec|2|L
RET. 
'-----------------------------------------------------------
' Liest alle Links einer Zeile von Links nach rechts
' Diese kommen dann in $$LB1 .. $$LB8 oder $$UA1 ..$$UA8
:ReadSec
FOR.$$NUM|1|$$SPA
  $$KEY=§§_02$$NUM
  CFI.$$INI|$$SEC|$$KEY|$$VAL
  IVV.§§_01=1 
  ' Text Lesen
    SBE.$$UAA|$$NUM|$$VAL
  ELS.
  ' Link lesen
    SBE.$$LBA|$$NUM|$$VAL
  EIF.
NEX.
RET.
'-----------------------------------------------------------
: %Write 1
GSB.Lab_Writer|§§§01
END%
'-----------------------------------------------------------
: %Footer 1
GBE.$$UAA|§§§01|$$VAS
VAR.$$ELK=<td align="center" width="16%"> <b> <font size="4">$$VAS</font></b></td>
%Write $$ELK
END%
'-----------------------------------------------------------
' Not used, Alternative to Inline_Data
:Prefix_File
IEF.$$PIF\
  MBX.Deleting:$crlf$ $$PIF
  RMD.$$PIF
ELS.
  DBP.$$PIF not found
EIF.
RET.
'-----------------------------------------------------------
:Lab_Writer
$$CON=§§_01$crlf$
ATF.$$FIO|$$CON
RET.
'-----------------------------------------------------------
'-----------------------------------------------------------
' Parameter 1: Blocknummer
' 2 - Blockzeile
' 3 - Blockspalte
'
: %WriteBlock 3
GBE.$$LBA|§§§01|$$VAT
'PRT. Got in Block: $$VAT
VAV.$$LNK=$$VAT
'#######################################################################
VAV.$$VAF=§§§02
VAV.$$VAG=§§§03
GSB.Do_Snap|$$LNK|$$VAF|$$VAG
'#######################################################################
VAR.$$OUA=<td width="$$PRZ" align="center">
$$OUA=$$OUA$crlf$<a
VAR.$$ELK=href="$$VAT">
VAV.$$OUA=$$OUA$crlf$$$ELK
CAL.$$LAD=§§§01
GSB.Gen_Filename|$$LNK
VAR.$$ELK=<img width="$$PIX" height="$$PIY" border="0" src=".$$SUB/$$FIN"/>
$$OUA=$$OUA$crlf$ $$ELK
$$OUA=$$OUA$crlf$ </a>
$$OUA=$$OUA$crlf$ </td>
%Write $$OUA
END%
'-----------------------------------------------------------
:Do_Snap
SAV.Save|$$VAA|$$VAB|$$VAC|$$TAX|$$TAY|$$FIN|$$TMP
VAN.$$TAX=350
VAN.$$TAY=260
VAF.$$TMP=?exeloc\Temp.jpg
VAR.$$VAA=§§_01
VAR.$$VAB=§§_02
VAR.$$VAC=§§_03
GSB.Gen_Filename|$$LNK
PRT.($$VAB,$$VAC) $$FIN -> $$LNK
VAR.$$FIM=$$PIF\$$FIN
NEF.$$FIM
  %Locate_Run $$LNK
  %Locate_TW
  SWP.0,0|1348,1244|T
  PAU.10
  ANA.Set_Data|8|0
  ANA.Snap|0
  ANA.CutRect|0|10|90|1300|1200
  ANA.ResizeTo|0|0|$$TAX|$$TAY
  ANA.Save|0|$$TMP
  COP.$$TMP|$$FIM
  NEF.$$FIM
    MBX.Datei nicht erzeugt: $$FIM
  EIF.
  CAL.$$VAD=$$VAB+$$VAC
  IVV.$$VAD>2
    %Locate_TW
    MLI.
    PAU.0.5
    SDK.^w
    PAU.1
  EIF.
EIF.
'ANA.Show|0!
SAV.Restore
RET.
'-----------------------------------------------------------
:Gen_Filename
SAV.Save|$$VAA|$$VAB|$$VAC|$$VAD|$$VAE|$$TAX|$$TAY|$$TMP
VAR.$$VAA=§§_01
GMD.v|$$VAA|$$VAD
GMD.e|$$VAA|$$VAE
VAR.$$FIN=$$VAD_$$VAE.jpg
' Filename is in $$FIN
SAV.Restore
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
' Prefix.txt
' $$DTA = Data
' $$FIN = Filename of Sourcefile
' Length:  2010 Bytes in  31 Lines.
:Inline_Prefix
VDA.$$PRE|$$FIN=
  ?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
  hjyV+AOtp0YT77uqlJkn5LPDItoB
VDE.
RET.
'-----------------------------------------------------------
'
'-----------------------------------------------------------
#INC:Library.mrt
'-----------------------------------------------------------
:Lab_error
MBX.Fehler: $$LEN<10
ENR.



And here is the INI-File that will contain the Links on the WEB-Site:


; Picture Size is 503x499 Name 1_1 bis 1_8 (nach rechts) und nächste Zeile 2_1 bis 2_8.jpg
[General]
Count=15
PicX=175
PicY=130
Subfolder=/pics
Size=16
Target=index.html
Column=8

; Domain-Services
[B1]
L1=https://banking.ing-diba.de/OnlineBanking/index.html
T1=DiBA
L2=https://www.onlinebanking-psd-karlsruhe-neustadt.de/banking-private/entry
T2=PSD-OnlineBanking
L3=https://banking.postbank.de/rai/login
T3=Postbank Homebanking
L4=https://adac.lbb.de/security/login
T4=ADAC Kreditkartenbanking
L5=https://amzn.to/3rN11yg
T5=AMAZON Shopping
L6=https://mail.ionos.de/
T6=1&1-Webmailer 
L7=https://www.mbv-ka-ebanking.de/banking-private/entry   
T7=E-Banking MBV Karlsruhe
L8=https://auth.fidor.de/session/new
T8=Fidor-Banking

; Banken
[B2]
L1=http://fa2.de/UPA/Index.htm
T1=Bitcoin und Altcoin-Sites
L2=http://fa2.de/UPB/Index.htm
T2=Amazon und Shopify Links
L3=http://translate.google.de/#es|de
T3=Google Translater Spanisch Deutsch
L4=https://admin.df.eu/kunde/index.php5#
T4=Domain Factory-Kundenmenue
L5=http://www.ebay.de/
T5=EBAY
L6=http://fa2.de/subweb/asc-ansi-tabelle.htm 
T6=ASCII-ANSI-Tabelle 
L7=https://webmail.df.eu/roundcube/
T7=Domain Factory WEB-Mailer
L8=https://login.ionos.de/?ionos-tour=instant
T8=1&1 Provider-Login