Loading...
Error

К вопросу об автоматическом разборе и упорядочивании большого кол-ва литературы

Ответить на тему

 | 

 
Автор Сообщение

Старпом

К вопросу об автоматическом разборе и упорядочивании большого кол-ва литературы


Зачастую приходится разгребать массу технической литературы, при ручном методе обработки отнимает уйму времени,
многие файлы имеют ни о чем ни говорящие имена, бывает неправильное расширение и сами они бывают битыми.
предлагается некоторый набор софта для решения этих пороблем,
1)
прежде всего надо выяснить правильное ли расширение стоит у файла,
есть спец. плагин Total commander для проверки расширений у файлов по их сигнатурам WDX TrID:
http://en.totalcmd.pl/download/wdx/fls/WDX_TrID
он не распознает все расширения на свете, но необходимый минимум - pdf\djvu\chm\doc\rtf распознает

если у вас повально стоят неправильно расширения, то тут может пригодится и опция группового переименования TC: в поле Маска имени прописывается [N].[=trid.Match 0.Extension]
в поле расширение -ничего

в ряде случаев так же поможет при определении битый файл или нет -если начало файла занято нулями, то расширение плагином определено не будет

2) Проверка файла на битость:
если часть файла забита нулями, то тут поможет скрипт (by msink)
ftp://free-books.dontexist.com/genesis/!%F1%EA%F0%E...%EB%EA%E8/!SOFT/!badfile%20checker%20(Msink)/ck-1.zip

он проверяет то, чтобы начало файла не было занято нулями, и сегменты файла заданного размера не были заняты нулями. размер сегмента файла выставляется вручную в файле ck.bat<div class="c-wrap"><div class="c-head"><b>Код:</b></div><div class="c-body">@echo off
for /r %%F in (*.*) do call :test "%%F"
goto :EOF
:test
echo Checking %~nx1 ...
ckzero --sector=1024 %1 >nul 2>&1
if not ERRORLEVEL 1 exit /b
echo File %1 is broken! >> bad.txt
rem òóò ìîæíî âûïîëíèòü ëþáûå äðóãèå êîìàíäû äëÿ ôàéëà %1</div></div>в приведенном примере если сегмент файла в 1024 байта занят нулями то выводит такой файл в список bad.txt
для ряда типов файлов нули совершенно не допустимы - для djvu файлов, некоторых типов pdf (картиночные),
архивы с ненулевым сжатием, сжтые типы каринок - Jpeg, если такие файлы скрипт вывел в список то однозначно эти файлы битые

3) Распаковка архивов:
есть 2 программы для групповой распаковки с заданными параметрами:
а) скрипт (by msink)
ftp://free-books.dontexist.com/genesis/!%F1%EA%F0%E...%F9%E0%EB%EA%E8/!SOFT/%F0%E0%F1%EF%E0%EA%EE%E2%F9%E8%EA%E8(Msink)/3(+%E7%E8%EF+%EC%ED%EE%E3%EE%F2%EE%EC%ED%FB%E5/

автоматически распаковывает rar\zip архивы содержащие 1 файл (+ файлы исключения если есть)
если архивы запаролены, то вводит пароль - он прописывается в файле unp_all.bat<div class="c-wrap"><div class="c-head"><b>Код:</b></div><div class="c-body">@echo off
set PASSWORD=infanata
for /r %%A in (*.rar *.zip *.7z) do (
    cd %%~pA || exit /b 1
    set _S_=""
    for /f "tokens=*" %%S in ('echo.^|%~dp0\7z.exe l -p%PASSWORD% -scsWIN -xr@"%~dp0\exclude.txt" "%%~nxA"') do (
        set _S_=%%S

........</div></div>так же работает с многотомными архивами - в конце имени файла должно быть прописано .partN.rar

в файле exclude.txt прописываются файлы-исключения - многие сайты кладут в архив с книжкой различные рекламные файлы, называются они как правило одинаково, поэтому такие файлы при распаковке архива скрипт удаляет, а саму распакованную книгу переименовывает так же как назывался архив, сам архив так же удаляет

в случае если попадается архив с другим паролем, битый, содержащий больше 1 файла (не считая перечисленного в exclude.txt ) такой архив пропускается - переходит к другому
*в пути к папке не должно быть пробелов
б) есть и более продвинутая программа : processing archive (by Spacelib)
http://spacelib.narod.ru/Download/processingarchive.rar

функции те же, что и у вышеописанного скрпта,

но так же можно задавать фильтр на имя файла(ов) в архиве, указывать папки для перемещения архивов, которые обработать не удалось - многотомные, запароленные, битые,

приписывать к именам распакованных файлов имя архива, где они находились (опция "присваивать новые имена")

4) после этого можно проверить имеющийся у вас каталог книг на повторы по хешу- программ для этого масса
предпочитаю использовать программу clonespy http://www.clonespy.com/
там есть полезная опция - оставлять файлы с наиболее длинными именами файлов(путем к файлу)

5) далее можно привязать полученные файлы к существующим он-лайн библиотекам или каталогам по контрольной сумме - хешу
это проекты Library genesis и Spacelib
а) для проекта Spacelib - есть база имен+ CRC32 хешей
http://spacelib.narod.ru/Download/allbook.rar
и есть http://spacelib.narod.ru/Download/FindNameDocs.rar

Цитата:

Сортировка происходит путем переноса
идентифицированных файлов в папки с именами взятым из базы
идентификации или путем изменения имени файла на новое. База данных
идентификации это простой текстовый файл, в котором хранится
информация о ранее идентифицированных файлах. Формат данного
текстового файла следующий:

// CRC32-контрольная сумма файла документа длиной 11 символов ;
размер файла документа в байтах длиной 12 символов ; имя документа
до конца строки.
Пример:
04227227224;000006445232;ИСКУССТВО ПРОГРАММИРОВАНИЯ. КНУТ
04235570299;000003018508;СИСТЕМНЫЙ АДМИНИСТРАТОР
04273634548;000004054888;ADVANCED SIGNAL PROCESSING HANDBOOK

CRC32 и длина файла хранятся в символьном виде и слева до своего
размера заполняются символом 0.

Для автоматической сортировки выберите закладку «ПОИСК». На ней
задайте путь к файлам, которые хотите идентифицировать. Например:
J:\skynet\ok у каждого он будет своим. Укажите файл(ы) Базы
идентификации (например у меня он:
D:\prg\FindDocs\вся_библиотека.txt). Выбираем папку, куда будем
переносить идентифицированные файлы, далее модель сортировки. Я
рекомендую значение по умолчанию, т.е. переносить файлы в отдельные
папки - имена которых взяты из Базы идентификации. Если выбран
CheckBox «Диалог при повторе Crc32+Size» ,то когда в Базе
существуют несколько названий документа для одного и того же файла,
то во время работы программы будет появляться диалог предлагающий
выбрать с вашей точки зрения лучшее название.

Закладка «Экспорт в файл» предназначена для тех, кто хочет
поделиться с другими своими результатами РУЧНОЙ сортировки файлов.
Допустим, с помощью этой программы вы смогли в автоматическом
режиме отсортировать часть файлов. Но у вас остались еще файлы,
информации о которых нет в Базе идентификации. И вы как обычно
запускаете программу просмотра данных файлов. Те которые вам
нужны, вы сохраните в папку с осмысленным названием, например:
файлик размером 11 249 536 байт и именем
7000_d05c0*****_209.123.181.125_196856.rar вы перенесли в папку
«V:\Софт_со_спутника\SkyNet_MonsterPack. 13 софт для рыбалки».
Здесь, как вы понимаете осмысленное название, которое сохранится в
базе будет «SkyNet_MonsterPack.13 софт для рыбалки», а
«V:\Софт_со_спутника\» это КОРНЕВАЯ папка вашей библиотеки, таких
папок может быть много. Например, у меня они такие:
D:\библиотека\ журналы
D:\библиотека\ книги
D:\библиотека\ книги интересные
D:\библиотека\ Софт_со_спутника
Для Экспорта вы задаете эти корневые папки и имя файла куда
выгружаете данные. Например:
D:\prg\FindDocs\вся_библиотека_и_Софт.txt. Все, уже можно нажимать
кнопку «Начать выгрузку». Информация о ВСЕХ файлах будет записана
в файл вся_библиотека_и_Софт.txt. Если вы хотите выгружать только
файлы, отсортированные вами, то в окошке «Файлы с инф. о ранее
выгруженных документах (файлах) библиотеки»
укажите имя(имена) файла(файлов) Базы идентификации, где хранится
информации о файлах которые не будут включаться в выгрузку.
Полученный текстовый файл надо архивировать и слать мне на мыло
(spacelib собака narod.ru). По мере накопления таких файлов я их буду
объединять и выкладывать в виде добавок к основной база, а потом и
включать в нее.
Хочу обратить внимание на CheckBox «Диалог при повторе
Crc32+Size». Появление этого диалога мера вынужденная , т.к. в общем
случае компьютер не человек и оценить какое имя для файла лучше из
двух и более возможных не может. В идеале в выверенной Базе
идентификации таких дублей быть не должно, но в жизни все иначе.
б) Для проекта Library Genesis:
предаставляет из себя базу данных с библиографической информацией+ комплект хешей
+ собственно сама колекция книг - имена файлов =MD5 хеши этих файлов

библиоттекуу предполагается использовать через web интрерфейс

для подключения уже имеющихся книг - поиска книг по мд5 хешу и переименованию следует использовать программу paranoia 0.1rc (by Atomic XP)

http://extracoder.com/download/paranoja/paranoja.0.1.beta.7z

Цитата:

Как это работает...
Идея и реализация просты до невозможности. Программа сканирует указанную папку на предмет поиска абсолютно всех файлов, без какой-либо фильтрации по расширениями файлов или разархивирования, попутно залезая во все подпапки.

В случае нахождения в базе данных файлов текущего размера, она вычисляет контрольную сумму для этого файла. Если в описаниях есть файл с текущей контрольной суммой, то он копируется в источник автоматически переименовываясь в MD5. В случае, если в папке приёмнике (в программе ошибка в описании) уже есть такой файл, он перезаписывается.

Как это использовать...
Просканируйте свои диски данной программой, создав единственную папку приёмник, например, genesis_torrent. Напоминаю, если файлы книг в архивах, программа бессильна, потому проводите разархивирование вручную

Требования...
Windows+.NET Framework 1.1, под Mono работать не будет.
чтобы использовать полученное в итоге структуру надо скачать код сайта: http://gen.lib.rus.ec/files/gen.lib.rus.ec_v16_dist.7z
и базу: http://gen.lib.rus.ec/files/bookwarrior.updated%2020090705%200150.rar
инструкция по установке:

Цитата:

LOCAL INSTALLATION INSTRUCTIONS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. Install:
a) Apache HTTP-Server
b) PHP (asks for Apache location, so should be installed after it)
c) MySQL Server
d) MySQL GUI Tools (we need MySQL Administrator)

2. Use MySQL Administrator / Restore / Open Backup File to import
bookwarrior.updated*.sql database dump.

3. Copy contents of this folder to your WWW-folder.

4. Modify confdb.php to match your MySQL user name and password (replace
'bookuser' and 'bookpass' with your own access details).

That's it! Now start Apache, visit your local WWW-page (http://127.0.0.1/)
and enjoy reading!

March 4, 2009

---
bookwarrior
если нет желания ставить веб-сервер,
то сначала можно прогнать вашу коллекцию через paranoia 0.1rc
потом запустить *.bat для переименования: MD5=имя файла.ext
ftp://free-books.dontexist.com/genesis/!%F1%EA%F0%E...%EF%EA%E0%F5.bat (кодировка DOS!)
поскольку в хозяйстве имена файлов, которые делает paranoia 0.1rc не пригодны
6)
если в итоге всего этого остался некоторый массив неразобранной литературы, то можно использовать программу FindISBN (в связке с frtotxt и Fine reader8 (так же есть вариант с использованием Cuneiform, но она хуже распознает)):
http://rulib.narod.ru/downloads/FindISBN.part1.rar
http://rulib.narod.ru/downloads/FindISBN.part2.rar
http://spacelib.narod.ru/Download/frtotxt.rar
Осуществляетяся поиск по текстовому слою (если есть, или OCR если нет) первых или последних страниц книги
номера ISBN с последующей их сверкой с базой ISBN интрернет-магазинов или каталогов гос. библиотек

подробное описание: http://rulib.narod.ru/findisbn.html

Замечание: у меня операция ассоциирования frtоtxt c *.htm файлами почему то не проходит, тогда идем в Панель управления - свойства папки - типы файлов и указываем программу для их открытия вручную

надо так же помнить с какого года в книгах стал указываться ISBN -

Цитата:

Стандарт был разработан в Великобритании в 1966 году на базе 9-значного Стандартного номера книг (англ. Standard Book Numbering (SBN) code) Гордона Фостера (англ. Gordon Foster). В 1970 году с небольшим изменением был принят как международный стандарт ISO 2108 . С 1 января 2007 года введен новый стандарт ISBN — 13-значный, совпадающий со штрихкодом. Существует также подобный стандарт ISSN (International Standard Serial Number) для периодических изданий. В России ISBN используется с 1987 года[1], в Белоруссии — с 1993 года
т.е нет смысла использовать эту программу для книг старее указанных годов

для обработки библиографической информации полученной Findisbn и хранящейся в ее служебных файлах можно использовать скрипт от tigranav (должен быть установлен python)

http://blog.tigranav.ru/files/findISBN/parseISBN.v1.pl

Цитата:

Те кто увлекается собиранием книжек наверняка сталкивались с программой findISBN, которая ищет в книжках ISBN номера, а также название книги по ним в различных веб-библиотеках. В результате ее работы рядо с книжкой появляются файлы с номерами ISBN и списком найденых названий.

Для того чтобы это собрать в одном CSV файле необходимую информацию и служит скрипт.
Его алгоритм.

Ищет все файлы с раширением ISBN, читает первые 4 сточки их него, потом берет 4 сточки из файла с расширением NameBook для этой книжки и первую строчку их файла txt для этой книжки. Из полученных данных форует сроку с разделитлем и пишет ее в файл.

В последствии этот файл можно где-нибудь обработать.
7)
если в итоге остались еще книги, которые не были идентифицированы ни по каталогам хешей, ни по ISBN,
то для более удобного ручного переименования\сортировки можно использовать программу AllDocView (by Spacelib)
http://spacelib.narod.ru/Download/alldocview.rar
подробное описание: http://spacelib.narod.ru/p_adocv.html

BG 02/08/2009
Показать сообщения:    
Ответить на тему