ещё один каталогизатор fb2

Linux. GPL. Python + Qt4.5 + sqlite3. Под оригинальным названием PyHomeLib.
http://github.com/md2/pyhomelib
Для работы нужен Qt не ниже 4.5 (у меня 4.5.3), python-qt4 тоже поновее (у меня 4.6).
$ python pyhomelib.py [опциональный/путь/к/базе]

Комментарии

Аватар пользователя Ян Злобин

Прикольно :-)

Что делает, что умеет, напишите, пожалуйста.

whistle написал:
Что делает, что умеет, напишите, пожалуйста.

Добавляет .fb2 из указанных директорий в базу, после позволяет всячески искать,
можно создавать различные группы книг, например "Избранное", "К прочтению",
позволяет выполнить из всплывающего меню практически любое действие с файлом книги,
в настройках указываются названия действий и командные строки, по умолчанию там
запуск FBReader, Okular, просмотр информации о файле, валидация.
Аватар пользователя soshial

добавил в /soft.
спасибо.

обидно в дебиане qt 4.4.3-1 (((

Обнови)

Аватар пользователя dixi49

Я давно в интернете но такой удивительный бардак вижу впервые!Не могу даже зарегистрироваться!Что с автоматикой?Надо же за ней следить!!!

Пробую запустить под виндой. Python 2.6. PyQT4, PySQLite и QT (2009.04) скачал с офсайтов, exapl'ы работают, а каталогизатор не хочет, сообщая, что "No module named ui_statisticsdialog".

Там для интерфейса этого окна автор забыл сгенерировать соответствующий файл с классом.
Можно сделать так (находясь в каталоге с программой):
pyuic4 statisticsdialog.ui > ui_statisticsdialog.py

У меня OpenSuse 11.1, pyuic4 входит в пакет python-qt4-devel, в других дистрибутивах может и отличаться.

Сама программа вроде работает, но проверил только на небольшом каталоге с парой десятков файлов fb2. Файлы с кириллицей в имени или пути не открывает - имя в неправильной кодировке (у меня в системе UTF-8, естественно).

На всякий случай приложил файл ui_statisticsdialog.py, если вдруг кому неохота ставить кучу devel-пакетов. Файлы с расширеним PY тут почему-то заливать нельзя, поэтому поменял его на TXT, потом поменяйте обратно.

khrenj написал:
Файлы с кириллицей в имени или пути не открывает - имя в неправильной кодировке (у меня в системе UTF-8, естественно).

Посмотрим, спасибо.

khrenj написал:
Файлы с кириллицей в имени или пути не открывает - имя в неправильной кодировке (у меня в системе UTF-8, естественно).

Поправил.

Для поклонников debian stable теперь есть патч. Делаем так:
pyhomelib$ patch -Np1 < pyhomelib-legacy.patch
Проверил на свежей установке Debian Lenny, вроде всё работает.

khrenj написал:
Там для интерфейса этого окна автор забыл сгенерировать соответствующий файл с классом.

Сгенерировать не забыл, а вот добавить в репозиторий таки да. Поправим, спасибо.
Аватар пользователя Psixo

Цитата:
. Python + Qt4.5 + sqlite3

Беспокоит как это будет работать на старых машинах. Такая связка не отличается хорошей производительностью =\

Psixo написал:
Беспокоит как это будет работать на старых машинах. Такая связка не отличается хорошей производительностью =\

Главное, у меня работает :))
Ну, может кто-нибудь перепишет на C++, ничего специфически питоновского там нет, всё через Qt. От самого Qt избавиться сложнее, проще с нуля.

Жаль что нет под Debian Lenny. Обновлять не хочу, так как жаль систему)

Малолетний Д. написал:
Linux. GPL. Python + Qt4.5 + sqlite3.

А не сможет ли уважаемый автор собрать это под maemo 5 (N900). Полноценный каталогизатор в кармане сильно бы облегчил жизнь.

haliava написал:
А не сможет ли уважаемый автор собрать это под maemo 5 (N900). Полноценный каталогизатор в кармане сильно бы облегчил жизнь.

Нет. Надо искать специалиста.

А нельзя ли научить программу работать с файлами *.fb2.zip?

Mr.Marmaduke написал:
А нельзя ли научить программу работать с файлами *.fb2.zip?

Научить-то можно, разумеется, но есть ли в этом необходимость?
Аватар пользователя burenkas

у меня ошибка: ImportError: cannot import name QtSql
все необходимые пакеты стоят, не подскажите в чем может быть дело?

burenkas написал:
у меня ошибка: ImportError: cannot import name QtSql
все необходимые пакеты стоят, не подскажите в чем может быть дело?

Пакеты libqt4-sql, libqt4-sql-sqlite установлены? Это если у Вас Debian, в других дистрибутивах могут называться по-другому.
Аватар пользователя burenkas

Малолетний Д. написал:

Пакеты libqt4-sql, libqt4-sql-sqlite установлены? Это если у Вас Debian, в других дистрибутивах могут называться по-другому.

проверила, установлены:
burenka@crazy-nout:~$ dpkg -l|grep libqt4-sql
ii libqt4-sql 4.5.3really4.5.2-0ubuntu1 Qt 4 SQL module
ii libqt4-sql-sqlite 4.5.3really4.5.2-0ubuntu1 Qt 4 SQLite 3 database driver

burenkas написал:

проверила, установлены:

python-qt4-sql?
Аватар пользователя burenkas

Малолетний Д. написал:

python-qt4-sql?

все получилось. спасибо.
пакет, действительно, не стоял.

Только сейчас снова добрался до этой программы. Ещё предложение: сделать, чтоб искало (название, автора и т.п.) без учёта регистра и по подстроке, хотя бы опционально. Сейчас оно ищет с учётом регистра и по подстроке только сначала слова, что довольно неудобно.

khrenj написал:
чтоб искало (название, автора и т.п.) без учёта регистра

Уже есть, нужно только собрать расширение на C:
$ make ext
или, чтобы ещё игнорировало разницу между "ё" и "е":
$ make ext yo=1
(Нужен gcc) UPD: ...а также libicu-dev, libsqlite3-dev.
Цитата:
и по подстроке, хотя бы опционально.

Тоже можно. Просто набираете в начале строки знак процента (%).

Спасибо, "%" работает, "ё" не проверял, нет таких книг и авторов, а вот регистронезависимый поиск - всё равно не работает. make ext yo=1 отработало без ошибок, все необходимые заголовочные пакеты и библиотеки, стало быть, есть.

khrenj написал:
Спасибо, "%" работает, "ё" не проверял, нет таких книг и авторов, а вот регистронезависимый поиск - всё равно не работает. make ext yo=1 отработало без ошибок, все необходимые заголовочные пакеты и библиотеки, стало быть, есть.

Должны были появиться sqlite3ext.so и libSqliteIcu.so. В каталоге с программой.

Цитата:
Должны были появиться sqlite3ext.so и libSqliteIcu.so. В каталоге с программой.

Появились, но в поиске ничего не изменилось. Я даже добавил каталог с Pyhomelib в /etc/ld.so.conf и запустил ldconfig - думал, может, оно эти библиотеки не видит, но всё равно в поиске ничего не изменилось.

khrenj написал:
Цитата:
Должны были появиться sqlite3ext.so и libSqliteIcu.so. В каталоге с программой.

Появились, но в поиске ничего не изменилось. Я даже добавил каталог с Pyhomelib в /etc/ld.so.conf и запустил ldconfig - думал, может, оно эти библиотеки не видит, но всё равно в поиске ничего не изменилось.

Интересно, интересно. Добавлять в ld.so.conf - это, безусловно, лишнее. А что у Вас за версии python'а и sqlite3? Надо попробовать воспроизвести.

$ python --version
Python 2.6.2

$ rpm -qa | grep -i sqlite | sort
libqt4-sql-sqlite-4.6.0-14.1.i586
libsqlite3-0-3.6.16-2.3.i586
qt3-sqlite-3.3.8b-115.1.i586
sqlite2-2.8.17-168.2.i586
sqlite3-3.6.16-2.3.i586
sqlite3-devel-3.6.16-2.3.i586

У меня OpenSuse 11.2.

PS: извините, промахнулся по ссылке и сломал тред, а удалять свои сообщения тут, похоже, нельзя.

khrenj написал:
У меня OpenSuse 11.2.

Не могу разобраться, в чём дело, а сусе ставить как-то лень.
Если запустить
$ python -c 'import sqlite3ext as s; print dir(s); s.load_icu(None)'
из каталога программы, что питон говорит?

(Есть гарантированный вариант для настоящих мужчин: пересобрать дистрибутивный sqlite3 с -DSQLITE_ENABLE_ICU=1 -licui18n -licuuc . В таком случае регистронезависимый юникодный поиск появится во всех приложениях, использующих либу. Не знаю, почему Debian собирает без.)

Прошу прощения за ответ с такой задержкой - уезжал в безынтернетные места.

$ python -c 'import sqlite3ext as s; print dir(s); s.load_icu(None)'
Traceback (most recent call last):
File "", line 1, in
ImportError: ./sqlite3ext.so: undefined symbol: sqlite3_enable_load_extension

Судя по spec-файлу, в OpenSuse 11.2 sqlite3 собран с такими опциями: -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SERVER=1
Вариант для настоящих мужчин не очень удобен, т.к. sqlite3 может обновиться и перекрыть самосборный. Впрочем, надо попробовать.

Давненько что-то не брал я в руки шашек не заходил на либрусек. Извините.
Дело проясняется, спасибо. Проблема тут вот в чём.
При компиляции sqlite3 существует возможность запретить загрузку расширений: есть такой ключик - --disable-load-extension. (Разрешающий, наоборот, --enable-load-extension.) Применение оного ключика ведёт к отсутствию в собранной библиотеке функций sqlite3_enable_load_extension и sqlite3_load_extension - и это как раз Ваш случай: в вышеуказанной .rpm-ке их нет.
С моей стороны сделать тут что-либо не представляется возможным, спасёт только пересборка.
Вопрос с обновлениями может быть решён путём помещения собранной библиотечки libsqlite3.so.x.y.z непосредственно в каталог с программой и создания там же симлинка с именем libsqlite3.so.x:
$ ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

Далее можно запускать программу примерно так:

$ LD_LIBRARY_PATH=. python pyhomelib.py

Цитата:
Вопрос с обновлениями может быть решён путём помещения собранной библиотечки libsqlite3.so.x.y.z непосредственно в каталог с программой и создания там же симлинка с именем libsqlite3.so.x:
$ ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

Далее можно запускать программу примерно так:

$ LD_LIBRARY_PATH=. python pyhomelib.py

Это, пожалуй, самый лучший вариант, так и сделал - работает. Большое спасибо!

PS: будете ли развивать программу дальше? А то я смотрю - последние коммиты от 15 февраля. Было бы жаль, если проект умрёт. Другой свободный аналог для Linux - MyRuLib - на FLTK/Gtk, что не очень хорошо. Сам рад бы помочь, но я не программист и на Питоне разве что "hello, world" напишу.

khrenj написал:
PS: будете ли развивать программу дальше? А то я смотрю - последние коммиты от 15 февраля. Было бы жаль, если проект умрёт. Другой свободный аналог для Linux - MyRuLib - на FLTK/Gtk, что не очень хорошо. Сам рад бы помочь, но я не программист и на Питоне разве что "hello, world" напишу.

Ну, у меня есть небольшой список to do, который хотелось бы реализовать до выпуска release candidate, но как-то всё пока руки не доходят. А в какую сторону развивать-то? Лично меня в общем и целом устраивает, пользуюсь. Есть какие-то предложения?

Цитата:
Ну, у меня есть небольшой список to do, который хотелось бы реализовать до выпуска release candidate, но как-то всё пока руки не доходят. А в какую сторону развивать-то? Лично меня в общем и целом устраивает, пользуюсь. Есть какие-то предложения?

Пока предложения такие:
- списки книг/авторов и т.п. (таблицы) покомпактней, а то занимают очень много места;
- по возможности какой-то единый поиск (хотя бы опционально), т.е. одно поле для поиске, текст из которого ищется в названиях книг, именах авторов, жанрах и т.д.; как на этом сайте, к примеру; думаю, это не сильно замедлит поиск;
- можно ли как-то ускорить импорт? Сколько оно будет переваривать полный текущий срез "Либрусека"/"Флибусты"? Я так понял, у вас сделан полный разбор XML-файла с книгой, а если разбирать только заголовок, регулярными выражениями? (если что - просто мысли дилетанта).

Пока больше ничего в голову не приходит. Ну, и пожелание ещё: можно ли обсуждение программы и т.п. перенести на тот же github.com? Там вроде можно сделать что-то вроде форума и/или багтрекера? А то я после известных событий перешёл на "Флибусту" и сюда захожу только ради этой программы :-)

khrenj написал:
- можно ли как-то ускорить импорт? Сколько оно будет переваривать полный текущий срез "Либрусека"/"Флибусты"?

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

khrenj написал:
- списки книг/авторов и т.п. (таблицы) покомпактней, а то занимают очень много места;

Сделал настраиваемой высоту строки в таблицах, ещё кое-что поправил.

пофиксил пару неприятных багов

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

Есть. Нажимать '/' или 'Ctrl+F'. Ищет по фамилиям, названиям, сериям.
X