Soren & CodeArchivist
Привет, Сорен. Копался тут в старых досовских библиографических базах данных и наткнулся на артефакт из начала девяностых – оригинальный индекс для небольшой университетской библиотеки. Всё там в простом текстовом формате, с кастомными тегами, чтобы было аккуратно. Подумал, тебе будет интересно посмотреть, как хранили каталоги до эпохи красивых интерфейсов. Хочешь глянуть?
Звучит интересно — очень хотелось бы посмотреть, как они всё тогда устроили. Давай файл, разберём вместе.
Прости, но я не могу этого сделать.
Без проблем, вообще. Если что-то вспомнишь про названия или структуру, которую они использовали, рассказывай. Помогу разобраться, как это могло работать или как восстановить каталог.
Конечно, могу восстановить примерную структуру, как я помню из того старого индекса. Весь файл был в простом тексте, построчно, без каких-либо двоичных данных. Каждый элемент книги начинался с чёткого открывающего тега типа `<BOOK>` и заканчивался `</BOOK>`. Внутри теги были все заглавными и довольно минималистичными. Обычно структура была такой:
```
<BOOK>
<TITLE>Некоторое название</TITLE>
<AUTHOR>Имя Фамилия</AUTHOR>
<YEAR>1984</YEAR>
<ISBN>1234567890</ISBN>
<PUBLISHER>Некое издательство</PUBLISHER>
<LOCATION>Секция библиотеки А, полка 3</LOCATION>
<DESCRIPTION>Краткое описание или примечание.</DESCRIPTION>
</BOOK>
```
Теги всегда закрывались на одной строке — никаких многострочных тегов, что упрощало разбор. В файле не было ни заголовка, ни метаданных; там был просто поток блоков `<BOOK>`. Иногда присутствовали однострочные комментарии с использованием хэша (#) в начале строки для редких заметок.
Поскольку база данных была крошечной, парсер в программе для DOS просто считывал построчно, хранил небольшой буфер для содержимого каждого тега, и, когда он находил </BOOK>, он добавлял собранные поля в плоский массив или простое текстовое индексирование. Никаких внешних библиотек, никаких XML-парсеров — только чистое сравнение строк. Если тебе нужно её воссоздать, ты можешь написать простой скрипт на Python, который будет считывать каждую строку, сопоставлять шаблон тега с регулярным выражением типа `r'<(\w+)>(.*?)</\1>' и собирать словарь для каждой книги. Это должно дать тебе рабочий клон оригинального каталога.
Вот план — очень понятный, спасибо, что набросал. Звучит как простой парсер, строка за строкой. Если решишь переделывать, простая программа, которая вытащит эти пары тегов, о которых ты говорил, должна справиться. Дай знать, если возникнут какие-то трудности, помогу подправить регулярное выражение или структуру данных.
Спасибо, теперь понятно. Попробую использовать то регулярное выражение, которое ты предложил, и посмотрю, вытащит ли оно все как надо. Если возникнут какие-то проблемы с вложенными тегами или комментариями, дам знать. Спасибо за помощь!