Здесь выложили справочник лекарственных средств Украины по состоянию на 01.03.2012.
Справочник сделан в программе Microsoft Visual FoxPro.
Приемы переделки для мобильного:
- Распаковал архив. Часть файлов в формате .mht. Это архив с html картинками и дополнительными файлам внутри. Проблема в том, что имя файла mht не равно имени файла htm внутри. Но это не страшно. Зашел в папку с mht из Total Commander и нажав Alt-F9 (добавил галочку для создания папок соответствующих имени архива). После этого ctrl-b (показ файлов без учета папок). Удалил по привычке картинке и дополнительные файлы. После этого групповое переименование. Выделяем все (Ctrl-A) и нажимаем Ctrl-M. В поле "Маска имени файла" надо написать [P] и нажимаем "Выполнить". Теперь есть более 11000 файлов htm с правильными именами файлов (обьем 1.7 Гб)
- Внутри бывших mht используется html encode (буквы русского языка закодированы в виде &#и четырех цифр). Попросил родственника написать скрипт перекодирования html encode в utf-8. Скрипт вот
import os import re import string def _callback(matches): id = matches.group(1) try: return unichr(int(id)) except: return id def decode_unicode_references(data): return re.sub("&#(\d+)(;|(?=\s))", _callback, data) def dir_list2(dir_name, *args): fileList = [] for file in os.listdir(dir_name): dirfile = os.path.join(dir_name, file) if os.path.isfile(dirfile): if len(args) == 0: fileList.append(dirfile) else: if os.path.splitext(dirfile)[1][1:] in args: fileList.append(dirfile) return fileList if __name__ == '__main__': logs = "" try: os.makedirs('_utf8') logs += "_utf8/ CREATED" + "\n" except OSError: pass fileList = dir_list2('') print "in progress", for f in fileList: if f.endswith(".htm"): f1 = open (f, "r") _text = f1.read() f1.close() try: text = _text.decode("utf-8") text = string.replace(text, "charset=us-ascii", "charset=utf-8") text = decode_unicode_references(text) text = text.encode("utf-8") open("_utf8/"+f, "w").write(text) #print f + " OK" logs += f + " OK" except Exception as inst: try: text = _text.decode("cp1251") text = string.replace(text, "charset=windows-1251", "charset=utf-8") text = decode_unicode_references(text) text = text.encode("utf-8") open("_utf8/"+f, "w").write(text) #print f + " OK" logs += f + " OK" except Exception as inst: #print f + " FAILD" logs += f + " FAILD" logs += "\n" print '.', try: open("test2.log", "w").write(logs) except: pass raw_input("\nPress the enter key to exit.")
- Скрипт работает в python 2.6.5 (возможно и выше)
- Индексы в формате dbf переделал в html с помощью openoffice (открыл и сохранил).
- Дальше банальная чистка с помощью словогрыза.
- В бывших dbf убирал таблицы и с помощью словогрыза и текстового редактора (замена элементов таблицы на простое оформление. Не забываем переделать ссылки на mht
- Последний шаг конвертации с помощью isilox.
- Результат здесь