Вы здесьДополнительная информация в fb2 файлах
Опубликовано сб, 02/05/2009 - 01:09 пользователем lankier
Как известно, в fb2 файлы можно добавлять дополнительную информацию через тег custom-info, примено так: <custom-info info-type="ключ">значение</custom-info> Принято решение (мною :) ) при обновлении (синхронизации) fb2 файлов создавать четыре дополнительных тега custom-info и записывать туда следующую информацию:
Собственно вопросы. Нет ли тут чего лишнего, или может наоборот, чего-то не хватает? Как обозвать (на английском) эти ключи?
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
Larisa_F RE:Дэвид Герберт Лоуренс собрание в 7 томах том 3 11 часов
нэнси RE:Подайте бедному копеечку на книжку с литреса... 2 дня Larisa_F RE:Книжная серия "Жизнь в искусстве" издательство "Искусство"... 3 дня sem14 RE:Собираем серию: "Мастер серия", издательство "Лимбус". 4 дня Dead_Space RE:Прошу переформатировать, распознать, etc... 6 дней sibkron RE:«Словенский глагол» 1 неделя Tramell RE:Литературная премия имени И.А. Ефремова 1 неделя sem14 RE:Серия "Что есть что" издательства "Слово"(чего не хватает) 2 недели larin RE:Оплатил, но абонемент не отображается 2 недели Larisa_F RE:Беляевская премия 3 недели epoost RE:Чарльз Брокден Браун - Wieland 1 месяц nehug@cheaphub.net RE:Ответственность. 1 месяц nehug@cheaphub.net RE:Доступ 1 месяц Larisa_F RE:Принцесса-бродяжка 1 месяц Larisa_F RE:Серия "Очень прикольная книга", издательство Азбука-классика 1 месяц Tramell RE:Серия "Символы времени" издательства "Аграф" 1 месяц Tramell RE:Серия книг «Судьбы книг» издательства «Книга» 1 месяц Tramell RE:Современная корейская литература. Книжная серия... 1 месяц Впечатления о книгах
Dead_Space про Гуха: Незалеченные раны. Как травмированные люди становятся теми, кто причиняет боль (Психология, Самосовершенствование)
30 08 ."Отношенческие травмы специфичны для людей. Ни одно другое живое существо не причиняет вред своим сородичам намеренно, разве что при охоте или в период спаривания." При таком уровне экспертизы, проявленном вначале, дальше можно не читать. Оценка: нечитаемо
RamirezElDemoni про Ра   : Задолбанец (Героическая фантастика, Фэнтези, Самиздат, сетевая литература)
30 08 Эксперимент не удался. Вернуть главгера домой в процессе - так себе концовка. Оценка: плохо
Barbud про Тамбовский: Кто остался на трубе [СИ] (Альтернативная история, Социальная фантастика, Попаданцы, Самиздат, сетевая литература)
30 08 Глупость какая-то. Советские школьники в США оставлены почти без присмотра, они там воюют с мафией, охаивают комсомол в разговорах с американцами, живут отдельно в одном доме мальчик с девочкой безо всякого контроля. Не верю. Оценка: нечитаемо
decim про Лукьяненко: Новая фантастика 2026. Антология №10 [сборник litres] (Социальная фантастика, Научная фантастика)
30 08 Легально и бесплатно в количествах на любом самиздатовском сайте. Изводить лес ради тщеславия дебютантов("меня издали на бумаге!") - ну такое. Оценка: плохо
xZiminxx про Мазин: Князь плесковский [АТ] (Альтернативная история, Боевая фантастика, Исторические приключения, Самиздат, сетевая литература)
27 08 На Мазина непохоже вообще . Непонятно кто написал. Оценка: плохо
mysevra про Майер: Eclipse [en] (Любовная фантастика)
27 08 Не понимаю, почему так романтизируют эту историю. Это же так практично: лучше выбрать бессмертное существо, которое обеспечит тебе и здоровье, и богатство, и красоту, чем ютиться с полуживотным в индейской резервации, работая ……… Оценка: плохо
mysevra про Хрущов-Сокольников: Петербургские крокодилы (Полицейский детектив, Крутой детектив)
27 08 Интересный стиль. Да и сама книга – замечательный приключенческий криминальный роман, живой, лёгкий и какой-то не совсем серьёзный. Оценка: хорошо
tvv про Зубков: Дипломат и его конфиденты (Боевая фантастика, Фэнтези, Самиздат, сетевая литература)
26 08 Продолжение цикла есть на Ф., но файлы слишком тяжелые, более 10 мегабайт.
Никос Костакис про Ланцов: Вираж бытия [СИ] (Альтернативная история, Исторические приключения, Попаданцы, Самиздат, сетевая литература)
25 08 Уникальное претенциозное производство. ____________________ Постарался представить себе производство, поглядывающее свысока, разговаривающее через губу - кароч, такое всё из себя, шо пиззец! А прецизионное производство горестно разводит руками и обтекает.
Dead_Space про Триана: Королева склепа [litres] [The Prettiest Girl in the Grave ru] (Ужасы, Триллер)
25 08 Иллюстрации внутри, как и в предыдущей книге «Кровавые реки, мясные берега», очень отдают ИИ. По аннотации, мне казалось что это будет что-то более драйвовое, а-ля фильм «Спуск», не дотягивает, обычный хоррор в стиле ……… Оценка: неплохо
Лысенко Владимир Андреевич про Беломестнова: Седые мальчики (Современная проза, О войне)
24 08 Это так класно защищать Родину в чужой стране, в Украине, Грузии, Сирии. Это они не такие, нужно их заставить, это не они пришли к нам, а мы к ним. Только для читателей Раши. Оценка: нечитаемо
Paul von Sokolovski про Ветров: Девятиэтажка. Часть 3 (Альтернативная история, Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
23 08 Интересно. Читается с удовольствием. Хочется продолжения. |
Комментарии
Отв: Дополнительная информация в 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.
Кстати, а может, заодно всё-таки сделать автомат уведомления пользователей, выложивших или скачавших книгу, о её изменении? А то неудобно вручную отслеживать несколько сотен книг - не обновилось ли случайно что-нибудь.