-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from janeczku/master
Merge oryginalnego repo
- Loading branch information
Showing
574 changed files
with
192,477 additions
and
211,966 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
root = true | ||
|
||
[*] | ||
end_of_line = lf | ||
insert_final_newline = true | ||
indent_style = space | ||
|
||
[*.{js,py}] | ||
indent_size = 4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
{ | ||
"env": { | ||
"browser": true, | ||
"jquery": true | ||
}, | ||
"globals": { | ||
"alert": true | ||
}, | ||
"rules": { | ||
"arrow-parens": 2, | ||
"block-scoped-var": 1, | ||
"brace-style": 2, | ||
"camelcase": 1, | ||
"comma-spacing": 2, | ||
"curly": [2, "multi-line", "consistent"], | ||
"eqeqeq": 2, | ||
"indent": [ | ||
2, | ||
4, | ||
{ | ||
"SwitchCase": 1 | ||
} | ||
], | ||
"keyword-spacing": 2, | ||
"linebreak-style": 2, | ||
"new-cap": 2, | ||
"no-dupe-args": 2, | ||
"no-dupe-class-members": 2, | ||
"no-dupe-keys": 2, | ||
"no-duplicate-case": 2, | ||
"no-caller": 2, | ||
"no-class-assign": 2, | ||
"no-cond-assign": 2, | ||
"no-const-assign": 2, | ||
"no-console": 2, | ||
"no-debugger": 2, | ||
"no-delete-var": 2, | ||
"no-empty": 2, | ||
"no-eval": 2, | ||
"no-extend-native": 2, | ||
"no-extra-boolean-cast": 2, | ||
"no-extra-semi": 2, | ||
"no-fallthrough": [ | ||
2, | ||
{ | ||
"commentPattern": "break[\\s\\w]*omitted" | ||
} | ||
], | ||
"no-implied-eval": 2, | ||
"no-invalid-regexp": 2, | ||
"no-irregular-whitespace": 2, | ||
"no-iterator": 2, | ||
"no-loop-func": 2, | ||
"no-mixed-operators": 2, | ||
"no-mixed-spaces-and-tabs": 2, | ||
"no-multi-str": 2, | ||
"no-new": 2, | ||
"no-obj-calls": 2, | ||
"no-octal": 2, | ||
"no-redeclare": 2, | ||
"no-regex-spaces": 2, | ||
"no-script-url": 2, | ||
"no-sparse-arrays": 2, | ||
"no-undef": 2, | ||
"no-undefined": 2, | ||
"no-unreachable": 2, | ||
"no-unsafe-negation": 2, | ||
"no-unused-vars": 2, | ||
"no-use-before-define": [ | ||
2, | ||
{ | ||
"classes": false, | ||
"functions": false | ||
} | ||
], | ||
"quotes": [ | ||
2, | ||
"double" | ||
], | ||
"require-yield": 2, | ||
"semi": [ | ||
2, | ||
"always" | ||
], | ||
"space-before-blocks": 2, | ||
"space-infix-ops": 2, | ||
"space-unary-ops": 2, | ||
"use-isnan": 2, | ||
"valid-typeof": 2, | ||
"wrap-iife": [ | ||
2, | ||
"any" | ||
], | ||
"yield-star-spacing": 2 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
web.py ident export-subst | ||
constants.py ident export-subst | ||
/test export-ignore | ||
cps/static/css/libs/* linguist-vendored | ||
cps/static/js/libs/* linguist-vendored |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
graft src/calibreweb |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# About | ||
|
||
Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing [Calibre](https://calibre-ebook.com) database. | ||
|
||
*This software is a fork of [library](https://github.com/mutschler/calibreserver) and licensed under the GPL v3 License.* | ||
|
||
![Main screen](https://github.com/janeczku/calibre-web/wiki/images/main_screen.png) | ||
|
||
## Features | ||
|
||
- Bootstrap 3 HTML5 interface | ||
- full graphical setup | ||
- User management with fine grained per-user permissions | ||
- Admin interface | ||
- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, ukrainian | ||
- OPDS feed for eBook reader apps | ||
- Filter and search by titles, authors, tags, series and language | ||
- Create custom book collection (shelves) | ||
- Support for editing eBook metadata and deleting eBooks from Calibre library | ||
- Support for converting eBooks through Calibre binaries | ||
- Restrict eBook download to logged-in users | ||
- Support for public user registration | ||
- Send eBooks to Kindle devices with the click of a button | ||
- Support for reading eBooks directly in the browser (.txt, .epub, .pdf, .cbr, .cbt, .cbz) | ||
- Upload new books in many formats | ||
- Support for Calibre custom columns | ||
- Ability to hide content based on categories for certain users | ||
- Self update capability | ||
- "Magic Link" login to make it easy to log on eReaders | ||
|
||
## Quick start | ||
|
||
1. Install dependencies by running `pip install --target vendor -r requirements.txt`. | ||
2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window) | ||
3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog | ||
4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\ | ||
Optionally a Google Drive can be used to host the calibre library [-> Using Google Drive integration](https://github.com/janeczku/calibre-web/wiki/Configuration#using-google-drive-integration) | ||
5. Go to Login page | ||
|
||
**Default admin login:**\ | ||
*Username:* admin\ | ||
*Password:* admin123 | ||
|
||
**Issues with Ubuntu:** | ||
Please note that running the above install command can fail on some versions of Ubuntu, saying `"can't combine user with prefix"`. This is a [known bug](https://github.com/pypa/pip/issues/3826) and can be remedied by using the command `pip install --system --target vendor -r requirements.txt` instead. | ||
|
||
## Requirements | ||
|
||
Python 2.7+, python 3.x+ | ||
|
||
Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata: | ||
|
||
[Download and install](https://calibre-ebook.com/download) the Calibre desktop program for your platform and enter the folder including programm name (normally /opt/calibre/ebook-convert, or C:\Program Files\calibre\ebook-convert.exe) in the field "calibre's converter tool" on the setup page. | ||
|
||
\*** DEPRECATED \*** Support will be removed in future releases | ||
|
||
[Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named as `kindlegen` in the `vendor` folder. | ||
|
||
## Docker Images | ||
|
||
Pre-built Docker images are available in these Docker Hub repositories: | ||
|
||
#### **Technosoft2000 - x64** | ||
+ Docker Hub - [https://hub.docker.com/r/technosoft2000/calibre-web/](https://hub.docker.com/r/technosoft2000/calibre-web/) | ||
+ Github - [https://github.com/Technosoft2000/docker-calibre-web](https://github.com/Technosoft2000/docker-calibre-web) | ||
|
||
Includes the Calibre `ebook-convert` binary. | ||
+ The "path to convertertool" should be set to `/opt/calibre/ebook-convert` | ||
|
||
#### **LinuxServer - x64, armhf, aarch64** | ||
+ Docker Hub - [https://hub.docker.com/r/linuxserver/calibre-web/](https://hub.docker.com/r/linuxserver/calibre-web/) | ||
+ Github - [https://github.com/linuxserver/docker-calibre-web](https://github.com/linuxserver/docker-calibre-web) | ||
+ Github - (Optional Calibre layer) - [https://github.com/linuxserver/docker-calibre-web/tree/calibre](https://github.com/linuxserver/docker-calibre-web/tree/calibre) | ||
|
||
This image has the option to pull in an extra docker manifest layer to include the Calibre `ebook-convert` binary. Just include the environmental variable `DOCKER_MODS=linuxserver/calibre-web:calibre` in your docker run/docker compose file. **(x64 only)** | ||
|
||
If you do not need this functionality then this can be omitted, keeping the image as lightweight as possible. | ||
|
||
Both the Calibre-Web and Calibre-Mod images are rebuilt automatically on new releases of Calibre-Web and Calibre respectively, and on updates to any included base image packages on a weekly basis if required. | ||
+ The "path to convertertool" should be set to `/usr/bin/ebook-convert` | ||
+ The "path to unrar" should be set to `/usr/bin/unrar` | ||
|
||
# Wiki | ||
|
||
For further informations, How To's and FAQ please check the [Wiki](https://github.com/janeczku/calibre-web/wiki) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,68 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
import os | ||
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) | ||
# Copyright (C) 2012-2019 OzzieIsaacs | ||
# | ||
# This program is free software: you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License as published by | ||
# the Free Software Foundation, either version 3 of the License, or | ||
# (at your option) any later version. | ||
# | ||
# This program is distributed in the hope that it will be useful, | ||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU General Public License | ||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
from __future__ import absolute_import, division, print_function, unicode_literals | ||
import sys | ||
import os | ||
|
||
|
||
base_path = os.path.dirname(os.path.abspath(__file__)) | ||
# Insert local directories into path | ||
sys.path.append(base_path) | ||
sys.path.append(os.path.join(base_path, 'cps')) | ||
sys.path.append(os.path.join(base_path, 'vendor')) | ||
if sys.version_info < (3, 0): | ||
sys.path.append(os.path.dirname(os.path.abspath(__file__.decode('utf-8')))) | ||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__.decode('utf-8'))), 'vendor')) | ||
else: | ||
sys.path.append(os.path.dirname(os.path.abspath(__file__))) | ||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'vendor')) | ||
|
||
from cps import web | ||
|
||
from cps import create_app | ||
from cps import web_server | ||
from cps.opds import opds | ||
from cps.web import web | ||
from cps.jinjia import jinjia | ||
from cps.about import about | ||
from cps.shelf import shelf | ||
from cps.admin import admi | ||
from cps.gdrive import gdrive | ||
from cps.editbooks import editbook | ||
try: | ||
from gevent.wsgi import WSGIServer | ||
gevent_present = True | ||
from cps.oauth_bb import oauth | ||
oauth_available = True | ||
except ImportError: | ||
from tornado.wsgi import WSGIContainer | ||
from tornado.httpserver import HTTPServer | ||
from tornado.ioloop import IOLoop | ||
gevent_present = False | ||
oauth_available = False | ||
|
||
|
||
def main(): | ||
app = create_app() | ||
app.register_blueprint(web) | ||
app.register_blueprint(opds) | ||
app.register_blueprint(jinjia) | ||
app.register_blueprint(about) | ||
app.register_blueprint(shelf) | ||
app.register_blueprint(admi) | ||
app.register_blueprint(gdrive) | ||
app.register_blueprint(editbook) | ||
if oauth_available: | ||
app.register_blueprint(oauth) | ||
success = web_server.start() | ||
sys.exit(0 if success else 1) | ||
|
||
|
||
if __name__ == '__main__': | ||
if web.ub.DEVELOPMENT: | ||
web.app.run(port=web.ub.config.config_port, debug=True) | ||
else: | ||
if gevent_present: | ||
web.app.logger.info('Attempting to start gevent') | ||
web.start_gevent() | ||
else: | ||
web.app.logger.info('Falling back to Tornado') | ||
http_server = HTTPServer(WSGIContainer(web.app)) | ||
http_server.listen(web.ub.config.config_port) | ||
IOLoop.instance().start() | ||
IOLoop.instance().close(True) | ||
|
||
if web.helper.global_task == 0: | ||
web.app.logger.info("Performing restart of Calibre-web") | ||
os.execl(sys.executable, sys.executable, *sys.argv) | ||
else: | ||
web.app.logger.info("Performing shutdown of Calibre-web") | ||
sys.exit(0) | ||
main() |
Oops, something went wrong.