Hi comic book lovers,
The last few weeks I’ve been working on the integration of the Badaap Comic Reader with the ComicRack Web Viewer plugin.
I’ve been in contact with Neep, the author of the ComicRack Web Viewer plugin, and we quickly came to the conclusion that it would be cool if we would combine forces to make the Web Viewer plugin better by integrating the Badaap Comic Reader.
Unfortunately Neep didn’t have time, so I took it upon myself to implement the changes required in the plugin and to the Badaap web application.
It’s been a fun few weeks, as this was my first project in C#, which is a welcome change after years of C++.
The new web viewer has the following advantages:
- it’s a plugin of ComicRack, so no need for a separate Apache web server
- you no longer have to scan the library for updated or new files
- you can use (smart)lists
- you can perform a global search on series/writer/etc.
- there is a series list
Folder browsing is missing right now, but I’m working on that.
You can download the plugin here:
Install it like any other ComicRack plugin. However, as this is a replacement of the Web Viewer plugin, you should uninstall that one first.
The plugin binds to all local ip addresses. It has also the option to bind to one external ip address / dns name allowing outside access if this web server is behind a router.
The plugin will create a folder C:\Users\jeroen\AppData\Local\ComicRack BCR where it will store its settings and store the image cache.
Once installed and running in ComicRack, the new interface can be reached via http://yourip:port/tablet/index.html
If you open that on your iPad in Safari, then you can add it to your home screen.
The original Web Viewer interface is also still available via http://yourip:port/
The Web Viewer has some options that can be set via the web interface itself. You can do this by opening a comic and press the button in the right top of the screen.
The settings will be save in C:\Users\<user>\AppData\Local\ComicRack BCR\settings.xml
The settings “open_current_comic_at_launch” and “open_next_comic” don’t work yet. They are there for future use.
Like ComicRack, the web interface shows a lot of thumbnails. You probably know that ComicRack caches pages and thumbnails.
Unfortunately these are unusable by the plugin (unreadable format and wrong size), so I decided to create my own caching in order to speed up page loading.
If I wouldn’t use a cache, then ComicRack has to create each thumbnail anew each and every time the thumbnail is shown. This is very time consuming and thus not desirable.
Right now the cache size is 1024 MB and can not (yet) be changed via the web interface.
You can however change it in the settings.xml file. If you set it to 0 then caching is disabled. You must restart ComicRack if you change it manually.
For testing purposes, the web server’s diagnostics have been enabled.
The diagnostics interface can be accessed via http://your-ip:port/_Nancy
The default password is “diagnostics”.
The password can be set in C:\Users\<user>\AppData\Local\ComicRack BCR\settings.xml
If you leave the password empty, the diagnostics is disabled completely.
The source code of the plugin can be found at https://github.com/jeroenwalter/ComicRackWeb
At the moment the source code only contains the server side portion, i.e. the web server itself.
I still have to add the client side web application to github, but I first have to clean things up a little.
I have a long and still growing TODO list as this plugin is far from finished.
One of the more interesting things is, that the web application can theoretically be packaged as a native iPad and Android app with phoneGap.
This would allow the storing of comics on the tablet and thus enabling an offline mode, where you don’t need ComicRack. The app would remember what you read and be able to sync it with ComicRack once you connect to ComicRack.
However, this is totally unfamiliar territory for me and I personally have no need for an offline reader, as I have all my comics on my server with ComicRack.
I will be focusing therefore first on other issues to make the viewer better.
Here is the TODO list in no particular order:
- BCRModule.cs – Put Settings: only overwrite settings that were specified.
- Get image tile.
- Add settings to web viewer plugin dialog. Cache, autostart, etc.
bind web viewer to localhost as well as other local ips.
use Shadowxxxx properties
- Select queries on Comics don’t work correctly (linq2rest issues?)
- class Comic must get same named properties as ComicBook
- folder browsing
add Select fields to queries so only the necessary fields are returned.
- lazy load thumbnails
destroy images when they scroll out of the viewable area.
maximum image dimension of ipad is 4096 on longest edge? Add option to image creation in comicrack.
add options to sort, filter and group the comiclist
- add options to sort the list tree.
- add option to set the list tree’s root listfolderitem.
- make image viewer use image tiles in order to avoid jpeg subsampling by ios?
- optimize image viewer for retina ipad
- add options for comics: mark as read/unread, blacklist, set page type, mark page as deleted, show/hide blacklisted comics, show/hide deleted pages.
- add list management: add/remove comic to/from list, make new (smart)list, etc.
- add color/font themes
- use localstorage to cache stores and thumbnails ?
- show/hide treelist view
- add comic grid view
- add comic cover flow
- add split view with comic list and comic info view
- show next/previous page icon on mouse hover in comic view
- sort Recently Read on date
- package with phoneGap to make a real ipad/android app
- use local storage for offline comic viewing
improve app icon + startup screen