E-book manager (fb2) (Скрипт)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

E-book manager (fb2)

Сообщение radial »

Книжки читаю в Firefox. Конечно, для удобства установлен экстеншен для fb2. Только вот в этом экстеншене отсутствуют такие понятия, как библиотека, сортировка и поиск-на-лету по библиотеке. Поэтому слепил на коленке скрипт-препроцессор (ну типа))) для задействования этих функций.

Выглядит так:

Изображение

Архив с файлами- одного скрипта тут не достаточно, метаинформация из fb2 извлекается с помощью http://pybookreader.narod.ru/fb2desc.tgz

Основной скрипт:

Код: Выделить всё

#!/bin/bash
# ВНИМАНИЕ: пред запуском прейти в каталог распаковки!
LIB=/home/$USER/MyLib.html
cp Lib.html $LIB

echo > /tmp/tb0
for i in /home/user/example/*.fb2.zip # Путь к библиотеке - указать свой
do
desc="$(python fb2desc.py -l "$i")"
echo "$desc"'|'"$i" >> /tmp/tb0
echo -n '='
done
cat /tmp/tb0 | sort > /tmp/tb1
cat /tmp/tb1 > /tmp/tb2

echo '<div class="date">'$(date)'</div>' >> $LIB
while read line
do
desc=$(echo "$line" | cut -d '|' -f1)
link=$(echo "$line" | cut -d '|' -f2)
echo -n '<a href="'                >> $LIB
echo -n "$link"                >> $LIB
echo -n '"><img src="file://'    >> $LIB
echo -n $(pwd)/book.png        >> $LIB
echo -n '"></a>' "$desc"        >> $LIB
echo '<br>'                        >> $LIB
done < /tmp/tb2
echo '</body>
</html>' >> $LIB
echo ' Готово!'
exit 0


идеи приветствуются :)
P. S. Поскольку bash+python, то работает медленно, особенно если файлов много! Чего вообщем-то и следовало ожидать..
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: E-book manager (fb2)

Сообщение liaonau »

А позвольте спросить, почему firefox, а не fbreader? У него просто есть библиотека.
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

А зачем FBReader, если есть Firefox? ;)
К тому же мне нужен был быстрый поиск по библиотеке. В FF он встроенный и работает для любых документов, а в FBReader на него просто забили.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: E-book manager (fb2)

Сообщение liaonau »

Есть программы библиотеки для электронных книг. Под linux, правда, их не много. В портежах gentoo только app-text/calibre, но у нее столько не установленных у меня зависимостей, что я не стал ее ставить. Да и излишне это, на мой взгляд, но вы, если хотите, посмотрите.
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

Калябру сразу закопать, глубоко. поясняю- мне нужно от подобного менеджера следующее:

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

Комбинация из этого скрипта, дополнения для Firefox (вот оно) и самого браузера предоставляет все нужные фичи. Calibre- не предоставляет, плюс в приложении очень много "странных вещей", да еще и интерфейс сделан просто через жопу.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: E-book manager (fb2)

Сообщение liaonau »

radial писал(а):
08.03.2011 21:30
Калябру сразу закопать, глубоко. больше ничего не видел..

С этим я согласен, просто вдруг бы вы были другого мнения.

Я вот что думаю по поводу вашего скрипта. Создавать временные файлы, потом открывать их браузером… не очень элегантно, на мой взгляд.

Может стоит локально поднять легкий веб-сервер, например lighttpd, и генерировать страницу динамически с помощью perl или php? Было бы правда неплохо тогда и метаданные добывать сразу, не запуская других процессов.

Вторая идея — xul + javascript (даже и xul не нужен, впрочем) — extension для firefox. Правда я не уверен что можно будет запускать python, не знаю как далеко виден «внешний мир» из chrome, но раз в vimperator можно запускать внешние утилиты, то, наверное, можно.
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

Временные файлы- это как раз неплохо на мой взгляд: скрипт запускать нужно только после обновления библиотеки. Просто если она объемна, то процесс "сканирования" займет некоторое время, это да.. А то, что скрипт написан через одно место, это я признал в самом первом посте :)

Экстешен для Firefox уже есть и мной давно используется. Но у автора дополнения какое-то иное видение навигации по папке с fb2 (в стиле- не нужно, или средствами Firefox).
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: E-book manager (fb2)

Сообщение liaonau »

radial писал(а):
08.03.2011 21:53
Экстешен для Firefox уже есть и мной давно используется. Но у автора дополнения какое-то иное видение навигации по папке с fb2 (в стиле- не нужно, или средствами Firefox).

Я имею ввиду другой, вместе с тем который для чтения использовать. Что-то вроде страницы chrome://bookman/MyLib.html, которая генерируется javascript и имеет кнопку «обновить». Хотя разница невелика, это вопрос личных предпочтений.

Раз идеи приветствуются ☺, то вот — если файлов много и работает медленно, то завести файл с именами и метаданными уже обработанных книг, и обрабатывать только новые. На случай изменения метаданных уже обработанной книги ввести ключ --force книга.fb2.
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

Раз идеи приветствуются ☺, то вот — если файлов много и работает медленно, то завести файл с именами и метаданными уже обработанных книг, и обрабатывать только новые.


На bash как-то так:
diff старый_список новый_список → обработать разницу → добавить к старым результатам → sort → сделать страничку заново
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

Переписал "на чистом bash", если кому интересно. Для разбора fb2 теперь используется XMLStarlet (найдется в репозитариях любого дистрибутива).

Текст скрипта:

Код: Выделить всё

#!/bin/bash
# Перед запуском перейдите в каталог с распакованными файлами скрипта.
# Опции запуска:
# ./bookman.sh путь_до_каталога_с_файлами_fb2
# (Подкаталоги пока не обрабатываются)
#
LIB=/home/$USER/.MyLib.html
cp Lib.html $LIB
echo '<div class="date">'$(date '+%d %B')'</div>' >> $LIB
z=0
echo > /tmp/tb0
for i in "$1"*.fb2.zip
do
    let z=z+1
    fname=$(unzip -p "$i" | xml sel -t -v  "//node()[name()='first-name']")
    lname=$(unzip -p "$i" | xml sel -t -v  "//node()[name()='last-name']" )
    btitle=$(unzip -p "$i" | xml sel -t -v  "//node()[name()='book-title']")
    echo "$fname $lname - $btitle"'|'"$i" >> /tmp/tb0
    clear
    echo "$fname $lname - $btitle"
    echo Книг $z
done
cat /tmp/tb0 | sort > /tmp/tb1
while read line
do
    desc=$(echo "$line" | cut -d '|' -f1)
    link=$(echo "$line" | cut -d '|' -f2)
    echo -n '<a href="'"$link"'"><img src="file://'$(pwd)/book.png'"></a>'$desc'<br>' >> $LIB
done < /tmp/tb1
echo '</body></html>' >> $LIB
# notify-send -i info 'Библиотека обновлена!'
# firefox $LIB
exit 0

Архив с файлами
Спасибо сказали:
Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64
Контактная информация:

Re: E-book manager (fb2)

Сообщение Tverskoy »

небольшой офтоп.
Архив с файлами- одного скрипта тут не достаточно, метаинформация из fb2 извлекается с помощью http://pybookreader.narod.ru/fb2desc.tgz

Хорошо бы pybookreader переделать на третий питон, а то скоро выкинут вторую ветку из дистрибьютивов, и останемся без хорошей читалки.
Спасибо сказали:
Аватара пользователя
radial
Сообщения: 577
ОС: OpenSUSE

Re: E-book manager (fb2)

Сообщение radial »

Юзал я pybookreader когда-то давно.. только мертвое оно уже и даже не запускается на новых дистрибутивах. Да и нет с читалками никаких проблем- взять тот же CoolReader- отличная читалка.

Софт с функцией "только читать" сделать более чем элементарно, а вот хороших комбайнов, с менеджером коллекций и прочими фичами- нэма.. Потому-то я и заморочился немного :)
Спасибо сказали:
Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64
Контактная информация:

Re: E-book manager (fb2)

Сообщение Tverskoy »

radial писал(а):
13.03.2011 02:01
Юзал я pybookreader когда-то давно.. только мертвое оно уже и даже не запускается на новых дистрибутивах. Да и нет с читалками никаких проблем- взять тот же CoolReader- отличная читалка.

Софт с функцией "только читать" сделать более чем элементарно, а вот хороших комбайнов, с менеджером коллекций и прочими фичами- нэма.. Потому-то я и заморочился немного :)

Он работает на современных дистрибутивах, скины есть, коллекция то же есть, выбор шрифта есть, картинки в книгах показывает, в ornamentbook это еще в виде книги сделано. Выбор читалки дело вкуса :)
Спасибо сказали:
Ответить