Вы здесьДополнительная информация в fb2 файлах
Опубликовано сб, 02/05/2009 - 01:09 пользователем lankier
Как известно, в fb2 файлы можно добавлять дополнительную информацию через тег custom-info, примено так: <custom-info info-type="ключ">значение</custom-info> Принято решение (мною :) ) при обновлении (синхронизации) fb2 файлов создавать четыре дополнительных тега custom-info и записывать туда следующую информацию:
Собственно вопросы. Нет ли тут чего лишнего, или может наоборот, чего-то не хватает? Как обозвать (на английском) эти ключи?
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
Isais RE:Дмитрий Анатольевич Горчев - ЖЖ Дмитрия Горчева (2009–2010) 9 часов
DGOBLEK RE:Подайте бедному копеечку на книжку с литреса... 11 часов Саша из Киева RE:Детям о Ленине (Издание 1965 года) 3 дня Саша из Киева RE:Приключения Мишки-Ушастика (Перевод Марата Брухнова) 6 дней Саша из Киева RE:Кто сможет раздобыть и оцифровать нужные мне книги? 1 неделя babajga RE:Белая княжна 1 неделя Nicout RE:Таинственная личность админа Флибусты 2 недели Isais RE:Файл достаточно хорош. Нет смысла в его улучшении. Ага,... 2 недели mazay RE:Sleepy Xoma - Bagⲣѱnoⲣojdennaѱ 2 недели zlyaka RE:С Новым годом! 2 недели Isais RE:Детство, опаленное войной (Вторая мировая 1939-1945 и ВОВ) 2 недели SparkySpirit RE:Прошу переформатировать, распознать, etc... 3 недели SparkySpirit RE:Жорж Санд - переводы 19 века 3 недели Саша из Киева RE:Наш дом - СССР 3 недели babajga RE:Чернушка. Повести 3 недели Саша из Киева RE:Сказки далёких островов 3 недели babajga RE:Лопоухий бес 4 недели babajga RE:Ежик покидает дом 1 месяц Впечатления о книгах
Синявский про Говард Эндрю Джонс
19 01 19.01.2025г. Знаменитый автор фэнтези Говард Эндрю Джонс умер в 56 лет от рака мозга
iggy71 про Житинский: Глагол «инженер» (Социальная фантастика)
19 01 Блистательно! Правдоподобно, реалистично, без всякой там фантасмогории, характерной для некоторых других его вещей, которая иногда утомляетЮ откровенно сказать. Как будто в молодость вернулся, короче. Когда грузинскую сцену прочитывал, ржал как лошадь. Оценка: отлично!
9333694 про Дроздов: Горящее небо Аорна [СИ] (Боевая фантастика, Социальная фантастика, Приключения в современном мире, Самиздат, сетевая литература)
18 01 Напоминает классику: Эдмон Мур Гамильтон "Звездные короли". Но совершенно самсостоятельное произведение. Прочитал с удовольствием. Немаловажно, что ГГ не злоупотреблял перепевом отечественной классики, чем автор иногда грешит Оценка: хорошо
Stager про Демина: Громов: Хозяин теней (СИ) (Боевая фантастика, Фэнтези, Самиздат, сетевая литература)
17 01 Написано с большой любовью к бандиту и демократии. Но бандит всё равно образцовое дерьмо. Зато не так занудно, как обычно. Оценка: плохо
Никос Костакис про Ланцов: Десантник на престоле [Шесть книг в одном томе] (Альтернативная история)
16 01 ...познаниями в области радиоэлектронике..." Так выпьем за кибернетике! (с)
marin029 про Поселягин: Тактик [СИ] (Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
16 01 Где-то в середине книги есть такое: ..."полярная ночь, или северная. Говорят, тут постоянно так светло." Автор уточни получше. Ночью светло это летом, во время полярного, короткого лета. А зимой в заполярье почти постоянно темно.
mysevra про Глуховский: Сумерки (Ужасы, Триллер)
16 01 Я была в восхищении до середины книги, потом всё-таки начали закрадываться сомнения. Потрясающий язык, но, да простит меня автор, так по-ленивому все обосновать – это сплошное разочарование. Оценка: хорошо
DGOBLEK про Кивиряхк: Последний, кто знал змеиную молвь [Mees, kes teadis ussisõnu ru] (Фэнтези, Современная проза)
14 01 Огромнейшее спасибо! Цитаты с книги - Они, видишь ли, ноги мне отрубили да в море сбросили! Пусть катятся в задницу, такими детскими приёмчиками от меня не избавишься! Юной девушке трудно устоять перед косолапым — ……… Оценка: отлично!
Barbud про Фонд: Агитбригада 1 [СИ] (Городское фэнтези, Попаданцы, Самиздат, сетевая литература)
14 01 Написано вроде и неплохо, но анахронизмы глаз режут - тут тебе в 1927 году и дуст, и "Либертанго", и "учебник по истории КПСС". И это я только половину книги одолел. Похоже, автор (или коллектив авторов) в реалиях тех лет ……… Оценка: неплохо
Саша из Киева про Даррелл: Говорящий сверток [The Talking Parcel ru] (Природа и животные, Детская проза)
14 01 artak60, У меня эта книга тоже была именно с такими иллюстрациями. Правда, эта книга была не моя собственная - я брал её в нашей местной детской библиотеке. А сейчас у нас в Киеве со старыми книгами катастрофическая ситуация.
dolle про Пелевин: Круть [litres] (Современная проза)
14 01 Наверное не нужно рассматривать " Трансгуманизм " как цикл.Все книги концептуально разные , вызывающие разные вопросы и эмоции у читателя.После первой книги планка была поднята слишком высоко и у многих появились завышенные ……… Оценка: отлично!
Belomor.canal про Свечин: Месть – блюдо горячее (Исторический детектив, Исторические приключения)
13 01 Похоже автору Лыков надоел по полной! если выкинуть 100 тонн воды - многостраничные цитаты из газет того времени, описание международной обстановки и ещё куча всего, то останется мало интересная история поимки, похожая на ……… Оценка: неплохо |
Комментарии
Отв: Дополнительная информация в fb2 файлах
Мне кажется, что введение дополнительных внутренних тегов в «custom-info» в .fb2 будет слишком сильной модификацией стандарта с учётом того, что:
1) эта модификация будет действовать только на Либрусеке;
2) в нынешнем стандарте никаких тегов в этой секции вообще не полагается — даже «p» (сиречь параграфов, абзацев), то есть в этой секции можно разбивать текст только переводом строки.
То есть для всех остальных библиотек файлы окажутся заведомо невалидными или эту секцию будут сознательно чистить при заимствовании файлов с Либрусека. Можно, конечно, обойтись без дополнительных внутренних тегов, а просто введением четырёх обязательных строчек, каждая из которых начинается стандартно, потом двоеточие, потом конкретные данные.
Кроме того, я не совсем понял смысл четвёртого пункта — «время поступления книги в библиотеку» — это время размещения предыдущей версии книги, да? То есть дата модификации *.fb2 файла предыдущей версии, указанная в zip-архиве?
Также мне кажется, что в формулировку первого пункта нужно добавить «предыдущей версии», чтобы получилось так: «bookid предыдущей версии книги в Либрусеке». (Или здесь имеется ввиду самая первая версия — в тех случаях, когда версий уже было несколько?)
Отв: Дополнительная информация в fb2 файлах
Это не модификация фб2. Всё делается в соответствии со стандартом.
Отв: Дополнительная информация в fb2 файлах
Подожди, подожди, с каким стандартом? Сейчас, насколько я знаю, валидатор орёт благим матом, когда в секции «custom-info» появляется хоть что-то помимо простого текста. Этот простой текст даже тегом «абзаца» форматировать нельзя. А ты предлагаешь новые теги туда засунуть…
Отв: Дополнительная информация в fb2 файлах
Идея хранить дополнительную информацию о файле кажется мне весьма здравой. Например, я и сам уже думал, что неплохо бы иметь ID книги и дату ее модификации - тогда можно было бы что-нибудь придумать, чтобы автоматом добавлять в локальную библиотеку файлы с исправленными опечатками.
Я еще не пробовал работать с софтом по созданию книг, но если Вы утверждаете, что валидатор неадекватно реагирует на html-теги, верю Вам на слово...
Но, может быть, стоит рассмотреть какой-нибудь другой вариант размещения доп.информации? Раз уж нельзя поменять xml-схему... Например, придумать что-то такое:
<custom-info>
#Дополнительная информация для либрусека
file-id: 0100-abcd-ef-12345678
last-modified: 2009-05-01 17:13
</custom-info>
Написать парсер для таких строк - два раза плюнуть. Конечно, не хотелось бы так извращаться внутри XML-документа, но если это позволит избежать проблем совместимости - то почему бы и нет?
Отв: Дополнительная информация в fb2 файлах
Вообще-то, если ты модифицирушь имеющийся файл, то ты должен сохранять его file-id (0100-abcd-ef-12345678) тем же. А здесь речь идёт не о file-id, а о id файла в базе данных Либрусека — это тот id, который соответствует порядковому номеру появления книги в либрусековском собрании и который следует в адресной строке вслед за b/…
Отв: Дополнительная информация в fb2 файлах
В оригинальный файл будет вставляться четыре (дополнительных) тега custom-info с некоторой информацией. (Так понятнее?)
Отв: Дополнительная информация в fb2 файлах
Это было мне понятно с самого начала. И именно этому я возражаю — такой файл не пройдёт валидацию. :)
Отв: Дополнительная информация в fb2 файлах
Почему не пройдёт?
Отв: Дополнительная информация в fb2 файлах
Я уже дважды об этом писал здесь! — потому что в этой секции согласно fb2-схеме не положено иметь ничего, кроме простого текста. То есть никакие дополнительные элементы там не положены. :)
Отв: Дополнительная информация в fb2 файлах
<cusom-info info-type="librusec-bookid">1234</cusom-info>
<cusom-info info-type="librusec-updater">lib.rus.ec</cusom-info>
Где здесь дополнительные теги?
Отв: Дополнительная информация в fb2 файлах
Упс, да! никаких дополнительных тегов. Новые значения атрибутов! :) Заклинило меня, кажись, на фразе «четыре дополнительных тега custom-info», а первый абзац выпал из внимания. И в таком заклиненном состоянии я и писал следующие ответы! :D :D :D
Прошу больших пардонов!
Но остаются два вопроса:
Отв: Дополнительная информация в fb2 файлах
У меня например есть идея записывать там названия произведений входящих в сборники и собрания сочинений, и может в будушем программы библиотекари научатся ее вытаскивать, а программа создавшая файл там и так записывается.
Отв: Дополнительная информация в fb2 файлах
Вообще-то эта информация (список входящих в книгу произведений) есть в body. Чтобы можно было их увидеть программа просто должна уметь составлять оглавление.
Можно было бы указывать, что это сборник. Но (пока?) эта информация в база данных отсутствует.
Отв: Дополнительная информация в fb2 файлах
Простите, lankier
В том, что так сделать можно, а так же можно достать из дескрипшена прог.-биб. - верю Вам безоговорочно, т.к. до сих пор радостно попискиваю от написанного Вами валидатора для Либрусека. Но не могли бы Вы как-нибудь подоступнее объяснить цель именно такой доп.инфо в файлах?
1.Цель наличия там ID книги на Либрусеке? Для обновления локальных библиотек пользователей?
2. Время обновления книги (создания синхронной копии) - это дата правки данного файла? Его надо дублировать из history?
3. Программа, которая производила обновление - это редактор, которым велась правка? Дублировать из document-info/program-used?
Как и для чего Вы собираетесь использовать эту информацию? Если не очень лень объяснить, то постепенно дойдет и до меня.:))
Отв: Дополнительная информация в fb2 файлах
Наверно я не очень понятно написал в начале. Есть в либрусеке книга. У пользователей есть возможность online-редактирования метаинформацию этой книги (жанр, автор, название и т.д.) Эта информация хранится в базе данных. Если кто-то скачает fb2 файл, в его description останется та информация, которая в ней была во время добавления книги в либрусек. То, что правилось пользователями в книге отсутствует. Процедура синхронизации это прописывание непосредственно в fb2 файл всего того, что пользователи понаисправляли на странице книги. Все эти custom-info-теги будет прописывать программа, которая производила синхронизацию.
По этому id можно будет найти книгу в библиотеке. (Можно и прямой урл писать, но id технологичней и меньше места занимает.)
Это время синхронизации книги - когда в нее была прописана информация с либрусека. (Точнее время, когда была взята информация из базы данных. Но это в данном случае не важно.) Нужно это для того, чтобы можно было сравнить два файла, скачанных в разное время и посмотреть какой из них новее (с более актуальной метаинформацией).
Это программа, которая производила синхронизацию. Это может быть движок либрусека или оффлайновая утилита или еще что-то.
Собственно этот тред был создан для того, чтобы договориться о том как и какую информацию добавлять во время процедуры синхронизации.
Отв: Дополнительная информация в fb2 файлах
Собственно вот мои предложения по названиям ключей:
librusec-book-id
librusec-added-at
librusec-updated-at
librusec-updater
Отв: Дополнительная информация в fb2 файлах
Спасибо за разъяснения. От меня изначально ускользнуло наличие (или скорое появление) программы-синхронизатора, способной вносить информацию из базы данных Либрусека непосредственно в файл книги. Правильно ли я поняла, что названия ключей:
librusec-added-at - 4.
librusec-updated-at - 2.
librusec-updater - 3.
Действительно ли нужен ключ 3.?
Отв: Дополнительная информация в fb2 файлах
В принципе она уже написана (обе версии - online и offline), правда осталось ещё несколько вопросов (типа названия ключей). Ещё не очень понятно что делать с кешированием обновленных файлов (не обновлять же файл при каждом скачивании, большая нагрузка на сервер будет).
Угу. Я решил поменять последовательность ключей. Вообще-то это не важно, но мне так больше нравится. :)
Это аналог program-used из document-info. Можно было бы записывать эту информацию непосредственно в program-used, но не хочется - усложнится и замедлится работа апдейтилки-синхронизаторки. А нужен, чтобы знать того, кто приложил руку к файлу (в случае возникновения каких-нибудь ошибок).
Отв: Дополнительная информация в fb2 файлах
пока таких программ предполагается ровно 1 штука, нет? Как узнать, кто приложил руку? Просто увидеть с сервера или локального компа?
Отв: Дополнительная информация в fb2 файлах
Тут что-то я не очень понял.
Примерно, как мне кажется это должно работать:
На сервере лежит оригинальный файл, кем-то добавленный в библиотеку; скажем 1234-orig.fb2.
Дальше кто-то хочет скачать этот файл. Берется 1234-orig.fb2, синхронизируется и выдается пользователю.
Вот тут возникает вопрос кеширования. После того, как пользователь скачал файл, движок сохраняет синхронизированную версию в 1234.fb2 и если кто-то опять захочет скачать его, то выдается этот синхронизированный файл.
Есть другой вариант. Добавить в таблицу книг в базе данных доп. поле (скажем Edited).
При редактировании метаинформации в него записывается 1. Раз в день (или когда кто-нибудь скачивает файл) происходит синхронизация файлов у которых Edited равно 1.
Ну и третий вариант - нафиг кеширование. Синхронизировать в момент скачивания файла. Но это надо смотреть на нагрузку сервера. Можно для начала именно так попробовать-потестировать, и если нагрузка не очень возрастет, то и нечего огород городить.
Оригинальный файл и так должен быть сохранен. Предполагается, что синхр-ка с оригинальными файлами и будет работать.
Сейчас подсчитаю... Одна-две-три... У меня их ровно одна целая и пять десятых штуки. Есть оффлайновая утилита в составе fb2utils и некий код на php, который сейчас работает из командной строки и апдейтит указанный файл. Но этот код еще надо прикрутить к движку.
Отв: Дополнительная информация в fb2 файлах
Отв: Дополнительная информация в fb2 файлах
C кешированием всё понятно и давно сделано для прочих форматов (txt, rtf, epup...)
Файл генерируется в момент обращения пользователя, пакуется зипом и сохраняется на случай подобных запросов.
Единственно, при любом изменении информации о книги закешированный файл надо удалять, но это как-раз просто, все изменения проходят через одно место.
Отв: Дополнительная информация в fb2 файлах
Ага. Тогда я никаких проблем больше не вижу.
Поскольку возражений по поводу названий ключей не было, оставил какие сам придумал.
Прикрепил к посту апдейтилку на php. Работает из командной строки, два аргумента: имя файла и bookid. Запросы к базе данных сделаны через стандартные функции mysql_* (не через движковые). Результат выводится в stdin. Работает ессно только с валидным xml. Вроде ничего не забыл.
Отв: Дополнительная информация в fb2 файлах
Сделал небольшие изменения в апдейтилке. Основное - избавился от функции libXmlIconv и глобальной переменной для неё. См. прикрепленный файл.
Отв: Дополнительная информация в fb2 файлах
Кажется, в базе данных появился новый блок, который просто просится на место рядом с четырьмя имеющимися: именно блок с дополнительной информацией, помещаемой в квадратных скобках после названия.
Предлагаю название ключа — librusec-add-title-info.
Отв: Дополнительная информация в fb2 файлах
ЗдОрово! Наконец появляется способ отличить в локальной библиотеке либрусековскую книгу от не-либрусековской. :) Особенно приятен librusec-book-id.
Кстати, а может, заодно всё-таки сделать автомат уведомления пользователей, выложивших или скачавших книгу, о её изменении? А то неудобно вручную отслеживать несколько сотен книг - не обновилось ли случайно что-нибудь.