Показаны сообщения с ярлыком python. Показать все сообщения
Показаны сообщения с ярлыком python. Показать все сообщения

вторник, 6 сентября 2016 г.

Раскладывание книжек по полкам в Kobo



Version 0.9 build 2016-09-06

Наверное самая глупая фишка в ридерах от Kobo - это так называемые книжные полки. Единственное преимущество перед хранением книг в директориях - возможность поместить книгу сразу в две и более полок. Довольно сомнительная возможность.

Я не использую Caliber и просто закидываю книги в ридер. Иногда раскладывал по полкам. Но после того, как полки несколько раз слетели, перестал это делать. Как то мне ночью не спалось и я написал скрип на python, который раскладывает книги по полкам.


Как это работает.

В основной памяти и на карточке я создал корневую директорию /Books. Внутри - отдельные директории для серий, в которые я копирую книги.


Потом запускаю скрипт.
Скрипт сначала очищает две таблицы: Shelf и ShelfContent. Потом сканирует папку Books и записывает названия вложенных папок в Shelf и собственно книги в ShelfContent.

Внутренние алгоритмы ридера работают по другому.
Они ничего из базы не удаляют, а ставят пометку, что книга удалена. Вероятно это делается для сбора статистики и передается на сайт производителя, чтоб лучше нам впаривать книжки.
Но это мои догадки.
Мне это было делать лениво и я по простому очищаю указанные таблицы. Извините, если что не так.
Вложенные директории не проверял. К тому же, считаю смысла в них нет. Название полки не поместится на экран ридера. Собственно и все.


Установка Python

Для работы скрипта необходимо, что бы на вашем компьютере был установлен Pyton 3.

Если у Вас Ubuntu, nо Python 3.5 уже скорее всего установлен. В противном случае выполните команду:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.5

Если у Вас Windows, то установите Python 3.5.2 - 2016-06-27 отсюда:
https://www.python.org/downloads/windows/


Как использовать.
  1. Сохраните скрипт в файл KoboShelf.py и дайте ему права на исполнение:
    chmod +x KoboShelf.py
    
  2. В каталоге .kobo в разделе KOBOeReader сделайте резервную копию базы данных.
    cp KoboReader.sqlite KoboReader.sqlite.origin
    
  3. Создайте папку /Books на карточке, в ней папки с сериями, в них скопируйте ваши книги.
  4. Запустите из терминала вышеуказанный скрипт. В терминале будут показаны найденные полки и книги, которые в них добавлены.
    Скрипт отрабатывает очень быстро, около секунды.
  5. Безопасно извлеките ридер.

Командная Строка

В Linux и в Windows скрипт автоматически определяет точки монтирования Kobo и SD карты. Поэтому для создания полок никакие аргументы в команде запуска не нужны.

./KoboShelf.py -h
usage: KoboShelf.py [-h] [--onboard ONBOARD] [--sd SD] [--onboard_sw {on,off}]
                    [--sd_sw {on,off}] [-s] [-v]

optional arguments:
  -h, --help            show this help message and exit
  --onboard ONBOARD     eReaders mount point
  --sd SD               SD cards mount point
  --onboard_sw {on,off}
                        Enabling/disabling adding book from eReader onboard
                        memory. Enabled by default
  --sd_sw {on,off}      Enabling/disabling adding book from SD card memory.
                        Enabled if SD card present
  -s, --showsettings    Display settings and exit. Reader must be connected.
  -v, --version         show program's version number and exit


Какие могут быть траблы.

Скрипт в стадии экспериментальной, поэтому возможно все. Если по какой то причине испортилась база данных KoboReader.sqlite, то восстанавливаем ее из сохраненной копии.
Как всегда, все вы выполняете на свой страх и риск. Я ни за что не отвечаю.

Исходный код можно посмотреть в Git репозитории:

https://github.com/Axa-Ru/KoboShelfes/blob/master/KoboShelf.py

В скрипте меняйте, что хотите, хоть автора, хоть код. :P

Всем удачи.

вторник, 1 марта 2016 г.

Устанавливаем PyQt в Ubuntu

Если вы не знаете, что такое PyQt то отправлю Вас в википедию. Там все коротко и по существу.
Если Вы не знаете, что такое Python, то может и к лучшему. Ну, или опять в википедию.

Вернулись?
Ну тогда вперед!

Сначала подготовим место, где будем проводить работу с пакетами. Я обычно делаю это в директории ~/tmp

Устанавливаем пакеты, необходимые для установки и работы PyQt

sudo apt-get install build-essential python3-dev python3-pyqt5 pyqt5-dev-tools

Скачиваем и устанавливаем SIP

wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz
tar -xzf sip-4.17.tar.gz
cd sip-4.17
sudo python3 configure.py
make
sudo make install

Скачиваем и устанавливаем PyQT5

wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz
tar -xzf PyQt-gpl-5.5.1.tar.gz
cd PyQt-gpl-5.5.1
sudo python3 configure.py
sudo make
sudo make install

Вот и все. Установка завершена.
Теперь для проверки создадим небольшую программу на Python. Назовем ее pyqt_test.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
import sys
from PyQt5.QtWidgets import QApplication, QWidget
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('PyQT установлен')
    w.show()
 
    sys.exit(app.exec_())



Дадим файлу pyqt_test.py права на исполнение и запустим:

chmod +x pyqt_test.py
./pyqt_test.py

Если мы увидим такой результат, то это значит, что мы все сделали правильно и установили PyQt.



Полезные ссылки: