Вы здесьДополнительная информация в fb2 файлах
Опубликовано сб, 02/05/2009 - 01:09 пользователем lankier
Как известно, в fb2 файлы можно добавлять дополнительную информацию через тег custom-info, примено так: <custom-info info-type="ключ">значение</custom-info> Принято решение (мною :) ) при обновлении (синхронизации) fb2 файлов создавать четыре дополнительных тега custom-info и записывать туда следующую информацию:
Собственно вопросы. Нет ли тут чего лишнего, или может наоборот, чего-то не хватает? Как обозвать (на английском) эти ключи?
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
aldan RE:Подайте бедному копеечку на книжку с литреса... 23 часа
Tramell RE:Серия "Очень прикольная книга", издательство Азбука-классика 2 дня Tramell RE:Серия "Символы времени" издательства "Аграф" 2 дня Tramell RE:Серия книг «Судьбы книг» издательства «Книга» 2 дня Tramell RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 2 дня Tramell RE:Современная корейская литература. Книжная серия... 2 дня nehug@cheaphub.net RE:Загадка автора 5 дней Drunkenmunky RE:/sql/ 5 дней weis RE:Прошу переформатировать, распознать, etc... 1 месяц larin RE:Заплатила, а абонемента нет и скачать ничего не могу! 1 месяц sibkron RE:Серия "Библиотека французской литературы" (Макбел) 1 месяц akorish RE:Регистрация 2 месяца Larisa_F RE:Серия "Я познаю мир" издательства "АСТ, Астрель, Олимп",... 2 месяца konst1 RE:Ух, как я не люблю спамеров! 2 месяца tvv RE:DNS 3 месяца sem14 RE:«Не забыть бы тогда, не простить бы и не потерять!»-2 ... 3 месяца larin RE:Заблокирован 3 месяца konst1 RE:Серия «Интеллектуальный детектив» изд-ва АСТ 3 месяца Впечатления о книгах
udrees про Дорничев: Дворник 13-го уровня. Том 5 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
12 07 В целом сюжет в книге пока такой же шаблонный, в первой книге еще была интрига. Здесь ничего нового нет – повествование затянулось, обычные рядовые сражения, гаремник, эротические подробности, прокачка героя. Описания очень ……… Оценка: плохо
udrees про Дорничев: Дворник 10-го уровня. Том 4 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
12 07 Книга на уровне 2-й и 3-й из этой серии, почти ничего нового. Дворник уже не тот дворник из первой книги, а какой-то альфа-герой из книг серии литРПГ со своим отрядом и гаремом девушек. Интересна конечна первая треть книги, ……… Оценка: плохо
mysevra про Булычев: Путешествие Алисы (Детская фантастика)
11 07 Роскошная детская книга, одна из моих любимых. Кому нужны принцессы, когда такие приключения. Оценка: отлично!
mysevra про Вудхауз: Перелетные свиньи [Pigs Have Wings ru] (Классическая проза, Юмористическая проза)
11 07 Да я просто влюблена в мир, отображённый в творчестве этого автора. «Разбито сердце, не разбито, а свинью красть интересно». Оценка: отлично!
gruin про Воронцов: Петербургский врач. Часть 1 [СИ] (Альтернативная история, Исторические приключения, Самиздат, сетевая литература)
11 07 Нудятина никакого сюжета, никакой интриги Оценка: нечитаемо
Sello про Попов: Довлатов (Биографии и Мемуары)
09 07 Как писатели - и Попов, и Довлатов (особенно) - для меня "зачётны". Но вот сама "раскатанная" другом по годам, эпизодам и событиям биография Довлатова... ммм... не то чтобы удручила (биография Бродского, описанная Лосевым, ……… Оценка: хорошо
irukan про Коллингвуд: Заморыш (Альтернативная история, Попаданцы, Самиздат, сетевая литература)
08 07 Осилил половину первой книги, замутило: Жига лежал в грязи, хрипя и пуская кровавые пузыри. Сопротивление было сломлено. Присев рядом, я, не обращая внимания на его скулеж, деловито пошарил по карманам. Пальцы вскоре ………
Oleg68 про Тарн: Девушка из JFK [litres] (Триллер, Современная проза)
08 07 На удивление, книга понравилась. Книга приправлена израильским бытом с криминалом. Оценка: отлично!
udrees про Бурдин: Проклятый Врач. Том I (Юмор: прочее, ЛитРПГ, Самиздат, сетевая литература)
08 07 Очень специфическая книга, возможно не всем зайдет, автор наверное имеет медицинское образование, или же, респект ему, очень хорошо изучил материал перед подготовкой книги. Судите сами, в книге вы встретите много специфической ……… Оценка: отлично!
udrees про Дорничев: Дворник 8-го уровня. Том 3 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
08 07 Третья книга о дворнике такая же по стилю как вторая и тоже слабее первой книги по стилю. Описания в книге скудные, редкие, незапоминающиеся, в основном происходят действия. Стиль автора можно оценить по предложению: «Разве ……… Оценка: плохо
udrees про Дорничев: Дворник 5-го уровня. Том 2 (Юмор: прочее, Городское фэнтези, ЛитРПГ, Самиздат, сетевая литература)
08 07 На мой взгляд книга получилась радикально слабее первой. Как будто другой человек писал или стиль изменился. Книгу не рекомендуется читать в голодном состоянии, так как – респект автору – он много уделяет внимания готовке ……… Оценка: неплохо |
Комментарии
Отв: Дополнительная информация в 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.
Кстати, а может, заодно всё-таки сделать автомат уведомления пользователей, выложивших или скачавших книгу, о её изменении? А то неудобно вручную отслеживать несколько сотен книг - не обновилось ли случайно что-нибудь.