stránky radioamatérské stanice
OK2PPK » Texty » Programy » BkmrExp | ---
offline program
v1.6 (2018/8), v1.7 (2019/2), konzolová aplikace Win32Api
autor OK2PPK
Program Bkmrexp slouží jako pomůcka pro ruční úpravu údajů v souborech záložek typu NETSCAPE-Bookmark-file-1 (soubory bookmark.htm apod.) pro webové prohlížeče. Zkoušen byl se soubory záložek programů Firefox, Seamonkey a Internet Explorer, soubory záložek z jiných prohlížečů jsem netestoval.
Program umožňuje vytáhnout ze souborů záložek vyexportovaných z prohlížečů odkazy s jejich názvy, separátory a složky včetně jejich struktury do jednodušší formy v obyčejném textovém souboru, kde je lze lépe ručně upravovat, a pak tento soubor obráceným způsobem převést zpět na soubor záložek importovatelný do prohlížečů. Ostatní údaje ze souborů záložek, jako jsou uložené ikony, časové údaje a popisy k odkazům, program nezpracovává a při exportu je přeskočí.
Současně program dokáže obejít problém při importu záložek do Internet Exporeru, kdy IE jednak nezná separátory a jednak si třídí záložky podle sebe a mění tak pořadí importovaných položek obvykle nežádoucím způsobem. Jediná možnost je pořadí po importu opravit ručně (pracné) nebo upravit nedokumentovaná data v registrech, kde jsou informace o pořadí uloženy (nespolehlivé a nebezpečné, struktura nedokumentovaných dat se může změnit a pokus o jejich přepis pak může mít nežádoucí důsledky). Třetí alternativa je vnutit IE takové názvy, aby je setřídil sám ve správném pořadí. Program bkmrexp toto řeší vkládáním pořadového čísla před všechny položky ve složkách, tj. do názvů odkazů i podsložek. Problém separátorů je pak řešen jejich nahrazením fiktivními odkazy. Při zpracování souborů záložek vyexportovaných z IE je pak možné nechat vložená pořadová čísla zase odstranit a separátory ve formě fiktivních odkazů převést zpět na skutečné.
Program byl vytvořen jako pomůcka řešící problém, kdy jsem potřeboval pouklízet a sjednotit velké množství odkazů uložených v záložkách v různých prohlížečích a na různých systémech. Soubory záložek byly po vyexportování z jednotlivých prohlížečů pomocí programu bkmrexp (a s použitím mého převodníku kódových sad prekod) převedeny do ručně snadněji upravitelných souborů, a pak byly ručně sloučeny, upraveny a setříděny. Výsledkem byla sada souborů, kdy každý obsahoval jednu složku záložek. Následně jsem si vytvořil sadu dávkových souborů, která sestavuje z těchto dílčích souborů souhrnné soubory dle potřeby pro daný počítač a prohlížeč a provede současně i jejich případné překódování a nakonec je převede pomocí programu bkmrexp zpět do souborů bookmark. Ty pak už stačí jen naimportovat do daných prohlížečů. Pokud potřebuji doplnit nebo opravit záložky, tak si je ukládám v prohlížečích do k tomu zvláště určené složky a jednou za čas pak doplním a opravím výchozí soubory a novým spuštěním dávkových souborů během chvilky vygeneruji novou opravenou sadu souborů bookmark, které stačí naimportovat do prohlížečů a nahradit jimi stávající sady záložek. Zároveň mám tímto vyřešené vpodstatě i zálohování, protože potřebnou sadu záložek si mohu kdykoliv znovu vygenerovat.
U MT jsem řešil nemožnost naimportovat v něm do prohlížeče klasické soubory záložek obezličkou, kdy se soubor záložek upravil do podoby stránky HTML, která má na začátku přidaný rozcestník, ze kterého se na jednotlivé sekce přechází pomocí kotev. Možnost vytvořit soubor záložek s rozcestníkem na začátku byla přidána do verze 1.7.
BKMREXP ?|-?|h|-h|help ... vypsat nápovědu BKMREXP helpfile ... nápovědu uložit do textového souboru BKMREXP [simpl] exp|expie|expies soubor1 [soubor2] ... provést převod BKMREXP [simpl] imp|impie|impiex|impmt|impmtfsz soubor1 [soubor2] ... provést převod simpl ... při EXP nejsou do výstupu vkládána čísla řádků a úrovně vnoření, při IMP znamená, že vstupní soubor neobsahuje údaje číslo řádku a úroveň vnoření (tj. začíná až údajem typ položky) exp ... provést převod z bookmark do txt expie ... provést převod z bookmark do txt pro IE (nahradit fiktivní oddělovače skutečnými a odstranit pořadová čísla) expies ... provést převod z bookmark do txt pro IE se setříděním (jako expie a navíc se nejprve provede vzestupné setřídění všech složek) imp ... provést převod z txt do bookmark impie ... provést převod z txt do bookmark pro IE (nahradit oddělovače fiktivními odkazy, popisy doplnit o pořadová čísla a položky uložit do výstupu v obráceném pořadí) impiex ... provést převod z txt do bookmark pro IE s rozšířeným intervalem pořadových čísel (jako impie, ale navíc se zvětší interval mezi pořadovými čísly jejich doplněním zprava číslicí 0) impmt ... provést převod z txt do bookmark pro mobilní telefon (jako imp, ale na začátek přidat rozcestník s odkazy na jednotlivé složky) (od verze 1.7) impmtfsz .. stejné jako impmt, ale navíc nastaví velikost fontu pro rozcestník a před začátky složek vloží vodorovný oddělovač (od verze 1.7) soubor1 ... vstupní soubor soubor2 ... výstupní soubor (není-li zadán, tak se použije soubor1 doplněný při EXP o příponu .TXT a při IMP o příponu .HTM Při exportu je soubor záložek převeden do textového souboru, který obsahuje na každém řádku 1 položku ve tvaru: cislo_radky;uroven_vnoreni;"typ";"retezec1";"retezec2" nebo při použití příkazu simpl ve tvaru: "typ";"retezec1";"retezec2" cislo_radky ... 5-místné zleva nulami doplněné pořadové číslo řádku, počáteční hodnota je 0 uroven_vnoreni ... 2-místné zleva nulami doplněne číslo úrovně vnoření složky, počáteční úroveň je 0, kořenová složka má úroveň 1, atd. typ ... typ položky, 1 znak (I,T,H,B,E,S,D,R) retezec1,2 ... první a druhý parametr položky, význam dle typu, nejsou-li použity, je jejich obsah prázdný řetězec Typy položek: I - informační položka, v retezec1 je název proměnné a v retezec2 její hodnota retezec1: filename ... jméno vstupního souboru beginlevel ... počáteční úroveň vnoření endlevel ... koncová úroveň vnoření, pokud je jiná od počáteční, tak je ve vstupním souboru ve struktuře složek chyba num of lines ... počet zpracovaných řádků ze vstupního souboru num of refs ... počet odkazů nalezených ve vstupním souboru num of dirs ... počet složek nalezených ve vstupním souboru (bez kořenové) num of separators ... počet separátorů nalezených ve vstupním souboru T - retezec1 obsahuje text z tagu TITLE H - retezec1 obsahuje text z tagu H1 B - počátek složky E - konec složky S - oddělovač D - složka, retezec1 obsahuje název složky, za složkou následuje vždy položka typu B, pak položky s vlastním obsahem složky a nakonec položka typu E. Položky lze do sebe vnořovat, tj. v obsahu složky mohou být další kombinace položek v uspořádání D, B, obsah složky a E na závěr. Kořenová složka nemá položku typu D, ale začíná přímo B. R - odkaz, v retezec1 je hodnota odkazu a v retezec2 je jeho název Příklad tvaru výsledného souboru: 00000;00;"I";"filename";"bookmark.htm" 00001;00;"I";"beginlevel";"0" 00002;00;"T";"Bookmarks";"" 00003;00;"H";"Bookmarks";"" 00004;01;"B";"";"" 00005;01;"R";"http://nejaky.odkaz.1/";"Nejaky odkaz 1" 00006;01;"S";"";"" 00007;01;"R";"http://nejaky.odkaz.2/";"Nejaky odkaz 2" 00008;01;"D";"Slozka 1";"" 00009;02;"B";"";"" 00010;02;"R";"http://nejaky.odkaz.4/";"Nejaky odkaz 4" 00011;02;"E";"";"" 00012;01;"R";"http://nejaky.odkaz.3/";"Nejaky odkaz 3" 00013;01;"E";"";"" 00014;00;"I";"endlevel";"0" 00015;00;"I";"num of lines";"12" 00016;00;"I";"num of refs";"4" 00017;00;"I";"num of dirs";"1" 00018;00;"I";"num of separators";"1" Informace k používání programu: Při importu se očekává vstupní soubor též ve výše uvedeném tvaru, položky typu I v něm nemusí být uvedeny (nezpracovávají se), pokud není uvedena položka T nebo H, tak je nahrazena implicitní hodnotou. Při exportu nejsou ze vstupního souboru do výstupu přeneseny časové značky, ikony, popisy odkazů a podobné údaje, přenáší se pouze názvy a vlastní odkazy. Při zpracování je potřeba vzít v potaz značnou odlišnost mezi tím, jak se souborem záložek při importu pracuje FF ci SM, a jak IE. IE nezná separátory, nerespektuje pořadí záložek v bookmark souboru, v názvech odkazů nesmí být znaky jako dvojtečka, ostré závorky, lomítka apod. (znaky, které nelze použít jako název souboru) a některé tvary odkazů IE odmítá načíst. Kvůli obejítí problémů s IE lze při importu použít extra volby impie a impiex. Skutečné separátory se pak nahradí fiktivními odkazy a problém třídění se obejde vložením pořadového čísla na začátek názvů odkazů i složek. Případně lze i zvětšit interval mezi pořadovými čísly na 10 jejich doplněním o koncovou nulu tak, aby mezi odkazy šlo dodatečně přidávat přímo v prohlížeči další odkazy. Pri exportu je pak možné pomocí voleb expie a expies takto doplněné číslování vyjmout a oddělovače ve formě fiktivních odkazů převést na normální separátory, případně lze nechat seřadit položky ve všech složkách podle číslování před jeho odstraněním. Program neřeší převody znakových sad. U FF a SM se předpokládá použití UTF-8, u IE u starších verzí bylo použito WIN1250, u IE11 bylo buď WIN1250 nebo pokud měl soubor na začátku značku BOM, tak UTF-8. Celý postup úpravy záložek je export záložek z prohlížeče do souboru bookmark, převedení bookmark souboru do txt souboru, ruční úprava dat v txt souboru dle potřeby, převedení txt souboru zpět do bookmark souboru včetně případné změny znakové sady a nakonec naimportování zpět do prohlížeče. Při importu do FF a SM se kořenová složka z bookmark souboru vloží přímo do nejvyšší úrovně záložek. Je proto lepší v kořenové složce vytvořit složku a teprve do ní dávat jednotlivé další položky, pak se vám záložky naimportují do takto vytvořené složky. U IE lze při importu určit, kam se záložky naimportují, je ale potřeba si takovoutu případnou samostatnou složku na ně dopředu připravit. Při importu většího množství záložek do IE(11) se tyto někdy všechny nezobrazí, pak je potřeba IE ukončit a znovu spustit, po restartu se položky objeví všechny. Při importu do MT se očekává na začátku dat obalující složka, v ní se na její začátek vloží nová složka nazvaná Rozcestník, ve které se vytvoří pomocí kotev odkazy na všechny další složky. Dále se může doplnit i styl upravující globální velikost písma a styl upravující velikost písma v rozcestníku a přidat vodorovné oddělovače před začátky složek.
bkmrexp16.exe - program v1.6 (32kB), bkmrexp16.txt - popis v1.6 (7kB)
bkmrexp17.exe - program v1.7 (34kB), bkmrexp17.txt - popis v1.7 (8kB)
v0.0 2018/3 - výchozí vývojová verze
v1.0 2018/4 - první funkční verze
v1.1 2018/6 - doplněno vkládání info o charsetu UTF8 do záhlaví při importu
v1.2 2018/6 - doplněn import pro IE s obráceným pořadím odkazů
v1.3 2018/6 - doplněny některé atributy u tagů a pokus s ovlivněním pořadí odkazů u IE pomocí nastavení některých atributů
v1.4 2018/6 - odstraněny změny z v1.3, které měly ovlivnit pořadí odkazů u IE (neměly vliv), vynucení setřídění v IE nově řešeno generováním pořadového čísla a separátory řešeny použitím fiktivních odkazů
v1.5 2018/7 - kompletně přepsány části pro import a export (sjednocen kód pro IE i neIE verze záložek), částečně změněna struktura a názvy položek pracovního souboru, při exportu doplněna pro IE možnost odstranit vložené číslování, nahradit fiktivní separátory skutečnými a setřídit položky, u importu doplněna možnost zvětšit interval vkládaných pořadových čísel
v1.6 2018/8 - oprava několika chyb v modulu pro práci s řetězci
v1.7 2019/2 - doplněna možnost vytvářet soubor bookmarks pro mobilní telefon (přidány volby impmt a impmtfsz)