LINUX.ORG.RU

libzim 9.5.0

 , , , ,


1

2

Состоялся выпуск 9.5.0 библиотеки libzim, предназначенной для работы с файлами в формате ZIM (openzim.org). Разработка библиотеки ведётся и спонсируется проектом Kiwix.

ZIM — формат, предназначенный для офлайн-хранения информации, полученной из Интернета, в виде одного файла. В ZIM-файле в сжатом виде находятся логически связанные между собой HTML-страницы (а иногда и образы сайтов целиком) с работающими гиперссылками, изображениями, звуком и видео.

Проектом Kiwix разрабатывается набор консольных утилит zim-tools, десктопный и мобильные клиенты, и скрипты для создания файлов ZIM из дампов проектов Wikimedia или из HTML.

Также libzim используется в форке словаря GoldenDict – GoldenDict-NG.

Краткий список возможностей библиотеки:

  • создание файлов ZIM cо сжатием данных в формате Zstandard (ранее также поддерживались форматы ZIP, LZMA и Bzip2);
  • поиск по названиям статей;
  • опциональная поддержка Xapian для полнотекстового поиска. Множество файлов ZIM можно скачать здесь.

Библиотека написана на языке C++ и распространяется по лицензии GNU GPL 2.0.

Список изменений:

  • добавлена защита от слишком длинных слов в заголовках;
  • быстрое обнаружение повреждения смещения первого блоба в кластере;
  • использование zim-testing-suite 0.9.0 для тестирования.

А ранее, 3 января 2026 года состоялся выпуск 9.4.1 с поддержкой будущей версии 2.0 библиотеки Xapian.

>>> Подробности на GitHub

★★★★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 2)

ZIM — формат, предназначенный для офлайн-хранения информации, полученной из Интернета, в виде одного файла. В ZIM-файле в сжатом виде находятся логически связанные между собой HTML-страницы (а иногда и образы сайтов целиком) с работающими гиперссылками, изображениями, звуком и видео.

Это типа чтоб сайты скачивать целиком и они работали оффлайн корректно? А не опоздали ли эти ребята лет этак на 30-ть?

mshewzov ★★★★
()
Ответ на: комментарий от mshewzov

Это типа чтоб сайты скачивать целиком и они работали оффлайн корректно?

В основном, чтобы проекты Викимедия были доступны в местах без общедоступного Интернета.

dataman ★★★★★
() автор топика
Ответ на: комментарий от mshewzov

Учитывая современные тенденции, вовсе нет. Весьма своевременно даже

mskrasnov
()

Проектом Kiwix разрабатывается набор консольных утилит zim-tools, десктопный и мобильные клиенты, и скрипты для создания файлов ZIM из дампов проектов Wikimedia или из HTML.

А что-то кроме википедии умеет сохранять? И как работает в случае, когда на сайте часть контента загружается с помощью js?

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

zim-tools в сеть вообще не лезут, насколько я помню.

Утилите zim-create нужно передавать директорию с HTML-файлами и прочими ресурсами, и несколько других параметров.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Блин, ну хз тогда. Очень сомнительная функциональность. Ведь периодически хочется сохранить в файл какую-нибудь статью из тырнета в виде одного файла. И для тех же браузеров существуют соответствующие расширения, которые все ресурсы впихивают в один html файл и сохраняют. Даже если контент был загружен через js, то все равно сохраняется. А тут…

rumgot ★★★★★
()
Ответ на: комментарий от dataman

В основном, чтобы проекты Викимедия были доступны в местах без общедоступного Интернета.

А как это работает с динамическими сайтами? Ajax там всякий и так далее? Разве это не сломает его?

P.S. Не заметил, что подобный вопрос выше уже был задан. Но по сути так и непонятно, как это будет работать. Похоже никак.

mshewzov ★★★★
()
Последнее исправление: mshewzov (всего исправлений: 1)
Ответ на: комментарий от mshewzov

Это типа чтоб сайты скачивать целиком и они работали оффлайн корректно?

А ты сходи по ссылке и посмотри, что люди понавыкачивали и упаковали. Это как «Энкарта», «Энциклопедия Кирилла и Мефодия», диски с приколами и флешка от одноклассника, которому родители провели интернет, папочки с распечатками интернета для Путина и Столлмана. Да, теперь диски, флешки и папочки с интернетом есть в интернете! Прогресс, однако.

А не опоздали ли эти ребята лет этак на 30-ть?

Сходи-сходи, поностальгируешь.

А теперь серьезно:

  • связность и сетевая нейтральность скомпрометированы блокировками, жлобским огораживанием западных сайтов, санкциями, контрсанкцтями и контрконтрсанкциями;
  • широкополосный безлим и вообще доступ в интернет - не данность: кто в глуши живёт, у кого подстанции разносят, у кого выключения - способ РЭБ;
  • Хомак единоличным решением грохнул Лурк с трудами многих людей, а Неолурк подняли таки из дампов и архивных копий;
  • Кстати, где ЛОР-вики, Квотез, библиотека ЛОРа и Опеннета? IBM DeveloperWorks вообще чудом выжил.
  • Оригинальные «Звёздные войны» живы только благодаря торрентам, у Волка сигареты забирают - так и до книг, и до сайтов доберутся, и самого Оруэлла оторуэллят.
  • Иметь отдельный офлайн-просмотрщик - это как иметь Winamp или грампроигрыватель отдельно от Spotify.
Vidrele ★★★★★
()

Не пользуюсь, но пусть будет.

sparkie ★★★★★
()

Вещь, несомненно, нужная. Правильная и полезная. Думаю, в будущем, на Межгалактическом суде… сохранённые с помощью Zim материалы будут исследованы, подшиты к делу, и существенно повлияют на приговор свихнувшемуся в 20-м (и далее) веке человечеству. (Первое обвинение - всеобщая автомобилизация населения).

alash
()
Ответ на: комментарий от bga_

Походу не нужно. Тебе в mht сохранять и хромом открывать для такого

Мне кажется современные сайты с кучей динамического контента и в mht будут паршиво сохраняться. Я давно ничего не сохранял в полном объёме. Надо будет попробовать, как оно.

mshewzov ★★★★
()

Чем оно лучше chm или mht?

Kroz ★★★★★
()
Ответ на: комментарий от alash

свихнувшемуся в 20-м (и далее) веке человечеству.

В XVIII. Как французы своего короля казнили, так всё и пошло-покатилось.

ugoday ★★★★★
()
Ответ на: комментарий от mshewzov

Но по сути так и непонятно, как это будет работать. Похоже никак.

Никто и не писал, что будет работать для любых сайтов.

Например, африканские учителя привозят из города ZIMы в школы глубинки, и раздают Википедию в локальной сети Kiwix`ом.

dataman ★★★★★
() автор топика

день добрый, господа колдуны!
прочитал/почитал/походил по сслыкам, так и не понял как пользоваться?
для себя выбрал простой метод сохранение инет-контента «на почитать на будующее»:
- сохраняю в опере/лисе страницы как 01.htm, 02.htm, 03.htm ...
- архивирую
- all done

как этим пользоваться не понял! :о)
ме кажется, этот «стандарт» как-то должен поддерживаться системой/раб.столом, браузерами? поясните?

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 5)
Ответ на: комментарий от mshewzov

Почему никак? Качай браузером, в чём проблема? Можно вручную, с последующими несложными правками, можно с помощью программ, специально заточенных.

rechnick ★★★
()
Ответ на: комментарий от verdammter_katze

Можно, но удобнеее все-таки именно в single html

rumgot ★★★★★
()
Ответ на: комментарий от dataman

Никто и не писал, что будет работать для любых сайтов.

Тогда вопросов нет. Как узкоспециализированное решение для сохранения оффлайн того, что способно сохраниться - почему бы и нет.

mshewzov ★★★★
()
Ответ на: комментарий от rechnick

Почему никак? Качай браузером, в чём проблема? Можно вручную, с последующими несложными правками, можно с помощью программ, специально заточенных.

Так я ни говорил, что никак вообще. Я говорил, что никак именно описанным в новости софтом.

mshewzov ★★★★
()
Ответ на: комментарий от sunjob

для себя выбрал простой метод сохранение инет-контента «на почитать на будующее»:
- сохраняю в опере/лисе страницы как 01.htm, 02.htm, 03.htm ...
- архивирую
- all done

Есть проще и лучше, на мой взгляд - SingleFile:

SingleFile helps you to save a complete web page into a single HTML file. SingleFile is a Web Extension (and a CLI tool) compatible with Chrome, Firefox (Desktop and Mobile), Microsoft Edge, Safari, Vivaldi, Brave, Waterfox, Yandex browser, and Opera.

Много лет пользуюсь им в ff. Доволен. Рекомендую. :)

А ZIM, похоже, это немного для другого...

Somebody ★★★★
()
Ответ на: комментарий от Somebody

Есть проще и лучше

требующий github -> дополнительных приседаний и отжиманий

а save as - всегда под рукой в любом браузере и ничего не требующая в замен, как собаки.
привычка, вторая натура :о)

sunjob ★★★★★
()
Ответ на: комментарий от sunjob

требующий github

Нет, если только не «зудит» собрать самому из исходников.

В FF есть в главном меню пункт «Инструменты —> Расширения и темы», а там есть поиск расширений «Найти больше дополнений». Набираю «singlefile», и попадаю на https://addons.mozilla.org/ru/firefox/search/?q=singlefile , где и скачиваю-устанавливаю себе в браузер SingleFile...

а save as - всегда под рукой в любом браузере и ничего не требующая в замен, как собаки.
привычка, вторая натура :о)

Ровно те же самые «приседания и отжимания», только результат будет, скорее всего, хуже...

Somebody ★★★★
()
Последнее исправление: Somebody (всего исправлений: 1)
Ответ на: комментарий от Somebody

вот ты вредный, а?!!!

не «зудит» собрать самому из исходников.

что значить не зудить?! как так не собирать из исходников?!!! издеваешься?!!! юродствуешь?!!! да вы, сударь, ерепенитесь собирать из исходников?!!! :о)

давай, найди в блютубе «Tonet - Quarta specie», будем вспоминать молодость и настольгировать по тем временам когда МК61 был единственным компьютером в 10 км вокруге! :о) (абсолютно случайно наткнулся, был поражен, что не слышал раньше)

p.s. расширение надо будет скачать, но все-же свой архив ближе к делу! :о) и да, у меня основной бразузер - опера (достаточно старый), поэтому процентов на 95 не прокатит...

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от sunjob

так и не понял как пользоваться?

$ zimwriterfs

Usage: zimwriterfs [mandatory arguments] [optional arguments] HTML_DIRECTORY ZIM_FILE

Purpose:
        Packing all files (HTML/JS/CSS/JPEG/WEBM/...) belonging to a directory in a ZIM file.

Mandatory arguments:
        -w, --welcome           path of default/main HTML page. The path must be relative to HTML_DIRECTORY.
        -I, --illustration      path of ZIM file illustration. The path must be relative to HTML_DIRECTORY and the image a 48x48 PNG.
        -l, --language          language code of the content in ISO639-3
        -n, --name              custom (version independent) identifier for the content
        -t, --title             title of the ZIM file
        -d, --description       short description of the content
        -c, --creator           creator(s) of the content
        -p, --publisher         creator of the ZIM file itself

        HTML_DIRECTORY          path of the directory containing the HTML pages you want to put in the ZIM file.
        ZIM_FILE                path of the ZIM file you want to obtain.

Optional arguments:
        -v, --verbose           print processing details on STDOUT
        -h, --help              print this help
        -V, --version           print the version number
        -L, --longDescription   long description of the content
        -m, --clusterSize       number of bytes per ZIM cluster (default: 2048Kb)
        -J, --threads           count of threads to utilize (default: 4)
        -x, --inflateHtml       try to inflate HTML files before packing (*.html, *.htm, ...)
        -r, --redirects         path to a TSV file containing a list of redirects (url title target_url).
        -j, --withoutFTIndex    don't create and add a fulltext index of the content to the ZIM.
        -a, --tags              tags - semicolon separated
        -e, --source            content source URL
        -o, --flavour           custom (version independent) content flavour
        -s, --scraper           name & version of tool used to produce HTML content
        --skip-libmagic-check   Accept to run even if magic file cannot be loaded (mimetypes in the zim file may be wrong).

Example:
        zimwriterfs --welcome=index.html --illustration=illustration.png --language=fra --title=foobar --description=mydescription \
                --creator=Wikipedia --publisher=Kiwix --name tests_fra_my-project ./my_project_html_directory tests_fra_my-project_202412.zim

Documentation:
        zimwriterfs source code: https://github.com/openzim/zim-tools
        ZIM format: https://openzim.org
dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

да это я, вроде как, глянул, посмотрел, почесал репу... оказалось немного непонятное-не-то-что-надо... по сравнению с «обычным» скачиванием страниц (точнее, с тем что ожидалось увидеть для своих хотелок).

спасибо :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от sunjob

:)))

поэтому процентов на 95 не прокатит...

Ну... «проблемы индейцев»... Заодно и повод браузер обновить... ;P :))

Somebody ★★★★
()
Ответ на: комментарий от rumgot

zim и kiwix - это больше про просмотр, нежели про сохранение. Сохранить сайт ты можешь с помощью wget/httrack/zimit/чего-то ещё, после чего запаковать это всё в zim (zimit сказанное не касается, он уже сразу пишет в zim). У меня так около 30 сайтов сохранено.

Mapper720
()
Ответ на: комментарий от sunjob

как этим пользоваться не понял! :о)

Вот пара команд из моих личных заметок.

Запаковать сайт (предварительно скачанный wget’ом) в zim:

zimwriterfs \
--welcome=index.html \
--illustration=sitename.org.png \
--language=rus \
--title="sitename" \
--description="sitename.org оффлайн. Версия без картинок." \
--longDescription="Оффлайн-копия sitename.org, сотворенная в месяце девятом лета 2025 от Р.Х. Версия без картинок." \
--creator="[ДАННЫЕ УДАЛЕНЫ]" \
--tags="_pictures:<no>;_videos:<no>" \
--publisher="Mapper720" \
--name="sitename2025_09" \
sitename_2025_09 \
sitename2025_09.zim

Запустить локальный сервер Kiwix (можно будет смотреть скачанные сайты обычным браузером, типа Firefox):

kiwix-serve --urlRootLocation=/kiwix --port 8080 *.zim

сохраняю в опере/лисе страницы как 01.htm, 02.htm, 03.htm …

Удобнее аддоном Save Page WE. Составляешь список страниц сайта (эту работу может выполнить всё тот же wget), потом закидываешь его в настройки аддона - он качает. Каждую страницу перед скачиванием прокручивает до конца, заставляя загрузиться динамический контент. Когда все страницы скачаны - нужно починить гиперссылки (заменить их на локальные), это можно сделать скриптом на Python (ChatGPT такой тебе напишет, если сам не знаешь как/нет времени/просто лень). А уже потом эти файлы запихиваются в zim для удобного просмотра.

Некоторые сайты - типа вики - можно скачать здесь в уже готовом варианте.

Mapper720
()
Ответ на: комментарий от Mapper720

Удобнее аддоном Save Page WE. Составляешь список страниц сайта (эту работу может выполнить всё тот же wget), потом закидываешь его в настройки аддона - он качает. Каждую страницу перед скачиванием прокручивает до конца, заставляя загрузиться динамический контент. Когда все страницы скачаны - нужно починить гиперссылки (заменить их на локальные), это можно сделать скриптом на Python (ChatGPT такой тебе напишет, если сам не знаешь как/нет времени/просто лень).

«Как страшно жить!» © А уж как сложно... :))

Много лет использовал wget:

wget -r -k -l 7 -p -E -nc -np \
   --user-agent="Mozilla/5.0 (compatible; Konqueror/3.0.0/10; Linux)" ${1}

А если надо скрипты, вот bash-скрипт:

#!/bin/bash
#
#   siteget - use wget to retrieve a website
#   siteget - использование wget для закачки сайтов
#
if [ "$#" -ne "1" ]
then
   echo ""
   echo "Формат команды: $(basename ${0}) <url>"
   echo ""
   echo "Загрузка сайтов из интернета с использованием программы wget."
   echo "Несмотря на то, что данный скрипт вызывается простым способом,"
   echo "он использует целый ряд опций программы wget."
   echo "Вам необходимо указать только один параметр:"
   echo "адрес загружаемого сайта (url) самого высокого уровня."
   echo ""
   echo "Например: siteget www.bible-mda.ru"
   echo ""
   exit 1
fi

# --mirror gives infinite recursion, follows links ...
# --convert-links converts links for local viewing
# --no-verbose is a relatively quiet (but not silent) mode
# --no-parent won't traverse up the tree - don't know how this combines with
#    "page-requisites," but I hope the latter wins ... (seems to work well)
# --page-requisites get images (inline OR external) for local viewing
# --user-agent sets a user agent string because some sites send empty pages if
#    they don't like wget, so I use the string for what I'll be viewing with
#
#wget --mirror --convert-links  --no-parent --page-requisites \
wget -r -k -l 7 -p -E -nc -np \
   --user-agent="Mozilla/5.0 (compatible; Konqueror/3.0.0/10; Linux)" ${1}

P.S. Не моё. «честно стырил» когда-то на просторах интернета... :)

Работал скрипт отлично, а сейчас просто мне незачем «сайты грабить»... :))

Somebody ★★★★
()
Последнее исправление: Somebody (всего исправлений: 1)
Ответ на: комментарий от Somebody

Много лет использовал wget

Сможешь wget’ом скачать, например, это? https://konosuba.fandom.com/wiki/Kono_Subarashii_Sekai_ni_Shukufuku_wo!_Wiki (сайт выбран от балды, на его место можешь поставить любой сайт в домене fandom.com).

Или вот этот. Ещё более ядрёный вариант.

https://www.gokugoku.app/

Работал скрипт отлично, а сейчас просто мне незачем «сайты грабить»… :))

И в лучшие времена сайты могли просто исчезать (например, админ потерял интерес к сайту, или вообще отошёл в мир иной). А уж во времена блокировок, цензуры и санкций это звучит совсем недальновидно.

Mapper720
()
Ответ на: комментарий от Mapper720

Повторяю:"сейчас просто мне незачем «сайты грабить»...".

И в лучшие времена сайты могли просто исчезать (например, админ потерял интерес к сайту, или вообще отошёл в мир иной).

Давным давно понял, что случаи, когда интересует весь сайт, крайне редки.

А отдельные страницы с интересным мне материалом и SingleFile вполне нормально сохраняет...

А уж во времена блокировок, цензуры и санкций это звучит совсем недальновидно.

Без комментария... :)

Somebody ★★★★
()
Последнее исправление: Somebody (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.