GithubHelp home page GithubHelp logo

pgaskin / bookbrowser Goto Github PK

View Code? Open in Web Editor NEW
605.0 605.0 111.0 64.54 MB

eBook server supporting ePub, MOBI and PDF books.

License: MIT License

Shell 4.60% Go 65.58% CSS 18.70% JavaScript 9.77% Makefile 0.94% Dockerfile 0.40%

bookbrowser's Introduction

  • I am currently studying Software Engineering at Queen's University.
  • I like working on backends embedded systems tool development reverse engineering cybersecurity
  • I know a bit about sysadmin devops networking full-stack web development
  • I have dabbled with electronics 3d-printing pcb design
  • I am experienced with Go JavaScript TypeScript Linux C HTML CSS Bash ARMv7 Android EPUB Docker
  • I am familiar with Windows C++ Java Python SQL PromQL
  • I am learning Rust x64 ARM64 PowerShell Kotlin

Recently, I've been working on

You can find me on

bookbrowser's People

Contributors

eskwayrd avatar geek1011 avatar harnish avatar mathieui avatar nskaggs avatar pgaskin avatar sblinch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bookbrowser's Issues

Feature Request: Persistent Index/Thumbnails

With a lot of ebooks, the indexing operation at start can take a while. My collection of 6,955 books takes about 8 minutes on my system (notably faster than Calibre). On each start, indexing starts fresh and regenerates the same set of thumbnails for covers.

In other issues, you've indicated that your working on filesystem watching and dynamic indexes. It would be great to incorporate a persistent index along with that other work.

Feature Request: Pagination

With a lot of ebooks, the book list (grid view or list view) takes a long time to display. It would be great to have pagination of some sort, or "infinite scroll".

Refactor list generation

There is a lot of repeated code to sort, filter, and generate the lists of books, series, and authors.

Switch to jet templates

This will make #20 easier to implement, clean up the template code, shorten the controller code, have a more concise syntax, and make things easier to maintain.

[Error] PDF cover cannot be shown

Platform: Debian GNU/Linux 8.10 (jessie)

1、[error] PDF cover cannot be shown correctly. See the Picture1 below.
2、[enhancement] Can you add a go-back-to-cover button on epub browser. See the Picture2 below.

Thank you!

Picture1
pdf-cover-error

Picture2
screen shot 2018-01-06 at 19 22 40 1 1

PDF reader broken (on Linux?)

Good evening,

I use Debian Stretch, with both Chrome 66 & Firefox ESR (52.8.0) the PDF viewer displays empty.

Please advise.

Regards,

Alien

Feature Request: Book counts on Author view

In the Author view, there is currently no counter provided for the number of books available. It would be helpful to see the book count without having to click each author's name in turn.

index out of range

A lof ot .epub files are generating these errors (at least the binary should not exist in panic when this is happening ...).

With last published BookBrowser release.

`
2017/12/29 21:35:04 Unlocking book index
panic: runtime error: index out of range

goroutine 1 [running]:
github.com/geek1011/BookBrowser/vendor/github.com/nfnt/resize.imageYCbCrToYCC(0xc42014d580, 0xc)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/vendor/github.com/nfnt/resize/ycc.go:220 +0x66a
github.com/geek1011/BookBrowser/vendor/github.com/nfnt/resize.Resize(0xc8, 0x0, 0xc032c0, 0xc42014d580, 0x2, 0x0, 0x0)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/vendor/github.com/nfnt/resize/resize.go:173 +0x3775
github.com/geek1011/BookBrowser/modules/booklist.NewBookListFromDir(0xc420014044, 0x5, 0xc420018660, 0x19, 0x1, 0x0, 0x0, 0x0, 0x0)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/modules/booklist/booklist.go:96 +0xc72
github.com/geek1011/BookBrowser/modules/server.(*Server).RefreshBookIndex(0xc42011d1f0, 0x0, 0x0)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/modules/server/server.go:77 +0x151
main.main.func1(0xc4200ae840)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/bookbrowser.go:122 +0x743
github.com/geek1011/BookBrowser/vendor/github.com/urfave/cli.HandleAction(0x8b0d00, 0xc4200de560, 0xc4200ae840, 0xc42005a420, 0x0)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/vendor/github.com/urfave/cli/app.go:504 +0x7c
github.com/geek1011/BookBrowser/vendor/github.com/urfave/cli.(*App).Run(0xc420184000, 0xc420010190, 0x1, 0x1, 0x0, 0x0)
/home/travis/gopath/src/github.com/geek1011/BookBrowser/vendor/github.com/urfave/cli/app.go:268 +0x653
main.main()
/home/travis/gopath/src/github.com/geek1011/BookBrowser/bookbrowser.go:138 +0x5c6

`

User Authentication

Thanks for developing this awesome tool.

I was planning to build a similar library system and eventually found your project.

I would like to know if the user authentication is available here. My plan is to create an online library and users can read the books free of cost but they have to register first. Without the authentication users will not get the access to the books of the library.

Wrong footer height

The footer height is wrong because of the version in the fixed-height footer.

slice bounds out of range

Good evening,

I have A LOT OF books, so after scanning them for a while, BookBrowser throws:

Unknown error parsing book. Skipping. Error: runtime error: slice bounds out of range

JPEG recreated at each start

Even when defining a data dir, thumbnails are always recreated.

Steps to reproduce :

  • start program with the --tempdir data/ flag
  • all books are indexed / thumbnails are created
  • stop the program, the log 2017/12/30 21:17:50 Not removing temp dir because dir already existed at start is dumped (quite expected)
  • data/ folder still contains all *.jpg
  • start the program again with the same command line / same --tempdir
  • everything is indexed again (maybe expected) but every single thumbnail is then also recreated (which takes quite some time with a lot of *.epub)

(a test like "if the corresponding cover and thumbbail jpeg are already available in the current tempdir, then don't recreate them" is probably missing)

With BookServer 3.0.4

Too many open files

When I run BookBrowser in a folder with 6,955 books, once the indexer reaches 561 books, I start seeing this error:

2018/04/12 07:54:13 [561/6955] Error indexing /HumbleBundle E-books/SF and Fantasy/thelivesoftao.epub: open /HumbleBundle E-books/SF and Fantasy/thelivesoftao.epub: too many open files

This continues until processing reaches 1885 books and the process crashes.

I haven't investigated fully, but it seems like book files aren't being closed soon enough.

Iphone Flashing

Is there any reason why, after developing it locally, on iPhone, both 6s and 10, the screen is flashing?

html5 problem

I tried cordova run android,
OK run perfect BUT....
but apparently my phone cannot load the css and js it apppears to be hanging and crashed
it does says "your browser does not support ... "
yeah crazy right trying to make this runnable on android as hybrid? ehehe

Download links for other book formats

Thanks for all the work you have put into this! It looks great!

Is offering download links to other book formats within the scope of this project? It wouldn't need to support reading them in the web browser, but it would be nice if it offered them as a download. IE: mobi or pdf formats.

Upload books

Hi,

Thanks for your work, I tried the demo and it seems pretty solid. The only thing I didn't find which I would love to have on this kind of an ebook server (hosted remotely) is a way to upload books (instead of having to transfer them to the server's folders). This is more of an enhancement request. Do you plan to add a way to upload books any time soon ?

Cannot parse EPUB books using XHTML 1.1.

2018/04/13 00:03:05 [21/116] Error indexing /books/pirate_cinema.epub: xml: unsupported version "1.1"; only version 1.0 is supported

Seems like a limitation of the core xml package. Many EPUBs don't use XHTML 1.1, but I suspect more will as time passes. No worries if this can't be addressed for a while, but I thought reporting it was worthwhile.

How to install

Isn't a bug.

I want to install this on my FreeBSD system but I have error when launch the program:
go build bookbrowser.go after git clone https://github.com/geek1011/BookBrowser.git
or I test with this command and I have an other error:
pip install git+https://github.com/geek1011/BookBrowser

This is my error:
"root@Dev:/usr/local # pip install git+https://github.com/geek1011/BookBrowser
Collecting git+https://github.com/geek1011/BookBrowser
Cloning https://github.com/geek1011/BookBrowser to /tmp/pip-6hFyFG-build
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 2] No such file or directory: '/tmp/pip-6hFyFG-build/setup.py'
"
thanks

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-6hFyFG-build/

Shelf support

This may or may not happen, depending on whether I decide to do #23

  • Add some sort of authentication system (#23)
  • Add shelf templates
  • Add server code

Isolate the book repository update process (for "lazy start" and "manually triggering repository updates")

Right now the repository scan seems to be done only on start.
The server is not going to start before the end of this analysis.

The idea would be to : isolate the scan process.

That would allow :

  • to have a "lazy start" : the server would immediately start while the analysis would be still on-going in the background
  • to be able to manually trigger the refresh of the books repository while the server is up and running (for example through a dedicated UI function)

Would probably need to then have the status of this refresh on the UI ("Scan in progress, file # on #").

Support ePub 3 collection metadata for series information

BookBrowser should support the following format for series information in the opf document:

<dc:title id="t2">Series Name</dc:title>
<meta refines="#t2" property="title-type">collection</meta>
<meta refines="#t2" property="group-position">1</meta>

Version 3

  • Use html/template
  • New UI
  • More tests
  • Improve indexing
  • Modularize for easier improvements
  • Clean up code
  • Update screenshots
  • Finish testing new version

[Error] Hyperlink cannot be jumped correctly

The Hyperlinks in the epub book cannot be jumped to the corresponding page correctly. When I click anyone of the hyperlinks (see the picture below) it always jumps back to the cover of the book.

But the hyperlinks can be jumped to the corresponding page correctly on my Kindle Paper 3 and Macbook's iBook.

screen shot 2018-01-06 at 19 34 25

Sort books

Sort series by index, books by last added, authors by name, and author page by title.

Cannot execute `make` successfully

I've tried running make a number of times, but I cannot seem to satisfy all of the missing dependencies.

I've added the following lines to the Makefile:

go get -v github.com/divan/autoreadme
go get -v github.com/stretchr/testify
go get -v github.com/davecgh/go-spew/spew
go get -v github.com/ernesto-jimenez/gogen

I had to also copy stretchr/testify/_codegen into the corresponding location in the vendor folder, but I haven't figured out how to satisfy the spew dependency, even after replacing spew in the vendor folder with a fresh copy of the entire package. Currently, when I run make I see:

$ make
rm -rf build BookBrowser
go get -v github.com/divan/autoreadme
go get -v github.com/stretchr/testify
go get -v github.com/davecgh/go-spew/spew
go get -v github.com/ernesto-jimenez/gogen
go get -v "github.com/kardianos/govendor"
go get -v "github.com/aktau/github-release"
go get -v github.com/jteeuwen/go-bindata/...
go get -v github.com/elazarl/go-bindata-assetfs/...
govendor sync
go generate ./...
2018/04/12 22:24:02 assertions.go:19:2: could not import github.com/davecgh/go-spew/spew (can't find import: github.com/eskwayrd/BookBrowser/vendor/github.com/davecgh/go-spew/spew)
exit status 1
vendor/github.com/stretchr/testify/assert/assertions.go:22: running "go": exit status 1
stat gen.go: no such file or directory
vendor/golang.org/x/net/html/atom/table.go:3: running "go": exit status 1
Makefile:25: recipe for target 'generate' failed
make: *** [generate] Error 1

Thoughts?

Pagination

Paginate to prevent browser issues at >1000 books.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.