{"id":13455897,"url":"https://github.com/th3r00t/pyShelf","last_synced_at":"2025-03-24T09:31:00.253Z","repository":{"id":39987325,"uuid":"210694209","full_name":"th3r00t/pyShelf","owner":"th3r00t","description":"A simple terminal based ebook server","archived":false,"fork":false,"pushed_at":"2023-11-27T20:21:29.000Z","size":112000,"stargazers_count":518,"open_issues_count":11,"forks_count":33,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-10-28T23:33:25.733Z","etag":null,"topics":["ebook-server","hacktoberfest","python3","terminal-based"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/th3r00t.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null},"funding":{"github":"th3r00t","ko_fi":"RaelonMasters"}},"created_at":"2019-09-24T20:43:11.000Z","updated_at":"2024-08-26T15:56:13.000Z","dependencies_parsed_at":"2023-01-29T18:15:37.604Z","dependency_job_id":"3756bebe-d9e0-43ea-acc3-581848177099","html_url":"https://github.com/th3r00t/pyShelf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/th3r00t%2FpyShelf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/th3r00t%2FpyShelf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/th3r00t%2FpyShelf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/th3r00t%2FpyShelf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/th3r00t","download_url":"https://codeload.github.com/th3r00t/pyShelf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245243181,"owners_count":20583578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebook-server","hacktoberfest","python3","terminal-based"],"created_at":"2024-07-31T08:01:13.110Z","updated_at":"2025-03-24T09:30:58.613Z","avatar_url":"https://github.com/th3r00t.png","language":"JavaScript","funding_links":["https://github.com/sponsors/th3r00t","https://ko-fi.com/RaelonMasters"],"categories":["JavaScript","Software"],"sub_categories":["Document Management - E-books"],"readme":"# pyShelf 0.7.0\n\n\u003cp align=\"center\"\u003e\u003cb\u003eTerminal based ebook server. Open source \u0026 Lightweight.\u003c/b\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003eHaving used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own.\u003c/p\u003e\n\n\n![pyShelf 0.6.0 newui](https://github.com/th3r00t/pyShelf/raw/master/src/interface/static/img/pyShelf_frontend_0_2_0.png)\n\n### You dont need an X server to host a website, or your Movie \u0026 Tv collection, so why should you need one to host ebooks?\n\n_Other solutions require you to have access to an X server to at the very least generate your book database, pyShelf doesnt. We aim to provide a fully featured ebook server with minimal requirements, and no reliance on X whatsoever._\n\nFollow or influence development @ \u003cp align=\"center\"\u003e\u003cb\u003e\n    \u003ca href=\"https://discord.gg/H9TbNJS\"\u003eDiscord\u003c/a\u003e\n\u003c/b\u003e\u003c/p\u003e\n## General Notes\nYou may need to click import books a second time if your import fails on the first attempt\n\n## 0.7.0 Patch Notes.\n\n# New Features\n\n* Administration System\n* PDF Support\n\n## Current Features\n\n* Recursive Scanning\n* [Django](https://www.djangoproject.com/) based frontend\n* Seach via author, title, \u0026 file name fields.\n* Download System\n* Automated Collections\n    * A work in progress, the collections are based on your folder structure.\n* User System\n* Per User Favorites\n* Expanded book information view\n* Websocket server\n    * currently only responds to ping, and importBooks, more responders are planned.\n* Full Docker integration.\n* On Demand Importing\n\n| Branch | Support | Feature set |\n| --- | --- | --- |\n| \u003cb\u003eMaster\u003cb\u003e | Bugs get priority | Most stable branch, may be behind in the core feature set |\n | \u003cb\u003eDevelopment\u003c/b\u003e| Please report all bugs | Most active branch, this branch is a rolling release, containing the latest features. There will be bugs here hopefully nothing service killing |\n | \u003cb\u003eOthers\u003c/b\u003e | Here there be dragons | These branches are used for day to day development, nothing here should be considered stable.\n\n## Currently Supported Formats\n\n* epub\n* mobi\n* pdf\n\n## Installation \u0026 Support Information\n\n# Installation\n\n## Docker\n\nThe official Docker image for pyShelf is [`pyshelf/pyshelf`](https://hub.docker.com/r/pyshelf/pyshelf). The easiest way to get pyShelf running is through `docker-compose`. An example docker-compose.yml is included in the repo.\n\nYou'll need a `.env` file wich sets the `LOCAL_BOOK_DIR` variable, for example:\n\n```\nLOCAL_BOOK_DIR=/home/someone/books\n```\n\nThe Docker image is still new, so there could still be some issues and missing features. Feel free to create a bug-issue when you encounter a bug. Development of the Docker image is discussed in https://github.com/th3r00t/pyShelf/pull/53 . Currently the database needs to be [PostgreSQL](https://www.postgresql.org/) with the account details shown in the example `docker-compose.yml`.\n    \n    Default User/Pass for web interface: pyshelf/pyshelf\n\n## Self Hosted\nThis is targeted towards Network Administrators, and home enthusiasts whom I assume will know how to setup a [Django](https://www.djangoproject.com/) app, and a [PostgreSQL](https://www.postgresql.org/) server. For those unfamiliar with the required setup please use the included docker-compose.yml\n\n### Pre-req Dependencies\n\n* gcc\n* python3\n* pip\n* postgresql\n\nOnce your database is ready very little is required to get the system up and running:\n\nFrom the main directory\n\n`pip install -r requirements.txt`\n\n`./configure`\n\n`cd src/ \u0026\u0026 daphne frontend.asgi:application` add -b 0.0.0.0 -p 8000 as required to specify which interface\\'s and port to bind too\n\nAs of 0.6.0 Django is being served up via Daphne, and the static files are served up via whitenoise.\n\n## Import Books\nThe first step is to login, after logging in the button whill show your username, click on it once again, and a new menu will pop up with the option to logout, or import books.\n\n## In Progress\n\n### Organizational tools.\n\n- [x] Automated Collections\n- [ ] Manual Collections\n- [x] Books Removal\n- [ ] Access Restrictions\n- [ ] Metadata Manipulation\n- [ ] Ui\\Ux Improvements\n- [ ] Others?\n\n### Improved cover image storage, and acquisition.\n\n### OPDS Support\n\n### Support for other formats\n\n- [x] .mobi\n- [x] .pdf\n- [ ] .cbz\n- [ ] .zip (Zipped book folders, is this a new idea? (Consider storing your library folders zipped and retrieving a book on demand))\n\n## Future Goals\n\n### Terminal Backend for catalogue maintenance\n\n## Development\n\n* [`pre-commit`](https://pre-commit.com/)\n_Before developing, run `pre-commit install` See the [documentation](https://pre-commit.com/) for more information._\n* ['Doxygen'](http://www.doxygen.nl/)\n_Any changes to source should be documented and have run doxygen doxygen.conf prior to commiting._\n* ['sem-ver'](https://semver.org)\n_Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf accordingly._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fth3r00t%2FpyShelf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fth3r00t%2FpyShelf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fth3r00t%2FpyShelf/lists"}