LINUX.ORG.RU

Новая программа управления fb2-библиотекой

 , , , ,


5

3

Всем привет.

Написал с нуля новую программу для хранения, поиска, чтения и конвертации больших библиотек fb2: https://bitbucket.org/tkatchev/flibby/

Умеет индексировать, проводить поиск по индексу, экспортировать, читать и конвертировать в PDF книги из fb2-архивов.

(Если кто-то помнит myRuLib - то тут примерно то же самое, только проще, функциональнее, быстрее и в консоли.)

Надеюсь, кому-то будет полезно.



Последнее исправление: tkatchev (всего исправлений: 1)

Надеюсь, кому-то будет полезно.

Скрины добавь в тему, или хотя бы «About».

anonymous
()

читать

в консоли

НУЖНО!

and a modern version of gcc

Эээ… А конкретнее?

Вот у меня есть clang 8.0.1:

 % cc --version
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
Target: x86_64-unknown-freebsd12.1
Thread model: posix
InstalledDir: /usr/bin

Так что щаз попробую…

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Эээ… А конкретнее?

g++ -std=c++17 -O3 -I/usr/include/libxml2 flibby.cc cairo.cc -lxml2 -larchive -lxapian `pkg-config --cflags --libs pangocairo` -o flibby
anonymous
()
Ответ на: комментарий от anonymous

Я вижу, но я не в курсе какой из gcc поддерживает c++17. У меня есть установленный gcc9, пытаюсь собрать им:

/usr/local/bin/ld: /tmp/ccWM3QjK.o: undefined reference to symbol '_ZNSt13runtime_errorD1Ev'
/usr/local/bin/ld: /usr/lib/libc++.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

@tkatchev, не прибивай, пожалуйста, всё к Linux. ☺

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

пытаюсь собрать им:

Э. А ежели поменять (ну так, чисто для спортивного интереса) на -std=c++11?

anonymous
()
Ответ на: комментарий от mord0d

-lpthread?

У меня с gcc9 всё намного хуже, говорит что мол xapian был собран clang’ом, поэтому «If linking fails due to missing symbols, this is probably the reason why.», что собственно и происходит.

Попытки собрать c++ (FreeBSD clang version 11.0.0 (git@github.com:llvm/llvm-project.git llvmorg-11.0.0-rc2-0-g414f32a9e86)) выдают ошибки.

xtouqh
()
Ответ на: комментарий от xtouqh

говорит что мол xapian был собран clang’ом, поэтому «If linking fails due to missing symbols, this is probably the reason why.», что собственно и происходит.

Ага, увидел.

mord0d ★★★★★
()
Ответ на: комментарий от xtouqh

Проверю используя clang.

На FreeBSD проверить пока возможности нет, но ничего Линуско-специфического стараюсь не использовать.

tkatchev
() автор топика
Ответ на: комментарий от tkatchev

На FreeBSD проверить пока возможности нет

Я заинтересован, потому можешь смело пинать меня.

но ничего Линуско-специфического стараюсь не использовать.

Ага… GNU Make, GNU Compiler Collection. ☺ Но это я так, придираюсь. Лишь бы от systemd не зависело, и ладно. ☺

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от xtouqh

Попытки собрать c++ (FreeBSD clang version 11.0.0 (git@github.com:llvm/llvm-project.git llvmorg-11.0.0-rc2-0-g414f32a9e86)) выдают ошибки.

Исправил сборку для clang. По крайней мере у меня ошибки не выдает теперь. Проверьте, пожалуйста.

tkatchev
() автор топика
Ответ на: комментарий от tkatchev

Собирается с одной поправочкой:

-I/usr/include/libxml2

В FreeBSD это будет -I/usr/local/include/libxml2, потому резоннее отдать это на откуп pkg-config:

c++ -std=c++17 -O3 \
	flibby.cc cairo.cc \
	-larchive \
	`pkg-config --cflags --libs libxml-2.0 xapian-core pangocairo` \
	-o flibby
mord0d ★★★★★
()
Ответ на: комментарий от tkatchev

Я поправил.

Забыл убрать -I/usr/include/libxml2. ☺

---

Проверил, читалка работает. Если бы оно ещё и строку запоминало (что с less невозможно, увы), цены бы тулзе не было, учитывая смерть fbless, и отсутствию каких-либо альтернатив, твоя программа — единственный способ читать fb2 в терминале, так что я дождусь тега и запилю мейкфайл для портов (и может быть когда-нибудь пропихну его в апстрим fbsd). ☺

Благодарю. :3

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

какой из gcc поддерживает c++17

GCC 8 (>=2019: Debian 10, Ubuntu 20.04, Mageia 7, ALT 9)

artenaki
()
Ответ на: комментарий от anonymous

Без разницы.

Есть разница. dash я ещё приму как POSIX-compatible, но bash через симлинк в /bin/sh (что актуально только для Linux) позволяет башизмы.

mord0d ★★★★★
()
Ответ на: комментарий от xtouqh

В основное дерево портов. Не в базовую же систему. ☺

Но если я прочитаю политики и меня что-то не устроит, запилю свой оверлей (порты поддерживают оверлеи с сентября прошлого года, в poudriere-devel уже работает), а с апстримом связываться не стану.

mord0d ★★★★★
()
Ответ на: комментарий от ptah_alexs

Как у этой программы с архивами zip больше 4 гигов?

Специально не тестировал, но вроде все работает.

tkatchev
() автор топика
Ответ на: комментарий от ptah_alexs

Как у этой программы с архивами zip больше 4 гигов?

Оно ж юзает libarchive для, так что если у libarchive проблем нет, то и у сабжа их быть не должно.

mord0d ★★★★★
()
Ответ на: комментарий от ptah_alexs

Как у этой программы с архивами zip больше 4 гигов?

Это ж сколько книг надо в такой архив упрятать? И как данная прога будет работать с таким архивом? Она поймёт, что в архиве дофига книг?

anonymous
()
Ответ на: комментарий от anonymous

Да, поймет. Предварительно создается поисковый индекс по архивам, дальше можно легким движением руки искать и извлекать/читать книги из архивов.

tkatchev
() автор топика

Проверял на полном архиве флибусты или либрусека, переваривает их?

Плюс ещё бы добавить индексацию txt doc rtf pdf и djvu, у двух последних конечно при наличии текстового слоя

anonymous
()
Ответ на: комментарий от anonymous

Проверял на полном архиве флибусты или либрусека, переваривает их?

Да, переваривает.

tkatchev
() автор топика
Ответ на: комментарий от mord0d

dash и есть POSIX shell. Никакого сферического в вакууме позикс-шелла не существует, везде свои реализации.

anonymous
()
Ответ на: комментарий от mord0d

Да, там своя реализация. Как и dash является ещё одной реализацией POSIX shell. И все они - УГ в сравнении с абсолютно любой альтернативой :)

anonymous
()
Ответ на: комментарий от anonymous

И все они - УГ в сравнении с абсолютно любой альтернативой

Которые несовместимы между собой. А вот в своих POSIX-compatible скриптах я уверен, они гарантированно будут работать и в dash (но толку на Linux от них не будет, ибо FreeBSD-специфичное).

mord0d ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Что там автоматизировать? Получить cflags для нужных либ можно напрямую пнув pkg-config, скормить их c++/g++ и получить единственный бинарь. Всё.

mord0d ★★★★★
()
30 октября 2020 г.

Огромное тебе спасибо, мил-человек!
Доберусь до машины с fb2-zip-архивом и компилятором — обязательно попробую!
// Почему-то в сентябре я эту новость не заметил…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от anonymous

На заметку обладателям старых систем

Э. А ежели поменять (ну так, чисто для спортивного интереса) на -std=c++11?

archive.h: In function ‘void write_zip(const string&, const string&, const string&, FUNC)’:
archive.h:227:14: error: expected unqualified-id before ‘[’ token
         auto [ filename, data ] = func(n);
              ^
archive.h:235:39: error: ‘data’ was not declared in this scope
         archive_entry_set_size(entry, data.size());
                                       ^~~~

Но у меня gcc реально древний, да (6.3.0). А на машинку с gcc поновее тестовый архив с книгами ещё надо будет перенести. Обязательно потыкаю после переноса, программа очень нужная…

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

С таким тоже работал, помню.

Именно, что работал. Так что место древних вовсе не твоё, а моё. И для меня ты такой же «новодел», как и все остальные. На заметочку, gcc 4.7.2 == Debian Wheezy. Древний, говоришь? Дату 11-го релиза напомнить?

anonymous
()
Ответ на: комментарий от FortyTwo

Но альтернативы всегда хорошо!

Да. Но был бы на верблюде, цены бы ему не было! Сколько упущено из-за всяких «модностей»!

anonymous
()
Ответ на: комментарий от hobbit

На перле?

А в чём вопрос? Или какие то возражения? Может претензии?

anonymous
()
Ответ на: комментарий от FortyTwo

на третьем пашет.

Его выпилили из портов по причине python27, обратно не впилили.

Поделишься патчами?

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.