Menu

Home

Описание SharpFBTools

SharpFBTools - набор инструментов для пакетной обработки fb2 (fb2.zip) файлов электронных книг.


© Вадим Кузнецов aka DikBSD

Основные функции:

Валидатор - составляет список ошибок в файле (строка, позиция и описание);
Сортировшик - Сортировка и перемещение;
Менеджер архивов - Работа с архивами (упаковка и распаковка);
Дубликатор - Работа с копиями: поиск одинаковых книг, более новых, устаревших;
Корректировка «битых» fb2-файлов и многое другое.

Установка:

Требуется .Net Framework 3.5 или выше. Если .Net Framework - с русификатором, то сообщения об ошибках валидности файла будут на русском;
Распаковать архив с программой в нужное место.

Project Members:

Discussion

  • Sergey

    Sergey - 2018-11-28

    Здравствуйте, Вадим!
    Мне очень нравится Ваша программа!
    Не могли ли Вы для удобства использования добавить одну функцию
    и поправить кое-что.
    1 Можно ли таблице дубликатов изменить порядок колонок при загрузке (в дефолте) или же встроить возможность сохранять удобный для пользователя порядок? мне удобен порядок - Название,автор,размер,версия,валидность,путь и т. д.),
    2 В группах дубликатов сортировка по размеру происходит не корректно, если в группах есть файлы в Мб и Кб.
    3 Можно ли сделать группировку дублей одинаковых ID и одинаковых Авторов и названия книги в один проход?
    Если интересно могу выслать группу файлов-книг для тестирования. и обьяснить чего надо добится от проги
    С уважением, Сергей!

     
    • dikbsd

      dikbsd - 2018-11-28

      Добрый вечер.
      Я рад, что программа помогает людям.
      Я подумаю над тем, что вы нам написали.
      Вышлите пожалуй та, книги, о которых вы говорите с пояснениями.

       

      Last edit: dikbsd 2018-11-29
  • Sergey

    Sergey - 2018-11-29

    Здраствуйте, Вадим!
    Очень рад, и благодарен, что ответили!
    Честно не ожидал такого быстрого ответа, написал от безисходности и тщетных попыток исследовать код. Хотя мои познания не уходили дальше "Hello, World!"...
    Пробовал исследовать в Visual Studio, но у меня застревает после нажатия на "Поиск копий":

    // поиск одинаковых fb2-файлов
    private void bw_DoWork( object sender, DoWorkEventArgs e )
    _dtStart = DateTime.Now;
    cbGroupCountForList.SelectedIndex = _tscbGroupCountForList.SelectedIndex;

    • $exception {"Недопустимая операция в нескольких потоках: попытка доступа к элементу управления '' не из того потока, в котором он был создан."} System.InvalidOperationException
      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 (по версии книги)» тем, что помечает только ту книгу в Группе..."
    вместо, тем, что помечает логичней тем, что не помечает... - Я так понимаю, что помечаются те книги с которыми надо совершать какие-либо операции (удалить, переместить...)

    По поводу предыдущего сообщения,
    С Вашей программой я уже общаюсь плотно уже несколько лет и надо вспомнить какие пожелания и глюки возникали в процессе. Приходилось глаза напрягать и ручками перлопачивать много. И я , думаю, теоретически, можно кое-что поручить компьютеру.
    Собираю материал (файлы-книги) и осмысливаю "хотелки", чтоб было понятней.
    И если Вы не передумали, то вышлю. А там думайте, что можно реализвать, а что нет.
    Если трудно, ничего страшного, будем ждать кибер разума, как в фантастических книгах...
    С уважением, Сергей!

     
    • dikbsd

      dikbsd - 2018-11-29

      Насчет опечатки вы правы.
      Насчет doWork: под отладчиком программа не идет именно из-за этого места кода. Если честно, не было времени разобраться в чем там дело с потоками.

      Насчет кодинга хотелок: я не против, просто времени очень мало, и еще пишу несколько проектов, один из которых OOoFBTools (есть на этом же сайте). Поэтому быстро не получится.

       

      Last edit: dikbsd 2018-12-11
  • Sergey

    Sergey - 2018-12-04

    Здравствуйте, Вадим!
    Хотелки:

    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
    • dikbsd

      dikbsd - 2018-12-07

      Я попытаюсь разобраться с отладкой потоков - проблема не тривиальная. У
      многих она возникает...
      Скоро переведу проект из svn в git на GitHub. Если будет желание, можете
      его форкнуть, создавать свои ветки в локальном репозитории, дорабатывать
      программу, заливать эти ветки в свой форк на GitHub, и высылать мне Pul
      Requests, чтобы я мог, если код меня устроит, вливать его в основной
      проект...

       
      • Sergey

        Sergey - 2018-12-08

        Когда случится, дайте ссылку. Гляну.

         
        • dikbsd

          dikbsd - 2018-12-11

          Если не сложно - оформите свои пожелания в отдельные пункты на моем GitHub
          https://github.com/DikBSD/SharpFBTools/issues

           
  • dikbsd

    dikbsd - 2018-12-11

    Сделал миграцию кода с svn на git.

    Залил код на GitHub https://github.com/DikBSD/SharpFBTools/tree/develop.

    Для желающих поучаствовать в разработке:

    1. Форкните GitHub репозиторий SharpFBTools.
    2. Склонируйсте свой форк к себе на жесткий диск.
    3. Основная ветка для разработчиков - develop. В master ничего не вливаем и не коммитим!
    4. Свяжите свой локальный форк с моими репозиторием:
      git remote add dikbsd https://github.com/DikBSD/SharpFBTools.git
    5. От ветки develop создавайте другие ветки с фичами, багфиксами и т.д.
    6. Заливайте эти ветки в свой GitHub форк.
    7. Почаще делайте git pull ветки develop с моего GitHub репозитория в свой локальный, а потом git push origin develop в свой GitHub форк. Это поможет держать ваш форк в актуальном состоянии и предотвратит возникновение множества конфликтов слияния:
    git checkout develop
    git pull dikbsd develop
    git push --set-upstream origin develop
    
    1. Посылайте мне свои Pool Requests с сайта GitHub для рассмотрения на предмет включения вашего кода в мой репозиторий.
     

    Last edit: dikbsd 2018-12-11
  • dikbsd

    dikbsd - 2018-12-11

    Все пожелания пишите в разделе tickets
    Все дискуссии - в разделе Discussion.

     
  • Sergey

    Sergey - 2018-12-11

    Пока качаю установочный файл, странно медленно качает...
    Где находятся разделы tickets и Discussion?

     
    • dikbsd

      dikbsd - 2018-12-11

      Эти разделы (Вкладки) находятся здесь, на SourceForge. В теме SharoFBTools. Они для тех. Кто хочет оставлять сообщения здесь. А так, можно на GitHub все писать.

       
  • Sergey

    Sergey - 2018-12-11

    А я там ищу их...
    минут пять до вашего сообщения понял, что имели ввиду здесь

     

    Last edit: Sergey 2018-12-11

Log in to post a comment.