Free program for Linux operating systems, designed to quickly create an electronic OPDS-catalog books. OPDS (Open Publication Distribution System) catalog allows you to access Your library via the Internet from most devices for reading electronic books, tablets, smartphones, etc.
- Recursive crawl specified in the directory configuration file. High speed of scanning-cataloging.
- Placement in the catalog of e-books, any formats specified in the configuration file.
- Extraction of meta information from ebooks FB2, EPUB, MOBI (title, authors, genres, series, abstract, language, editing date).
- The retrieval and display of covers of e-books FB2, EPUB, MOBI.
- Duplicate detection of books.
- Search books in zip-archives.
- Fast download collections of INPX file.
- There are five possible sorts in the catalog: by catalogs, by authors, by name, by genre, by series.
- Arbitrary search books by name, author name and series name.
- You can set a limit to whether items are displayed on a page.
- Archiving of books for downloading.
- Conversion of FB2 books to EPUB and MOBI "on the fly" using external converters.
- Database support SQLite, MySQL, PostgreSQL
mak@denied ~ $ go get github.com/mak-alex/mopds # get project
mak@denied ~ $ cd $GOPATH/src/github.com/mak-alex/mopds # go to the directory
mak@denied ~ $ go get # get depends
mak@denied ~ $ make run # start project
mak@denied ~ $ make build # build project
mak@denied ~ $ make clean # clean project
-about
About author and this project
-catalog string
Directory of library (mandatory)
-config string
Default configuration file (default "./conf/mopds.conf")
-database string
Database name connect to database
-dbtype string
Type used database: sqlite3, mysql or postgres (default "sqlite3")
-get_author uint
Get author by id
-get_authors
List all authors
-get_book uint
Get book by id
-get_books
List all books
-get_books_by_author uint
List all author's books by id
-get_books_by_genre uint
List all genre's books by id
-get_books_by_serie uint
List all serie's books by id
-get_genre uint
Get genre by id
-get_genres
List all genres
-get_serie uint
Get serie by id
-get_series
List all series
-host string
IP address for connect to database (default "modps")
-listen string
Set server listen address:port (default ":8000")
-page int
Pagination 1...n
-parse
Parse inpx to the local database
-password string
Password for connect to database (default "mopds")
-per_page int
Limit results (-1 for no limit) (default 25)
-save
Save book file to the disk (ex.: --get_book 1 --save)
-search_author string
Search authors, or books by author if comes with search-title
-search_book string
Search book by title or filename
-search_genre string
Search genre by genre name or section, or subsection
-search_lib_id string
Search book(s) by its libId
-search_serie string
Search serie by serie name
-search_title string
Search books by their title
-sslmode string
Whether to use ssl mode or not, here's the question: disable or enable
-stat
Book library statistics
-username string
Username for connect to database (default "mopds")
-verbose
Verbose output
page 1
per_page 25
listen :8000
host localhost
username mopds
password mopds
database mopds
dbtype postgres
sslmode disable
mOPDS
├── conf
│ ├── genre.json
│ └── mopds.conf - configuration file
├── LICENSE
├── Makefile - run and build project
├── models - database model
│ ├── annnotation.go
│ ├── author.go
│ ├── book.go
│ ├── catalog.go
│ ├── cover.go
│ ├── dbconfig.go
│ ├── devinfo.go
│ ├── genre.go
│ ├── paginate.go
│ ├── search.go
│ ├── serie.go
│ └── summary.go
├── modules - mopdules for working with database, pagination, inpx files, etc..
│ ├── books
│ │ ├── archive-utils.go
│ │ └── scan.go
│ ├── datastore
│ │ ├── datastore.go
│ │ └── datastorer.go
│ ├── fb2parse
│ │ └── parser.go
│ ├── paginate
│ │ └── paginate.go
│ ├── prettyjson
│ │ └── prettyjson.go
│ ├── rest
│ │ ├── restserver.go
│ │ └── restservice.go
├── mopds.go
├── Readme.md
└── utils
└── utils.go - auxiliary functions, format conversion, etc.
mak@denied ~ $ id=`http POST :8000/api/v1/login username=admin password=admin | grep token | cut -d "\"" -f 4`
mak@denied ~ $ http :8000/api/v1/langs "Authorization: Bearer ${id}"
mak@denied ~ $ http :8000/authors
mak@denied ~ $ http :8000/authors/1
mak@denied ~ $ http :8000/authors/1/books
mak@denied ~ $ http :8000/books
mak@denied ~ $ http :8000/books/1
mak@denied ~ $ http :8000/books/1/download
mak@denied ~ $ http :8000/genres
mak@denied ~ $ http :8000/genres/1
mak@denied ~ $ http :8000/genres/1/books
mak@denied ~ $ http :8000/series
mak@denied ~ $ http :8000/series/1
mak@denied ~ $ http :8000/series/1/books
mak@denied ~ $ http :8000/scan
mak@denied ~ $ http :8000/conf
mak@denied ~ $ http --form POST :8000/conf data="catalog /mnt/books"
mak@denied ~ $ http POST :8000/api/v1/authors/search author=перумов
mak@denied ~ $ http POST :8000/api/v1/books/search title="Ген Химеры Часть 1"
mak@denied ~ $ http POST :8000/api/v1/genres/search genre="Народные песни"
mak@denied ~ $ http POST :8000/api/v1/series/search title="Ген Химеры"
mak@denied ~ $ http GET :8000/api/v1/authors/1/books?random=true&no-details=true
mak@denied ~ $ http GET :8000/api/v1/books?random=true&no-details=true
mak@denied ~ $ http GET :8000/api/v1/genres/1/books?random=true&no-details=true
mak@denied ~ $ http GET :8000/api/v1/series/1/books?random=true&no-details=true
- github.com/namsreal/flag
- ant0ine/go-json-rest
- StephanDollberg/go-json-rest-middleware-jwt
- github.com/jinzhu/gorm
- add support for other book formats, epub/mobi/pdf/etc
- add the indexing process in the API output, etc.
- add opds catalog functionality
- add check and downloading the missing weekly archives from flibusta.is
- add user interface based this library marcusolsson/tui-go
- add normal web interface (need enthusiast who will help make a beautiful and fast interface)
- to optimize and speed up the work of indexing books to work on low-power computers (example cubieboard/RPi / BeagleBone/WirenBoard / etc)
- to fix the problem with encoding when indexing a file from the archive