Loading README.md +23 −6 Original line number Diff line number Diff line Loading @@ -8,12 +8,19 @@ - Требуется Python не ниже версии 3.3 (используется атрибут zlib.Decompressor.eof, введенный в версии 3.3) - Django 1.8 - Pillow 2.9.0 - apscheduler - apscheduler 3.3.0 Для работы проекта необходимо установить указанные зависимости: 1.2 Установка проекта (Fedora, RedHat, CentOS) yum install python3 pip install -r requirements.txt 1.2 Установка проекта Загрузить архив с проектом можно с сайта www.sopds.ru, либо из github.com следующей командой: git clone git@github.com:mitshel/sopds.git 1.3 Настраиваем ./sopds/settings.py (настройки в конце файла) SOPDS_ROOT_LIB = < Путь к каталогу с книгами > Loading @@ -28,17 +35,21 @@ 1.5 Cоздаем суперпользователя python3 python manage.py createsuperuser python3 manage.py createsuperuser 1.6 Вручную запускаем разовое сканирование коллекции книг (Выполняется очень долго) python3 manage.py sopds_scanner scan python3 manage.py sopds_scanner scan --daemon 1.7 Запускаем HTTP/OPDS сервер python3 manage.py sopds_server start --daemon 1.8 Запускаем SCANNER сервер 1.8 Запускаем SCANNER сервер (опционально, необходим для автоматизированного периодического пересканирования коллекции) Перед запуском SCANNER сервера необходимо убедится, что сканирование, запущеное в п.1.6 уже завершено, т.к. может возникнуть ситуация с запуском параллельного процесса сканирования, что может привести к ошибкам. Примите во внимание, что в настройках, указанных в п.1.3 задан периодический запуск сканирования 2 раза в день 12:00 и 0:00. python3 manage.py sopds_scanner start --daemon Loading @@ -47,6 +58,12 @@ > OPDS-версия: http://<Ваш сервер>:8001/ > HTTP-версия: http://<Ваш сервер>:8001/web/ Следует принять во внимание, что по умолчанию в проекте используется простая БД sqlite3, которая является одно-пользовательской. Поэтому пока не будет завершен процесс сканирования, запущенный ранее пунктом 1.6 попытки доступа к серверу будут завершаться ошибкой "A server error occurred. Please contact the administrator." Для устранения указанной проблемы необходимо ипользовать многопользовательские БД, Например MYSQL. #### 2. Настройка базы данных MySQL (опционально, но очень желательно для увеличения производительности). 2.1 Если Вы уже запустили HTTP/OPDS сервер и SCANNER сервер, то потребуется сначала остановить их: Loading opds_catalog/__pycache__/settings.cpython-35.pyc −29 B (3.33 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/locale/ru/LC_MESSAGES/django.mo (4.22 KiB) File changed.No diff preview for this file type. View original file View changed file opds_catalog/locale/ru/LC_MESSAGES/django.po +46 −41 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-08-31 21:49+0300\n" "POT-Creation-Date: 2016-11-06 23:32+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" Loading @@ -20,67 +20,67 @@ msgstr "" "10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%" "100>=11 && n%100<=14)? 2 : 3);\n" #: .\opds_catalog\feeds.py:121 .\opds_catalog\tests\test_feeds.py:76 #: .\opds_catalog\feeds.py:119 .\opds_catalog\tests\test_feeds.py:76 #, python-format msgid "All books by %(last_name)s %(first_name)s" msgstr "Все книги автора %(last_name)s %(first_name)s" #: .\opds_catalog\feeds.py:133 #: .\opds_catalog\feeds.py:131 msgid "Book doublicates" msgstr "Дубликаты книги" #: .\opds_catalog\feeds.py:155 .\opds_catalog\feeds.py:213 #: .\opds_catalog\feeds.py:215 .\opds_catalog\tests\test_feeds.py:22 #: .\opds_catalog\feeds.py:153 .\opds_catalog\feeds.py:211 #: .\opds_catalog\feeds.py:213 .\opds_catalog\tests\test_feeds.py:22 msgid "By catalogs" msgstr "По каталогам" #: .\opds_catalog\feeds.py:156 .\opds_catalog\tests\test_feeds.py:23 #: .\opds_catalog\feeds.py:154 .\opds_catalog\tests\test_feeds.py:23 #, python-format msgid "Catalogs: %(catalogs)s, books: %(books)s." msgstr "Каталогов: %(catalogs)s, книг: %(books)s." #: .\opds_catalog\feeds.py:157 #: .\opds_catalog\feeds.py:155 msgid "By authors" msgstr "По авторам" #: .\opds_catalog\feeds.py:158 .\opds_catalog\tests\test_feeds.py:24 #: .\opds_catalog\feeds.py:156 .\opds_catalog\tests\test_feeds.py:24 #, python-format msgid "Authors: %(authors)s." msgstr "Авторов: %(authors)s." #: .\opds_catalog\feeds.py:159 #: .\opds_catalog\feeds.py:157 msgid "By titles" msgstr "По наименованиям" #: .\opds_catalog\feeds.py:160 #: .\opds_catalog\feeds.py:158 #, python-format msgid "Books: %(books)s." msgstr "Книг: %(books)s." #: .\opds_catalog\feeds.py:161 #: .\opds_catalog\feeds.py:159 msgid "By genres" msgstr "По жанрам" #: .\opds_catalog\feeds.py:162 .\opds_catalog\tests\test_feeds.py:25 #: .\opds_catalog\feeds.py:160 .\opds_catalog\tests\test_feeds.py:25 #, python-format msgid "Genres: %(genres)s." msgstr "Жанров: %(genres)s." #: .\opds_catalog\feeds.py:163 #: .\opds_catalog\feeds.py:161 msgid "By series" msgstr "По сериям" #: .\opds_catalog\feeds.py:164 #: .\opds_catalog\feeds.py:162 #, python-format msgid "Series: %(series)s." msgstr "Серий: %(series)s." #: .\opds_catalog\feeds.py:168 #: .\opds_catalog\feeds.py:166 #, python-format msgid "%(username)s Book shelf" msgstr "Книжная полка (%(username)s)" #: .\opds_catalog\feeds.py:169 #: .\opds_catalog\feeds.py:167 #, python-format msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." Loading Loading @@ -117,110 +117,115 @@ msgstr "дубликаты скрыты" msgid "doubles show" msgstr "дубликаты показаны" #: .\opds_catalog\feeds.py:501 #: .\opds_catalog\feeds.py:504 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:522 #: .\opds_catalog\feeds.py:525 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:522 #: .\opds_catalog\feeds.py:525 msgid "Books by author and series" msgstr "Книги по авторам и сериям" #: .\opds_catalog\feeds.py:523 #: .\opds_catalog\feeds.py:526 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:523 #: .\opds_catalog\feeds.py:526 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:524 #: .\opds_catalog\feeds.py:527 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:524 #: .\opds_catalog\feeds.py:527 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:556 #: .\opds_catalog\feeds.py:559 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:607 .\opds_catalog\feeds.py:683 #: .\opds_catalog\feeds.py:610 .\opds_catalog\feeds.py:686 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:623 #: .\opds_catalog\feeds.py:626 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:707 #: .\opds_catalog\feeds.py:710 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:718 .\opds_catalog\tests\test_feeds.py:104 #: .\opds_catalog\feeds.py:722 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:104 #: .\opds_catalog\tests\test_feeds.py:117 #: .\opds_catalog\tests\test_feeds.py:128 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:719 .\opds_catalog\tests\test_feeds.py:105 #: .\opds_catalog\feeds.py:723 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:105 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:720 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\feeds.py:724 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:106 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:721 .\opds_catalog\tests\test_feeds.py:107 #: .\opds_catalog\feeds.py:725 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:107 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:722 .\opds_catalog\tests\test_feeds.py:108 #: .\opds_catalog\feeds.py:726 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:108 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:753 #: .\opds_catalog\feeds.py:757 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:790 .\opds_catalog\feeds.py:958 #: .\opds_catalog\feeds.py:794 .\opds_catalog\feeds.py:962 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:812 #: .\opds_catalog\feeds.py:816 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:849 #: .\opds_catalog\feeds.py:853 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:871 #: .\opds_catalog\feeds.py:875 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:908 #: .\opds_catalog\feeds.py:912 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 #, python-format msgid "Select genres (%s)" msgstr "Выбор жанра (%s)" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 msgid "section" msgstr "секция" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 msgid "subsection" msgstr "подсекция" Loading opds_catalog/management/commands/__pycache__/sopds_scanner.cpython-35.pyc +10 B (4.6 KiB) File changed.No diff preview for this file type. View original file View changed file Loading
README.md +23 −6 Original line number Diff line number Diff line Loading @@ -8,12 +8,19 @@ - Требуется Python не ниже версии 3.3 (используется атрибут zlib.Decompressor.eof, введенный в версии 3.3) - Django 1.8 - Pillow 2.9.0 - apscheduler - apscheduler 3.3.0 Для работы проекта необходимо установить указанные зависимости: 1.2 Установка проекта (Fedora, RedHat, CentOS) yum install python3 pip install -r requirements.txt 1.2 Установка проекта Загрузить архив с проектом можно с сайта www.sopds.ru, либо из github.com следующей командой: git clone git@github.com:mitshel/sopds.git 1.3 Настраиваем ./sopds/settings.py (настройки в конце файла) SOPDS_ROOT_LIB = < Путь к каталогу с книгами > Loading @@ -28,17 +35,21 @@ 1.5 Cоздаем суперпользователя python3 python manage.py createsuperuser python3 manage.py createsuperuser 1.6 Вручную запускаем разовое сканирование коллекции книг (Выполняется очень долго) python3 manage.py sopds_scanner scan python3 manage.py sopds_scanner scan --daemon 1.7 Запускаем HTTP/OPDS сервер python3 manage.py sopds_server start --daemon 1.8 Запускаем SCANNER сервер 1.8 Запускаем SCANNER сервер (опционально, необходим для автоматизированного периодического пересканирования коллекции) Перед запуском SCANNER сервера необходимо убедится, что сканирование, запущеное в п.1.6 уже завершено, т.к. может возникнуть ситуация с запуском параллельного процесса сканирования, что может привести к ошибкам. Примите во внимание, что в настройках, указанных в п.1.3 задан периодический запуск сканирования 2 раза в день 12:00 и 0:00. python3 manage.py sopds_scanner start --daemon Loading @@ -47,6 +58,12 @@ > OPDS-версия: http://<Ваш сервер>:8001/ > HTTP-версия: http://<Ваш сервер>:8001/web/ Следует принять во внимание, что по умолчанию в проекте используется простая БД sqlite3, которая является одно-пользовательской. Поэтому пока не будет завершен процесс сканирования, запущенный ранее пунктом 1.6 попытки доступа к серверу будут завершаться ошибкой "A server error occurred. Please contact the administrator." Для устранения указанной проблемы необходимо ипользовать многопользовательские БД, Например MYSQL. #### 2. Настройка базы данных MySQL (опционально, но очень желательно для увеличения производительности). 2.1 Если Вы уже запустили HTTP/OPDS сервер и SCANNER сервер, то потребуется сначала остановить их: Loading
opds_catalog/__pycache__/settings.cpython-35.pyc −29 B (3.33 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/locale/ru/LC_MESSAGES/django.mo (4.22 KiB) File changed.No diff preview for this file type. View original file View changed file
opds_catalog/locale/ru/LC_MESSAGES/django.po +46 −41 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-08-31 21:49+0300\n" "POT-Creation-Date: 2016-11-06 23:32+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" Loading @@ -20,67 +20,67 @@ msgstr "" "10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%" "100>=11 && n%100<=14)? 2 : 3);\n" #: .\opds_catalog\feeds.py:121 .\opds_catalog\tests\test_feeds.py:76 #: .\opds_catalog\feeds.py:119 .\opds_catalog\tests\test_feeds.py:76 #, python-format msgid "All books by %(last_name)s %(first_name)s" msgstr "Все книги автора %(last_name)s %(first_name)s" #: .\opds_catalog\feeds.py:133 #: .\opds_catalog\feeds.py:131 msgid "Book doublicates" msgstr "Дубликаты книги" #: .\opds_catalog\feeds.py:155 .\opds_catalog\feeds.py:213 #: .\opds_catalog\feeds.py:215 .\opds_catalog\tests\test_feeds.py:22 #: .\opds_catalog\feeds.py:153 .\opds_catalog\feeds.py:211 #: .\opds_catalog\feeds.py:213 .\opds_catalog\tests\test_feeds.py:22 msgid "By catalogs" msgstr "По каталогам" #: .\opds_catalog\feeds.py:156 .\opds_catalog\tests\test_feeds.py:23 #: .\opds_catalog\feeds.py:154 .\opds_catalog\tests\test_feeds.py:23 #, python-format msgid "Catalogs: %(catalogs)s, books: %(books)s." msgstr "Каталогов: %(catalogs)s, книг: %(books)s." #: .\opds_catalog\feeds.py:157 #: .\opds_catalog\feeds.py:155 msgid "By authors" msgstr "По авторам" #: .\opds_catalog\feeds.py:158 .\opds_catalog\tests\test_feeds.py:24 #: .\opds_catalog\feeds.py:156 .\opds_catalog\tests\test_feeds.py:24 #, python-format msgid "Authors: %(authors)s." msgstr "Авторов: %(authors)s." #: .\opds_catalog\feeds.py:159 #: .\opds_catalog\feeds.py:157 msgid "By titles" msgstr "По наименованиям" #: .\opds_catalog\feeds.py:160 #: .\opds_catalog\feeds.py:158 #, python-format msgid "Books: %(books)s." msgstr "Книг: %(books)s." #: .\opds_catalog\feeds.py:161 #: .\opds_catalog\feeds.py:159 msgid "By genres" msgstr "По жанрам" #: .\opds_catalog\feeds.py:162 .\opds_catalog\tests\test_feeds.py:25 #: .\opds_catalog\feeds.py:160 .\opds_catalog\tests\test_feeds.py:25 #, python-format msgid "Genres: %(genres)s." msgstr "Жанров: %(genres)s." #: .\opds_catalog\feeds.py:163 #: .\opds_catalog\feeds.py:161 msgid "By series" msgstr "По сериям" #: .\opds_catalog\feeds.py:164 #: .\opds_catalog\feeds.py:162 #, python-format msgid "Series: %(series)s." msgstr "Серий: %(series)s." #: .\opds_catalog\feeds.py:168 #: .\opds_catalog\feeds.py:166 #, python-format msgid "%(username)s Book shelf" msgstr "Книжная полка (%(username)s)" #: .\opds_catalog\feeds.py:169 #: .\opds_catalog\feeds.py:167 #, python-format msgid "%(username)s books readed: %(bookshelf)s." msgstr "Книг прочитано (%(username)s): %(bookshelf)s." Loading Loading @@ -117,110 +117,115 @@ msgstr "дубликаты скрыты" msgid "doubles show" msgstr "дубликаты показаны" #: .\opds_catalog\feeds.py:501 #: .\opds_catalog\feeds.py:504 msgid "Series by authors select" msgstr "Выбор серий у автора" #: .\opds_catalog\feeds.py:522 #: .\opds_catalog\feeds.py:525 msgid "Books by series" msgstr "Книги по сериям" #: .\opds_catalog\feeds.py:522 #: .\opds_catalog\feeds.py:525 msgid "Books by author and series" msgstr "Книги по авторам и сериям" #: .\opds_catalog\feeds.py:523 #: .\opds_catalog\feeds.py:526 msgid "Books outside series" msgstr "Книги вне серий" #: .\opds_catalog\feeds.py:523 #: .\opds_catalog\feeds.py:526 msgid "Books by author outside series" msgstr "Книги автора вне серий" #: .\opds_catalog\feeds.py:524 #: .\opds_catalog\feeds.py:527 msgid "Books by alphabet" msgstr "Книги по алфавиту" #: .\opds_catalog\feeds.py:524 #: .\opds_catalog\feeds.py:527 msgid "Books by author alphabetical order" msgstr "Книги автора в алфавитном порядке" #: .\opds_catalog\feeds.py:556 #: .\opds_catalog\feeds.py:559 msgid "Authors found" msgstr "Найдены авторы" #: .\opds_catalog\feeds.py:607 .\opds_catalog\feeds.py:683 #: .\opds_catalog\feeds.py:610 .\opds_catalog\feeds.py:686 #, python-format msgid "Books count: %s" msgstr "Всего: %s книг" #: .\opds_catalog\feeds.py:623 #: .\opds_catalog\feeds.py:626 msgid "Series found" msgstr "Найдены серии" #: .\opds_catalog\feeds.py:707 #: .\opds_catalog\feeds.py:710 msgid "Select language" msgstr "Выбор алфавита" #: .\opds_catalog\feeds.py:718 .\opds_catalog\tests\test_feeds.py:104 #: .\opds_catalog\feeds.py:722 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:104 #: .\opds_catalog\tests\test_feeds.py:117 #: .\opds_catalog\tests\test_feeds.py:128 msgid "Cyrillic" msgstr "Кириллица (РУС)" #: .\opds_catalog\feeds.py:719 .\opds_catalog\tests\test_feeds.py:105 #: .\opds_catalog\feeds.py:723 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:105 msgid "Latin" msgstr "Латинница (LAT)" #: .\opds_catalog\feeds.py:720 .\opds_catalog\tests\test_feeds.py:106 #: .\opds_catalog\feeds.py:724 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:106 msgid "Digits" msgstr "Цифры (0..9)" #: .\opds_catalog\feeds.py:721 .\opds_catalog\tests\test_feeds.py:107 #: .\opds_catalog\feeds.py:725 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:107 msgid "Other symbols" msgstr "Другие символы" #: .\opds_catalog\feeds.py:722 .\opds_catalog\tests\test_feeds.py:108 #: .\opds_catalog\feeds.py:726 .\opds_catalog\models.py:16 #: .\opds_catalog\tests\test_feeds.py:108 msgid "Show all" msgstr "Показать все" #: .\opds_catalog\feeds.py:753 #: .\opds_catalog\feeds.py:757 msgid "Select books by substring" msgstr "Поиск книг по подстроке" #: .\opds_catalog\feeds.py:790 .\opds_catalog\feeds.py:958 #: .\opds_catalog\feeds.py:794 .\opds_catalog\feeds.py:962 #, python-format msgid "Found: %s books" msgstr "Найдено %s книг" #: .\opds_catalog\feeds.py:812 #: .\opds_catalog\feeds.py:816 msgid "Select authors by substring" msgstr "Поиск авторов по подстроке" #: .\opds_catalog\feeds.py:849 #: .\opds_catalog\feeds.py:853 #, python-format msgid "Found: %s authors" msgstr "Найдено %s авторов" #: .\opds_catalog\feeds.py:871 #: .\opds_catalog\feeds.py:875 msgid "Select series by substring" msgstr "Поиск серий по подстроке" #: .\opds_catalog\feeds.py:908 #: .\opds_catalog\feeds.py:912 #, python-format msgid "Found: %s series" msgstr "Найдено %s серий" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 #, python-format msgid "Select genres (%s)" msgstr "Выбор жанра (%s)" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 msgid "section" msgstr "секция" #: .\opds_catalog\feeds.py:929 #: .\opds_catalog\feeds.py:933 msgid "subsection" msgstr "подсекция" Loading
opds_catalog/management/commands/__pycache__/sopds_scanner.cpython-35.pyc +10 B (4.6 KiB) File changed.No diff preview for this file type. View original file View changed file