Видно, никто
Может, кому-то пригодится следующая информация.
Я голову ломал несколько лет, как корректно вести личный информархив. Больно сложные требования. Мне надо было:
- соединение разнородной информации об одной реальном объекте "книга" и прочих разнородных объектах
- переносимость информации и содержания с диска на диск с сохранением целостности ссылок
- простоту используемого софта для просмотра и поиска
- экспорт другим людям, оформление "красиво" либо "для машинной обработки"
- немонстровидность, быструю работу базы
- мобильность, и заполнение из разных мест
В конце концов - спасибо коллегам на работе - обратил внимание на формат JSON. Есть в
вики.
Он хорош тем, что одновременно читабелен и людьми и программами. Прост и структурирован. И удобно ветвится.
Пример записи о книге (файлик descr.txt, лежит в папке вместе с файлом обложки):
{
"NameOfRecord": "gercberger1962_sovremennaya_geometricheskaya_optika",
"Author": ["Герцбергер М."],
"Name": "Современная геометрическая оптика",
"OriginalName": "",
"Year": "1962",
"Series": "",
"Publisher": "",
"City": "",
"Volume": "",
"TAGS": [""],
"Language": "RU",
"File": [{
"Type": "book", "MD5hash": "45BD6BF6CF9D95D378321F0AB7F9D9F2", "FileName": "Gercberger(1962).djvu",
"Creator": "bolega", "Archiver": "",
"Notfull": "", "Comment": "",
"Quality":[
{"NameOfQua": "aawpubl1", "DPI": "600dpi", "Artefacts": ""}]
},
{
"Type": "book", "MD5hash": "966B0AC3D448F1E45DFD94A7FA563B63", "FileName": "Gercberger(1962).pdf",
"Creator": "bolega", "Archiver": "",
"Notfull": "", "Comment": "",
"Quality":[
{"NameOfQua": "aawpubl1", "DPI": "600dpi", "Artefacts": ""}]
}
],
"Links": [""],
"ExtLinks": [""],
"Comment": "",
"DublinCore": {"Contributor": [{"TypeOfRelation": "", "Content": "" } ] }
}
В папку можно положить допматериал, например RUSMARC, скан каталожной карточки.
Теги я использую для "поперечных" ссылок, личных пометок и т.п. Что не укладывается в дерево на диске и содержимое полей файлика JSON. Типа "малоцветная книжка"
Кодирование - UTF-8. Набор полей расширяемый, я сделал две пустые заготовки, где привёл наиболее часто используемые поля, и все поля. Можно, если хочется, уточнить к примеру плохой скан страницы, углубив "File" до "Page".
Пример записи о фильме:
{
"NameOfRecord": "davaj_pozhenimsja",
"Author": [""],
"Name": "Давай поженимся",
"OriginalName": "",
"Year": "",
"Series": "",
"Publisher": "",
"City": "",
"Volume": "",
"TAGS": [""],
"Language": "RU",
"File": [{
"Type": "video", "MD5hash": "", "FileName": "davaj_pozhenimsja.webm",
"OriginalFileName": "Маргарита Терехова в фильме Давай поженимся..webm",
"Creator": "", "Archiver": "",
"Notfull": "", "Comment": "",
"Quality":[
{"NameOfQua": "", "DPI": "", "Artefacts": ""}]
}
],
"Links": [""],
"ExtLinks": [""],
"Comment": "",
"DublinCore": {"Contributor": [{"TypeOfRelation": "Actor", "Content": "Терехова, Маргарита" } ] }
}
Файлы книг и прочего могут лежать где угодно, а информсистема лежит отдельной папкой. Корень её разбит на book, video, mp3, scans, programs и т.д. Book глубже разбит по УДК на два-три первых уровня. Например, Детская энциклопедия т.1 лежит в "\BIBLIO\books\0\encyclopedii\detskaya_enc_1957-1961\tom1\". Другие папки разбиты иначе, как я привык (личное, работа, доки, юмор...).
Осталось дело за немногим: потихоньку наполнять
Переносить файлы из общей помойки в папку "готово", внося их в информационную базу.
Редактор notepad++ понимает структуру JSON и подсказывает скобки и т.п.
Некоторый геморрой - создание выборок. Но искать-то можно и тоталкоммандером. Имя каждой папки - говорящее. А как делать извлечение с разбором структуры JSON, мне программисты показали на PHP-скрипте. Элементарно, в общем-то.
Мобильность и пополняемость я решил обеспечить волевым решением вести одну эталонную базу, а если где-то в дороге что-то заполнил/изменил, то при возвращении к эталону вносить вручную свежие данные. Вообще, один человек шибко много с информацией работать не сможет, не будешь же 24 часа качать, смотреть и пополнять архив свежескачанным. Две, пять, ну тридцать новых единиц хранения в сутки, больше мозг не переварит.
Upd
Ещё всплыл такой нюанс при проработке метода сохранения.
Раз я активно работаю с е-книгами для других, пришлось продумать как "отделить зёрна от плевел" - выделить е-книги личной библиотеки и прочий всевозможный входной мусор. Решил, что в books будет подпапка "s" и подпапка "r". В первой - всё, что не хочется плюсовать в личную библиотеку, чтобы её не замусоривать, во второй собственно дорогие/важные/нужные/любимые/... е-книги.