Вы здесьДополнительная информация в fb2 файлах
Опубликовано сб, 02/05/2009 - 01:09 пользователем lankier
Как известно, в fb2 файлы можно добавлять дополнительную информацию через тег custom-info, примено так: <custom-info info-type="ключ">значение</custom-info> Принято решение (мною :) ) при обновлении (синхронизации) fb2 файлов создавать четыре дополнительных тега custom-info и записывать туда следующую информацию:
Собственно вопросы. Нет ли тут чего лишнего, или может наоборот, чего-то не хватает? Как обозвать (на английском) эти ключи?
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
DGOBLEK RE:Подайте бедному копеечку на книжку с литреса... 9 часов
tvv RE:DNS 1 день sem14 RE:Серия "Что есть что" издательства "Слово"(чего не хватает) 1 день MrMansur RE:<НРЗБ> 4 дня Stager RE:Беженцы с Флибусты 6 дней Tramell RE:Серия "Библиотека французской литературы" (Макбел) 6 дней sem14 RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 1 неделя sem14 RE:Современная корейская литература. Книжная серия... 1 неделя sem14 RE:Серия "Символы времени" издательства "Аграф" 2 недели sem14 RE:Собираем серию: "Азбука-триллер", издательство "Азбука-Терра" 2 недели sem14 RE:«Юмористическая серия» 2 недели larin RE:Оплатил. Абонемент не отображается 2 недели larin RE:Оплатил, но абонемент не отображается 3 недели alexk RE:Багрепорт - 2 1 месяц Isais RE:Семейственность в литературе 1 месяц Violontan RE:Жан Батист Мольер воскрешенный 1 месяц sem14 RE:Гонкуровская премия 1 месяц Саша из Киева RE:Приключения белочки Рыжки 1 месяц Впечатления о книгах
lorealke про Птица: Конструктор живых систем [СИ] (Альтернативная история, Городское фэнтези, Стимпанк, Самиздат, сетевая литература)
03 01 Очередная агитка под видом «боярки» для подростков. Антагонисты слеплены по методичке из телевизора: мерзкий поляк, подлый грузин и надменный швед против «святого» русского мальчика. Весь мир книги — это унылая «осажденная ……… Оценка: плохо
mysevra про Лукьяненко: Последний Дозор (Фэнтези)
03 01 В своё время я была в восторге от первых двух книг, а эта – просто выжимки из опилок, не стоящие внимания. И очень повлияла на моё восприятие творчества автора его гражданская позиция – оказалось, что это не просто фантаст, ……… Оценка: плохо
mysevra про Сегень: Поп (Историческая проза, Православие)
03 01 Интересные страницы истории. Люди, у которых есть чёткие моральные принципы и жизненные ориентиры на любой случай (неважно, чем продиктованные: традициями, профессией, религией или понятиями) – им и сложнее, и проще одновременно. ……… Оценка: хорошо
mysevra про Бачило: Пленники Черного Метеорита (Боевая фантастика, Космическая фантастика)
03 01 Не знаю, не зашло, хоть я честно старалась. Оценка: плохо
lorealke про Астахов: Император Пограничья 1 (Фэнтези, Попаданцы, Самиздат, сетевая литература)
03 01 Типичнейшая «мужская фантастика» формата АТ: чистейший литературный попкорн, который жуется легко, потому что сюжет не провисает, а бодро несется по рельсам нагибаторства. Художественной ценности, понятно, кот наплакал — ГГ ……… Оценка: неплохо
lorealke про Метельский: Кровь легиона [СИ] (Фэнтези, Самиздат, сетевая литература)
03 01 Очередная графоманская ода «священной Империи» с невыносимым количеством воды и бухгалтерии. Вместо сюжета — унылый цикл: убил моба, продал лут, посчитал медяки, попил кофе — и так сотни страниц. Герой — абсолютная картонка, ……… Оценка: нечитаемо
hocmun про Ливадный: Дорога к фронту (Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
02 01 К сожалению автор скатился в чуть ли не обычную пропаганду замаскированую под лит рпг и аля попаданцы . все решат ... После такой шедевральной серии как ,,Истоирия галактики,, к этому ? Простите друзья но это путь почившего ……… Оценка: плохо
lorealke про Тен: Шайтан Иван. Книга 1 [СИ] (Альтернативная история, Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
02 01 Лютая графомания с чудовищной орфографией, от которой буквально вытекают глаза. Герой — картонный нагибато» в вакууме: и спецназовец, и певец, и оружейник, решающий любые проблемы щелчком пальцев одной левой. Сюжета нет, сплошное ……… Оценка: плохо
lorealke про Мясников: Новороссия. ВоZVращение. Краткая история от Екатерины ll до Путина (История, Публицистика)
02 01 Типичная пропагандистская агитка. Мусор. Оценка: нечитаемо
Дей про Провинциалка в высшем свете
02 01 Существует ли хоть один детективно-любовный роман, в котором бы гг не была дурой? Влюбляется, как кошка - не успела уйти от одного (обманувшего её), как тут же увлеклась другим (пренебрежительно к ней относившемся), а потом ………
Лысенко Владимир Андреевич про Мясников: Новороссия. ВоZVращение. Краткая история от Екатерины ll до Путина (История, Публицистика)
02 01 Все предсказуемо, только русские могут быть правы, а весь мир против них. Оценка: нечитаемо
Олег Макаров. про Васильев: По государеву указу (Городское фэнтези, Рассказ, Самиздат, сетевая литература)
02 01 Удивительно слабая вещь для Васильева. Или как будто "на отвяжись" написана. Оценка: плохо |
Комментарии
Отв: Дополнительная информация в 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.
Кстати, а может, заодно всё-таки сделать автомат уведомления пользователей, выложивших или скачавших книгу, о её изменении? А то неудобно вручную отслеживать несколько сотен книг - не обновилось ли случайно что-нибудь.