SharpFBTools - набор инструментов для пакетной обработки fb2 (fb2.zip) файлов электронных книг.
© Вадим Кузнецов aka DikBSD
Валидатор - составляет список ошибок в файле (строка, позиция и описание);
Сортировшик - Сортировка и перемещение;
Менеджер архивов - Работа с архивами (упаковка и распаковка);
Дубликатор - Работа с копиями: поиск одинаковых книг, более новых, устаревших;
Корректировка «битых» fb2-файлов и многое другое.
Требуется .Net Framework 3.5 или выше. Если .Net Framework - с русификатором, то сообщения об ошибках валидности файла будут на русском;
Распаковать архив с программой в нужное место.
Здравствуйте, Вадим!
Мне очень нравится Ваша программа!
Не могли ли Вы для удобства использования добавить одну функцию
и поправить кое-что.
1 Можно ли таблице дубликатов изменить порядок колонок при загрузке (в дефолте) или же встроить возможность сохранять удобный для пользователя порядок? мне удобен порядок - Название,автор,размер,версия,валидность,путь и т. д.),
2 В группах дубликатов сортировка по размеру происходит не корректно, если в группах есть файлы в Мб и Кб.
3 Можно ли сделать группировку дублей одинаковых ID и одинаковых Авторов и названия книги в один проход?
Если интересно могу выслать группу файлов-книг для тестирования. и обьяснить чего надо добится от проги
С уважением, Сергей!
Добрый вечер.
Я рад, что программа помогает людям.
Я подумаю над тем, что вы нам написали.
Вышлите пожалуй та, книги, о которых вы говорите с пояснениями.
Last edit: dikbsd 2018-11-29
Здраствуйте, Вадим!
Очень рад, и благодарен, что ответили!
Честно не ожидал такого быстрого ответа, написал от безисходности и тщетных попыток исследовать код. Хотя мои познания не уходили дальше "Hello, World!"...
Пробовал исследовать в Visual Studio, но у меня застревает после нажатия на "Поиск копий":
// поиск одинаковых fb2-файлов
private void bw_DoWork( object sender, DoWorkEventArgs e )
_dtStart = DateTime.Now;
cbGroupCountForList.SelectedIndex = _tscbGroupCountForList.SelectedIndex;
System.InvalidOperationException
HResult=0x80131509
Сообщение = Недопустимая операция в нескольких потоках: попытка доступа к элементу управления '' не из того потока, в котором он был создан.
Источник = System.Windows.Forms
Трассировка стека:
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.ComboBox.get_SelectedIndex()
at Core.Duplicator.CompareForm.bw_DoWork(Object sender, DoWorkEventArgs e) in D:\Progect_VS\SharpFBTools-4.41-src\Source\Core\Duplicator\CompareForm.cs:line 411
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
Теперь к делу. Вопрос:
В справке Change.rtf к программе в версии SharpFBTools-4.27 текст:
"...Дубликатор:
+ Новый инструмент Анализатора книг в одной Группе или сразу во всех Группах копий: Пометить «Все ‘старые’ fb2 (по версии книги и невалидности)». Отличается от инструмента «Все ‘старые’ fb2 (по версии книги)» тем, что помечает только ту книгу в Группе, которая не только имеет максимальную версию, но и является валидной. Если же в Группе копий все книги – невалидные, то помечаются для удаления все книги, кроме книги с максимальной версией (тэг version)."
Предполагаю опечатку в предложении: "Отличается от инструмента «Все ‘старые’ fb2 (по версии книги)» тем, что помечает только ту книгу в Группе..."
вместо, тем, что помечает логичней тем, что не помечает... - Я так понимаю, что помечаются те книги с которыми надо совершать какие-либо операции (удалить, переместить...)
По поводу предыдущего сообщения,
С Вашей программой я уже общаюсь плотно уже несколько лет и надо вспомнить какие пожелания и глюки возникали в процессе. Приходилось глаза напрягать и ручками перлопачивать много. И я , думаю, теоретически, можно кое-что поручить компьютеру.
Собираю материал (файлы-книги) и осмысливаю "хотелки", чтоб было понятней.
И если Вы не передумали, то вышлю. А там думайте, что можно реализвать, а что нет.
Если трудно, ничего страшного, будем ждать кибер разума, как в фантастических книгах...
С уважением, Сергей!
Насчет опечатки вы правы.
Насчет doWork: под отладчиком программа не идет именно из-за этого места кода. Если честно, не было времени разобраться в чем там дело с потоками.
Насчет кодинга хотелок: я не против, просто времени очень мало, и еще пишу несколько проектов, один из которых OOoFBTools (есть на этом же сайте). Поэтому быстро не получится.
Last edit: dikbsd 2018-12-11
Здравствуйте, Вадим!
Хотелки:
1 Хорошо бы разобраться, в чем дело с потоками Появится возможность отладки и эксперементов, и многие вопросы отпадут. Мне не по зубам...
2 Неправильная сортировка по размеру - сортирует по первой цифре числа независимо в Mb или Kb. И в окне Коректора и Дубликатора . (два дополнительных значения после запятой с округлением - супер, для точности оценки -замечена зависимость размера и количество страниц при открытии в читалке). Прилагаю группу файлов "Size" для наглядности. https://yadi.sk/d/iaJ6FogVK-CLEg там посередине есть книга 3.63 Mb, как не нажимай на сортировку в первую строчку она не становится.
3 В Дубликаторе в данных для сравнения, неплохо бы добавить пункты :
5 Одинаковые ID и Название Книги (исключаются попадания в группы c одинаковыми ID(или совсем без него) книг с разными названиями) При отборе только по ID книги попадают в одну группу, использовать инструмент анализа затруднительно, а по ID и названию разделяются по группам. По одинаковым ID и названию можно отловить одинаковые книги где один и тот же автор представлен псевдонимом или измененными фамилиями и именами
6 Одинаковые книга(название и автор(ы)) и автор документа (корректней сравнивать по версии). В группы отбора только по ID попадают по несколько версий книг разных авторов документа и когда программа помечает все версии меньше одной самой большей по значению, то она не факт лучше ниже по версии другого.
4 В таблице - возможность сохранить удобный для пользователя порядок столбцов. Столбцы характеристик, необходимые для сравнения иметь рядом удобней. Для меня удобен порядок - (Название,автор,размер,версия,валидность,путь и т. д.), В VS пытался менять, не получается, а отладка не работает(см. выше). Сейчас при перезагрузке, порядок сбрасывается, снова приходится перекидывать, настраивать ширину...
5 В окне Корректировка при Автокоррикторивке по списку, натыкаясь на ошибку в структуре определенных файлов, прога останавливается ожидая выхода(прилагаю скрины ошибок и сами файлы с ошибками на которых спотыкается программа). Ошибки в файлах не важно. Хорошо бы не останавливаться, а переходить на следующий по списку файл. Потом разбираться с ошибками.
6 В окне корректора возможность вывести на экран и файлы в подппапках. Для пакетной обработки всех файлов (автокррекция и др.) приходится собирать(переносить) в одну временную папку, а затем снова раскидывать.
Анализ в группах: как я вибираю книгу в группе
Разделяю (визуально) книги в группе с разными обложками по группам (по наблюдению - можно группировать по автору документа, как правило, изображения обложки у одинаковых книг(название и автор(ы)) у удного и того же автора документа одинаковые). В группе с одинаковыми обложками(авт. документа) оцениваю по наполненности текста (открываю в читалке AllReader и сравниваю по количеству страниц в книге) выбираю, где больше
Вот тут вопрос к знатокам структуры Fb2 книг. Как можно не прочитав книгу оценить и выбрать по наполненности (хотя бы приблизительно)текста без картинок. понимаю что много факторов - вычитка, ошибки, наличие и количество картинок... Часто приходилось выбирать по версии меньше из-за большой разности по размеру файла(конечно разархивированного) - количества страниц в читалке. Например по количеству абзацев в секцях body>..........body, посчитав количество "<p" в отрезках.
Хотелось бы поручить это компьютеру
Мне бы первый пункт хотя бы...
С уважением, Сергей!
Last edit: Sergey 2018-12-04
Я попытаюсь разобраться с отладкой потоков - проблема не тривиальная. У
многих она возникает...
Скоро переведу проект из svn в git на GitHub. Если будет желание, можете
его форкнуть, создавать свои ветки в локальном репозитории, дорабатывать
программу, заливать эти ветки в свой форк на GitHub, и высылать мне Pul
Requests, чтобы я мог, если код меня устроит, вливать его в основной
проект...
Когда случится, дайте ссылку. Гляну.
Если не сложно - оформите свои пожелания в отдельные пункты на моем GitHub
https://github.com/DikBSD/SharpFBTools/issues
Сделал миграцию кода с svn на git.
Залил код на GitHub https://github.com/DikBSD/SharpFBTools/tree/develop.
Для желающих поучаствовать в разработке:
git remote add dikbsd https://github.com/DikBSD/SharpFBTools.gitLast edit: dikbsd 2018-12-11
Все пожелания пишите в разделе tickets
Все дискуссии - в разделе Discussion.
Пока качаю установочный файл, странно медленно качает...
Где находятся разделы tickets и Discussion?
Эти разделы (Вкладки) находятся здесь, на SourceForge. В теме SharoFBTools. Они для тех. Кто хочет оставлять сообщения здесь. А так, можно на GitHub все писать.
А я там ищу их...
минут пять до вашего сообщения понял, что имели ввиду здесь
Last edit: Sergey 2018-12-11