Вы здесьДополнительная информация в fb2 файлах
Опубликовано сб, 02/05/2009 - 01:09 пользователем lankier
Как известно, в fb2 файлы можно добавлять дополнительную информацию через тег custom-info, примено так: <custom-info info-type="ключ">значение</custom-info> Принято решение (мною :) ) при обновлении (синхронизации) fb2 файлов создавать четыре дополнительных тега custom-info и записывать туда следующую информацию:
Собственно вопросы. Нет ли тут чего лишнего, или может наоборот, чего-то не хватает? Как обозвать (на английском) эти ключи?
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
babajga RE:Maxima-library - переезд 1 день
darkvova RE:librusec.pro 1 день Саша из Киева RE:Счастливая скамейка 2 дня Саша из Киева RE:Помни их имена 2 дня Саша из Киева RE:Приятное с полезным 2 дня Саша из Киева RE:Букет колючек 2 дня sem14 RE:Плохой, негодный файл. 4 дня nehug@cheaphub.net RE:There is no option to read the book 5 дней logusss RE:Прошу переформатировать, распознать, etc... 6 дней nehug@cheaphub.net RE:Доступ 1 неделя нэнси RE:Подайте бедному копеечку на книжку с литреса... 1 неделя sibkron RE:«Уроки русского» 1 неделя edvud RE:Не работает регистрация и восстановление пароля 1 неделя Larisa_F RE:Грушевое дерево 1 неделя koifish RE:Оплатил абонемент, деньги списались, абонемента нет 1 неделя Саша из Киева RE:Неудавшийся священник 2 недели babajga RE:Повесть о чудесном одуванчике 3 недели Саша из Киева RE:Ночной пассажир 3 недели Впечатления о книгах
voronin345 про Григорий Владимирович Вдовин
20 05 мдя. агитка. и не самая умная. обмельчали пропагандоны. советские были на порядок умнее. какое образование, такой и выхлоп. хотя........для такого населения и дерьмо - конфетка.
obivatel про Садов: Кристалл Альвандера. Корабль Альвандера [Компиляция] (Боевая фантастика)
19 05 2 DUSHENKA Компилировали, компилировали, пока недовыкомпилировали. =) . На самом деле, жестокий облом: я-о думал, во второй книге он куда-то полетит.... а тут повтор уже прочитанных глав. . 2 snovaты Дык это ……… Оценка: хорошо
Sello про Каверин: Перед зеркалом (Советская классическая проза)
18 05 Любовь, втиснутая в рамки эпистолярного жанра, - особый вид литературы. Потому что оголенность чувств исторических персонажей, отношения их друг с другом - не надуманная фантазией писателя переписка, а действительная, взятая ……… Оценка: отлично!
Dongel про де Камп: Ревущая труба [The Roaring Trumpet] [The Incomplete Enchanter ru] (Фэнтези)
17 05 Чуть не сдох, пытаясь читать эту тягомотину. Не осилил. Сорри, гайз...
Barbud про Плетнёв: Выход на «бис» [litres] (Альтернативная история, Боевая фантастика, Попаданцы)
17 05 Первые две книги были еще так-сяк, читать можно. Дальше пошла однообразная многостраничная тягомотина "за политику" на тему "как нам спасти СССР", перемежаемая унылым "наши шли, враги напали, от них геройски отбились" - и ……… Оценка: плохо
Игорь Гор про Денисенко: Сказка (Альтернативная история)
17 05 немного Альтернативная история, но в целом надо читать. Оценка: хорошо
StrelaVV про Шнейдер: Попаданка для лорда (Эротика, Любовная фантастика, Самиздат, сетевая литература)
15 05 Мне очень понравилась книга. Прелестная история попаданки получилась у автора Оценка: отлично!
дядя_Андрей про Злотников: Пощады не будет [litres] (Боевая фантастика, Попаданцы)
15 05 fуlhtq, Тамарис это остров на который в первой части попал Пушкевич. А мир называется Оокона. Но, в принципе, ты прав.
Лысенко Владимир Андреевич про Видум: Под знаком Песца [СИ] (Фэнтези, Самиздат, сетевая литература)
15 05 Читается хорошо, понравилось. Оценка: отлично!
скунс про Афанасьев: Кто ты, Такидзиро Решетников? [СИ] (Попаданцы, Самиздат, сетевая литература)
14 05 Понравилось,читать интересно Оценка: хорошо
lokiiii про Давыдов: Манящая корона [litres] (Героическая фантастика, Фэнтези)
13 05 Повелся на обложку (хотя дракон там тот ещё, но для этой книги как раз), и даже SEO аннотация не отпугнула... и зря. Тут всё настолько плохо, что даже сложно сказать что хуже. По сути, это небольшой рассказик, от силы ……… Оценка: нечитаемо
Lan2292 про Идущий по мирам
13 05 Решила написать по поводу данного произведения следующее, рояль на рояле лежит и роялем погоняет. Если не зацикливаться на этом и воспринимать как некий стеб, неплохо. |
Комментарии
Отв: Дополнительная информация в 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.
Кстати, а может, заодно всё-таки сделать автомат уведомления пользователей, выложивших или скачавших книгу, о её изменении? А то неудобно вручную отслеживать несколько сотен книг - не обновилось ли случайно что-нибудь.