• лытдыбр nih Обнаружил, что а) у меня обновился fbreader (на самом деле хз когда), б) теперь он либо скачивает и сохраняет чистый fb2 как fb2.zip, либо, если поставить правильный тип application/fb2 — не сохраняет вообще. Ну ок, придётся делать zip на лету.
    ♡ recommended by @Anonymous

Replies (12)

  • @stanislavv, @stanislavv
    fb2.zip это же православно, разве нет? изкоробки же сжатие нет как .epub
  • @Anonymous, Это не православно. Задолбало раззиповывать уже.
  • @Anonymous, 1) из чьей коробки? Тут я сервер opds пилю, а не кто-то там ещё. Могу вообще fb2.gz сделать. А сам формат fb2 — таки xml без сжатиев.
    2) тут баг явно у fbreader, но придётся подстраиваться.
  • @stanislavv, @stanislavv
    по стандарту так... и сам чистый \*.fb2 сам лично использую только когда верстаю книжку.
    А для хранения и распространения применяется \*.fb2.zip. И читалкам этот формат как ожидаемый, обычно.
    з.ы. помню сам бесячился, когда скачивал fb2, а он в архиве за каким-то хером. Старательно распаковывал... думал просто сжимают для файлообменников. А потом лет 5 назад начал сам верстать и преисполнился познанием :philosoraptor:
  • @Anonymous, Это не стандарт всё-таки. По-крайней мере, нигде и никем не описанный. Это соглашение, которое некоторые читалки считают стандартом.
    И, кстати, надеюсь, создавая fb2, стандарт xml соблюдаешь?
  • @stanislavv, @stanislavv
    А то! И неистово плююсь, когда заглядываю в литрессовский код :blobcatnotlike:
  • @Anonymous, Кто-то только разглядывает, а кому-то разбор писать... Хорошо, что python, а не go, там всё-таки работающий beautiful soap есть..
  • @stanislavv, @stanislavv я то наделся с образовательной точки зрения. Ну курируют же формат, эти ребята должны знать как правильно, образцово. А в итоге внутри fb2 ад и ещё fb3 высрали никому не нужный.
    Касаемо проверки общей валидности, то за редким исключением сторонние книги её проходят. Но читалки хавают — все довольны.
  • @stanislavv, придётся делать zip на лету
    Не надо. Я же тебе уже писал. Во Флибусте FB2 книги уже лежат в больших ZIP архивах, в среднем по два гигабайта. Так вот, их не надо распаковывать, просто отправляешь байты из ZIP архива по смещению в браузер пользователя как есть, навесив заголовок Content-Encoding = deflate. Браузер сам распакует этот поток байтов в файл FB2 при указании типа application/fb2.

    При этом ZIP архивам с Флибустой даже не обязательно лежать рядом с программой, тот самый поток данных по смещению из архива можно выдрать удаленно GET запросом с указанием Range. Так, например, архивы библиотеки можно разместить в облаке с поддержкой Webdav — облако mail.ru, например.
  • @IRT, Проблема-то не в браузере, а в читалке, заточенной строго под fb2.zip и которую я не могу поправить.
  • @stanislavv, Ну, тогда к потоку байт надо приделать заголовок ZIP и будет fb2.zip. В заголовке указать, что внутри один файл, а не тысяча. Главное, пережимать ничего не надо.
  • @IRT, (посмотрев на статистику посещений локального хранилища): сиё ненужная оптимизация. Даже на дохлой апельсинке всё упирается в сеть (судя по всему — в мегафон).