Skip to content

MegaShIzoID/sopds

Β 
Β 

Repository files navigation

Simple OPDS Catalog - ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ OPDS ΠšΠ°Ρ‚Π°Π»ΠΎΠ³

Author: Dmitry V.Shelepnev

ВСрсия 0.43

1. ΠŸΡ€ΠΎΡΡ‚Π°Ρ установка Simple OPDS (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π‘Π” sqlite3)

1.1 Установка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ с сайта www.sopds.ru, Π»ΠΈΠ±ΠΎ ΠΈΠ· github.com ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

git clone https://github.com/mitshel/sopds.git

1.2 Зависимости.

  • ВрСбуСтся Python Π½Π΅ Π½ΠΈΠΆΠ΅ вСрсии 3.3 (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ zlib.Decompressor.eof, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² вСрсии 3.3)
  • Django 1.9 (для Python 3.3 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Django 1.8: https://code.djangoproject.com/ticket/25868)
  • Pillow 2.9.0
  • apscheduler 3.3.0
  • django-constance[database] 1.3
  • lxml

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ зависимости:

yum install python3                            # ΠΊΠΎΠΌΠ°Π½Π΄Π° установки для RedHad, Fedora, CentOS
python3 -m pip install -r requirements.txt

1.3 ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (ΠΆΠ°Π½Ρ€Ρ‹)

python3 manage.py migrate
python3 manage.py sopds_util clear

1.4 CΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

python3 manage.py createsuperuser

1.5 НастраиваСм ΠΏΡƒΡ‚ΡŒ ΠΊ Π’Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ с ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ язык интСрфСйса Π½Π° русский

python3 manage.py sopds_util setconf SOPDS_ROOT_LIB 'ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ с ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ'
python3 manage.py sopds_util setconf SOPDS_LANGUAGE ru-RU

1.6 ЗапускаСм SCANNER сСрвСр (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пСриодичСского пСрСсканирования ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ) ΠŸΡ€ΠΈΠΌΠΈΡ‚Π΅ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² настройках ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°Π΄Π°Π½ пСриодичСский запуск сканирования 2 Ρ€Π°Π·Π° Π² дСнь 12:00 ΠΈ 0:00.

python3 manage.py sopds_scanner start --daemon

1.7 ЗапускаСм встроСнный HTTP/OPDS сСрвСр

python3 manage.py sopds_server start --daemon

Однако Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ способом, всС ΠΆΠ΅ являСтся настройка Π² качСствС HTTP/OPDS сСрвСров Apache ΠΈΠ»ΠΈ Nginx (Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° ./sopds/wsgi.py)

1.8 Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒΡΡ Π½Π°Ρ‡Π°Π»Π° сканирования ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ процСссу sopds_scanner ΠΎ нСобходимости Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ сканирования. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, установив ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ SOPDS_SCAN_START_DIRECTLY = True двумя способами:

Π°) ΠΈΠ· консоли ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

python3 manage.py sopds_util setconf SOPDS_SCAN_START_DIRECTLY True

Π±) ΠŸΡ€ΠΈ ΠΏΠΎΠΏΠΎΠΌΠΎΡ‰ΠΈ страницы администрирования Web-интСрфСйса http://<Π’Π°Ρˆ сСрвСр>:8001/admin/ (Π”Π°Π»Π΅Π΅ CONSTANCE -> Настройки -> 1. General Options -> SOPDS_SCAN_START_DIRECTLY)

1.9 Доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
Если всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ шаги Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ URL:

OPDS-вСрсия: http://<Π’Π°Ρˆ сСрвСр>:8001/opds/  
HTTP-вСрсия: http://<Π’Π°Ρˆ сСрвСр>:8001/

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ простая Π‘Π” sqlite3, которая являСтся ΠΎΠ΄Π½ΠΎ-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ процСсс сканирования, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ доступа ΠΊ сСрвСру ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ ошибкой "A server error occurred. Please contact the administrator."
Для устранСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π‘Π”, НапримСр MYSQL.

2. Настройка Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… MySQL (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ).

2.1 Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с большим количСством ΠΊΠ½ΠΈΠ³, ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ sqlite, Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π‘Π” MySQL. MySQL ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с sqlite Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ SQLite - ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΊΠ°Ρ Π‘Π”, Ρ‚.Π΅. Π²ΠΎ врСмя сканирования доступ ΠΊ Π‘Π” Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.

для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π” Mysql Π² Ρ€Π°Π·Π½Ρ‹Ρ… систСмах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ установка Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

UBUNTU:    sudo apt-get install python3-mysqldb
Π‘ENTOS-7:  pip3 install mysqlclient

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала Π² Π‘Π” MySQL ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… "sopds" ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

mysql -uroot -proot_pass mysql  
mysql > create database if not exists sopds default charset=utf8;  
mysql > grant all on sopds.* to 'sopds'@'localhost' identified by 'sopds';  
mysql > commit;  
mysql > ^C  

2.2 Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π” sqlite ΠΈ соотвСтсвСнно Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π” Mysql:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sopds',
        'HOST': 'localhost',
        'USER': 'sopds',
        'PASSWORD' : 'sopds',
        'OPTIONS' : {
            'init_command': "SET default_storage_engine=MyISAM;\
                             SET sql_mode='';"
        }
    }
}


# DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#    }         
#}  

2.4 ИспользованиС InnoDB вмСсто MyISAM.
Указанная Π²Ρ‹ΡˆΠ΅ конфигурация MySQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС Π΄Π²ΠΈΠΆΠΊΠ° Π‘Π” MyISAM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½Ρ‚ΡΠ²Π΅ вСрсий MySQL ΠΈΠ»ΠΈ MariaDB. Однако, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ свСТиС вСрсии Π‘Π” Mysql (MariaDB>=10.2.2, Mysql>=5.7.9), Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ соврСмСнный Π΄Π²ΠΈΠΆΠΎΠΊ InnoDB. Он нСсколько быстрСС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скаТСтся Π½Π° цСлостности Π‘Π”.
(На Π±ΠΎΠ»Π΅Π΅ старых вСрсиях MySQL с Π½ΠΈΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ индСксов.)
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Ρƒ Вас соврСмСнная вСрсия MySQL (MariaDB>=10.2.2, Mysql>=5.7.9), Ρ‚ΠΎ Π² настройках Π‘Π” Mysql вмСсто ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² OPTIONS просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

'OPTIONS' : {
    'init_command': """SET default_storage_engine=INNODB; \
                       SET sql_mode='STRICT_TRANS_TABLES'; \
                       SET NAMES UTF8 COLLATE utf8_general_ci; \
                       SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                    """
}

2.5 Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ заполнСния вновь созданной Π‘Π” Π·Π°Π½ΠΎΠ²ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ 1.3 - 1.8 Π΄Π°Π½Π½ΠΎΠΉ инструкции Однако, Ссли Π’Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ запустили HTTP/OPDS сСрвСр ΠΈ SCANNER сСрвСр, Ρ‚ΠΎ потрСбуСтся сначала ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ…:

python3 manage.py sopds_server stop
python3 manage.py sopds_scanner stop

3. Настройка Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Simple OPDS).

3.1 PostgreSQL - nявляСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ использования ПО Simple OPDS.
Для использования PostgreSQL этого Π½Π΅ΠΎΡŽΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ эту Π‘Π” ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π΅ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΡ€ здСсь: http://alexxkn.ru/node/42 ΠΈΠ»ΠΈ здСсь: http://www.fight.org.ua/database/install_posqgresql_ubuntu.html):

UBUNTU: 
	sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev
	sudo vi /etc/postgresql/9.5/main/pg_hba.conf
	sudo /etc/init.d/postgresql restart
	
CENTOS: 
  yum install postgresql postgresql-server
   /usr/bin/postgresql-setup initdb
  vi /var/lib/pgsql/data/pg_hba.conf
  systemctl enable postgresql
  systemctl start postgresql

рСдактируя Ρ„Π°ΠΉΠ» hba.conf Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

- local   all             all                                     peer
- host    all             all             127.0.0.1/32            ident
+ local   all             all                                     md5
+ host    all             all             127.0.0.1/32            md5

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π” PostgreSQL скорСС всСго потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ psycopg2:

pip3 install psycopg2

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала Π² Π‘Π” PostgreSQL ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… "sopds" ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

psql -U postgres
 Password for user postgres: *****
 postgres=# create role sopds with password 'sopds' login;
 postgres=# create database sopds with owner sopds;
 postgres=# \q

3.2 Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π” sqlite ΠΈ соотвСтсвСнно Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π‘Π” PostgreSQL:

 DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'sopds',
    'USER': 'sopds',
    'PASSWORD': 'sopds',
    'HOST': '', # Set to empty string for localhost.
    'PORT': '', # Set to empty string for default.
    }
 }


 # DATABASES = {
 #    'default': {
 #        'ENGINE': 'django.db.backends.sqlite3',
 #        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 #    }         
 #}  

3.4 Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ заполнСния вновь созданной Π‘Π” Π·Π°Π½ΠΎΠ²ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ 1.3 - 1.8 Π΄Π°Π½Π½ΠΎΠΉ инструкции Однако, Ссли Π’Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½Π΅Π΅ запустили HTTP/OPDS сСрвСр ΠΈ SCANNER сСрвСр, Ρ‚ΠΎ потрСбуСтся сначала ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ…:

 python3 manage.py sopds_server stop
 python3 manage.py sopds_scanner stop

4. Настройка ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ fb2 Π² EPUB ΠΈΠ»ΠΈ MOBI (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ)

4.1 ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ fb2-to-epub http://code.google.com/p/fb2-to-epub-converter/

  • Π²ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° fb2toepub ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅ (тСкущая ΡƒΠΆΠ΅ находится Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅) ΠΊ соТалСнию ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΈ Π½Π΅ всС ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ всС-Ρ‚Π°ΠΊΠΈ конвСртируСтся
  • Π΄Π°Π»Π΅Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² Π² ΠΏΠ°ΠΏΠΊΡƒ ./convert/fb2toepub ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
  • Π΄Π°Π»Π΅Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ make, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ unix_dist появится исполняСмый Ρ„Π°ΠΉΠ» fb2toepub
  • ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Π΅Π±-интСрфСйса администратора ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ консоли Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ этому ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ:
python3 manage.py sopds_util setconf SOPDS_FB2TOEPUB "convert/fb2toepub/unix_dist/fb2toepub"
  • Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ OPDS-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π±ΡƒΠ΄ΡƒΡ‚ прСдоставлятся ссылки Π½Π° FB2-ΠΊΠ½ΠΈΠ³Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ epub

4.2 ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ fb2epub http://code.google.com/p/epub-tools/ (ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ написан Π½Π° Java, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² вашСй систСмС Π΄ΠΎΠ»ΠΆΠ½Π΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ JDK 1.5)

  • Ρ‚Π°ΠΊΠΆΠ΅ сначала ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅ (тСкущая ΡƒΠΆΠ΅ находится Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅)
  • ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ jar-Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ./convert/fb2epub (Π—Π΄Π΅ΡΡŒ ΡƒΠΆΠ΅ Π»Π΅ΠΆΠΈΡ‚ shell-скрипт для запуска jar-Ρ„Π°ΠΉΠ»Π°)
  • ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Π΅Π±-интСрфСйса администратора ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ консоли Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ shell-скрипту fb2epub (ΠΈΠ»ΠΈ fb2epub.cmd для Windows)
python3 manage.py sopds_util setconf SOPDS_FB2TOEPUB "convert/fb2epub/fb2epub"

4.3 ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ fb2conv (конвСртация Π² epub ΠΈ mobi) http://www.the-ebook.org/forum/viewtopic.php?t=28447

  • НСобходимо ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ python 2.7 ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ lxml, cssutils:

       yum install python  
       yum install python-lxml  
       yum install python-cssutils  
    
  • ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅ (тСкущая ΡƒΠΆΠ΅ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ fb2conv ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°)

  • ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ KindleGen с сайта Amazon http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621 (тСкущая вСрсия ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΡƒΠΆΠ΅ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ fb2conv ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°)

  • ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ./convert/fb2conv (Π—Π΄Π΅ΡΡŒ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ shell-скрипты для запуска ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°) ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ

  • Для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π² MOBI Π½ΡƒΠΆΠ½ΠΎ Π°Ρ€Ρ…ΠΈΠ² с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ KindleGen ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ΠΎΠΌ ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

  • ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Π΅Π±-интСрфСйса администратора ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ консоли Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ скриптам:

python3 manage.py sopds_util setconf SOPDS_FB2TOEPUB "convert/fb2conv/fb2epub"
python3 manage.py sopds_util setconf SOPDS_FB2TOMOBI "convert/fb2conv/fb2mobi"

5. ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Simple OPDS

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΊΠ½ΠΈΠ³:

python3 manage.py sopds_util info

ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΊΠ½ΠΈΠ³, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ справочник ΠΆΠ°Π½Ρ€ΠΎΠ²:

python3 manage.py sopds_util clear [--verbose]

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свой справочник ΠΆΠ°Π½Ρ€ΠΎΠ² Π² Ρ„Π°ΠΉΠ» opds_catalog/fixtures/mygenres.json:

python3 manage.py sopds_util save_mygenres

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ свой справочник ΠΆΠ°Π½Ρ€ΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»Π° opds_catalog/fixtures/mygenres.json:

python3 manage.py sopds_util load_mygenres   

Волько ΠΏΡ€ΠΈ использовании PostgerSQL. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ opds_catalog_book (fillfactor = 50). ПослС этого сканированиС происходит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС:

python3 manage.py sopds_util pg_optimize  

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

python3 manage.py sopds_util getconf  

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

python3 manage.py sopds_util getconf SOPDS_ROOT_LIB

Π—Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

python3 manage.py sopds_util setconf SOPDS_ROOT_LIB '\home\files\books'

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ сканированиС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΊΠ½ΠΈΠ³:

python3 manage.py sopds_scanner scan [--verbose] [--daemon]

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сканированиС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ:

python3 manage.py sopds_scanner start [--verbose] [--daemon]

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ встроСнный web-сСрвСр:

python3 manage.py sopds_server start [--host <IP address>] [--port <port N>] [--daemon]    

6. ΠžΠΏΡ†ΠΈΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Simple OPDS (www.sopds.ru)

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ‚ΠΎΡ€ Simple OPDS ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ интСрфСйса администратора http://<Π’Π°Ρˆ сСрвСр>/admin/

SOPDS_LANGUAGE - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ языка интСрфСйса.

SOPDS_ROOT_LIB - содСрТит ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располоТСна ваша коллСкция ΠΊΠ½ΠΈΠ³.

SOPDS_BOOK_EXTENSIONS - Бписок Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_BOOK_EXTENSIONS = '.pdf .djvu .fb2 .epub')

SOPDS_DOUBLES_HIDE - Π‘ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚, Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ Π² Π²Ρ‹Π΄Π°Ρ‡Π°Ρ… ΠΊΠ½ΠΈΠ³.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_DOUBLES_HIDE = True)

SOPDS_FB2SAX - ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· FB2 двумя парсСрами

  • FB2sax - ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ парсСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² SOPDS с вСрсии 0.01, этот парсСр Π±ΠΎΠ»Π΅Π΅ быстрый, ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°ΠΆΠ΅ ΠΈΠ· Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² FB2
  • FB2xpath - появился Π² вСрсии 0.42, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Π΄Π΅Π»Π΅Π½Π½Π΅Π΅, Π½Π΅ Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹Ρ… FB2 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_FB2SAX = True)

SOPDS_COVER_SHOW - способ ΠΏΠΎΠΊΠ°Π·Π° ΠΎΠ±Π»ΠΎΠΆΠ΅ΠΊ (False - Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, True - ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ Π½Π° Π»Π΅Ρ‚Ρƒ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ).
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS COVER_SHOW = True)

SOPDS_ZIPSCAN - Настройка сканирования ZIP Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ².
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_ZIPSCAN = True)

SOPDS_ZIPCODEPAGE - Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ какая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° для Π½Π°Π·Π²Π°Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ZIP-Π°Ρ€Ρ…ΠΈΠ²Π°Ρ…. ДоступныС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ: cp437, cp866, cp1251, utf-8. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ примСняСтся ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° cp437. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² самом ZIP Π°Ρ€Ρ…ΠΈΠ²Π΅ свСдСния ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² - ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚ΠΎ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ для ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ прСдставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, поэтому для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ кирилличСскиС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ ваыглядСли ΠΊΠ°ΠΊ крякозябры слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ cp866.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_ZIPCODEPAGE = "cp866")

SOPDS_INPX_ENABLE - Если True, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ INPX Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, сканСр Π½Π΅ сканируСт Π΅Π³ΠΎ содСрТимоС вмСстС с ΠΏΠΎΠ΄Π³Π°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ, Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ INPX Ρ„Π°ΠΉΠ»Π°. Π‘ΠΊΠ°Π½Π΅Ρ€ считаСт Ρ‡Ρ‚ΠΎ сами архивыс ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ располоТСны Π² этом ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’.Π΅. INPX-Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ находится ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π°Ρ€Ρ…ΠΈΠ²Π°ΠΌΠΈ ΠΊΠ½ΠΈΠ³. Однако ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ использованиС Π΄Π°Π½Π½Ρ‹Π· ΠΈΠ· INPX ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ аннотация, Ρ‚.ΠΊ. Π² INPX Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π½Π΅Ρ‚!!!
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_INPX_ENABLE = True)

SOPDS_INPX_SKIP_UNCHANGED - Если True, Ρ‚ΠΎ сканСр пропускаСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ сканированиС, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ INPX Π½Π΅ измСнялся.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_INPX_SKIP_UNCHANGED = True)

SOPDS_INPX_TEST_ZIP - Если True, Ρ‚ΠΎ сканСр пытаСтся Π½Π°ΠΉΡ‚ΠΈ описанный Π² INPX Π°Ρ€Ρ…ΠΈΠ². Если ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ² Π½Π΅ обнаруТиваСтся, Ρ‚ΠΎ сканСр Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ вязанныС с Π½ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· INPX Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… соотвСтсвСнно, Ссли SOPDS_INPX_TEST_ZIP = False, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ сканСр Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚, Π° просто добавляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· INPX Π² Π‘Π”. Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_INPX_TEST_ZIP = False)

SOPDS_INPX_TEST_FILES - Если True, Ρ‚ΠΎ сканСр пытаСтся Π½Π°ΠΉΡ‚ΠΈ описанный Π² INPX ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΊΠ½ΠΈΠ³ΠΎΠΉ (ΡƒΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ²). Если ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π΅ обнаруТиваСтся, Ρ‚ΠΎ сканСр Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… соотвСтсвСнно, Ссли INPX_TEST_FILES = False, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ сканСр Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚, Π° просто добавляСт ΠΊΠ½ΠΈΠ³Ρƒ ΠΈΠ· INPX Π² Π‘Π”. Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_TEST_FILES = False)

SOPDS_DELETE_LOGICAL - True ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ сканСром, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° ΡƒΠ΄Π°Π»Π΅Π½Π°, запись Π² Π‘Π” ΠΎΠ± этой ΠΊΠ½ΠΈΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° логичСски (avail=0). Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ физичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… записСй ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Пока Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ SOPDS_DELETE_LOGICAL = False.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_DELETE_LOGICAL = False)

SOPDS_SPLITITEMS - УстанавливаСт ΠΏΡ€ΠΈ достиТСнии ΠΊΠ°ΠΊΠΎΠ³ΠΎ числа элСмСнтов Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ - Π³Ρ€ΡƒΠΏΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ "Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ". Для Π²Ρ‹Π΄Π°Ρ‡ "By Title", "By Authors", "By Series".
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SPLITITEMS = 300)

SOPDS_MAXITEMS - ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° ΠΎΠ΄Π½Ρƒ страницу.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_MAXITEMS = 60)

SOPDS_FB2TOEPUB ΠΈ SOPDS_FB2TOMOBI Π·Π°Π΄Π°ΡŽΡ‚ ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°ΠΌ - ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°ΠΌ ΠΈΠ· FB2 Π² EPUB ΠΈ MOBI/
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_FB2TOEPUB = "")
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_FB2TOMOBI = "")

SOPDS_TEMP_DIR Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для копирования ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_TEMP_DIR = os.path.join(BASE_DIR,'tmp'))

SOPDS_TITLE_AS_FILENAME - Если True, Ρ‚ΠΎ ΠΏΡ€ΠΈ скачивании вмСсто ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ названия ΠΊΠ½ΠΈΠ³ΠΈ.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_TITLE_AS_FILENAME = True)

SOPDS_ALPHABET_MENU - Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ мСню Π²Ρ‹Π±ΠΎΡ€Π° Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_ALPHABET_MENU = True)

SOPDS_NOCOVER_PATH - Π€Π°ΠΉΠ» ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΊΠ½ΠΈΠ³ Π±Π΅Π· ΠΎΠ±Π»ΠΎΠΆΠ΅ΠΊ.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_NOCOVER_PATH = os.path.join(BASE_DIR,'static/images/nocover.jpg'))

SOPDS_AUTH - Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ BASIC - Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_AUTH = True)

SOPDS_SERVER_LOG ΠΈ SOPDS_SCANNER_LOG Π·Π°Π΄Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ LOG Ρ„Π°ΠΉΠ»ΠΎΠ² этих процСссов.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SERVER_LOG = os.path.join(BASE_DIR,'opds_catalog/log/sopds_server.log'))
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCANNER_LOG = os.path.join(BASE_DIR,'opds_catalog/log/sopds_scanner.log'))

SOPDS_SERVER_PID ΠΈ SOPDS_SCANNER_PID Π·Π°Π΄Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ PID Ρ„Π°ΠΉΠ»ΠΎΠ² этих процСссов ΠΏΡ€ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΠΈ.
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SERVER_PID = os.path.join(BASE_DIR,'opds_catalog/tmp/sopds_server.pid'))
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCANNER_PID = os.path.join(BASE_DIR,'opds_catalog/tmp/sopds_scanner.pid'))

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ SOPDS_SCAN_SHED_XXX ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ значСния ΡˆΠ΅Π΄ΡƒΠ»Π΅Ρ€Π°, для пСриодичСского сканирования ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΊΠ½ΠΈΠ³ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ manage.py sopds_scanner start. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ страницС: # https://apscheduler.readthedocs.io/en/latest/modules/triggers/cron.html#module-apscheduler.triggers.cron
ИзмСнСния ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Web-интСрфСйс ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку провСряСтся процСссом sopds_scanner ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚. Π’ случаС обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ sopds_scanner автоматичСски вносит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΠ²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ.

(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCAN_SHED_MIN = '0')
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCAN_SHED_HOUR = '0,12')
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCAN_SHED_DAY = '')
(ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ SOPDS_SCAN_SHED_DOW = '
')

SOPDS_SCAN_START_DIRECTLY - установка для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° значСния True, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ процСссом sopds_scanner этого Ρ„Π»Π°Π³Π° (ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 ΠΌΠΈΠ½ΡƒΡ‚) запустится Π²Π½Π΅ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ сканированСи ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π° ΡƒΠΊΠ°Π·Π°Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ вновь ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒΡΡ Π² False.

About

Simple opds catalog

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.7%
  • HTML 8.3%