A new *unofficial* reader application for j-novel.club (**now also for Android**)


  • Premium Member

    Hi all,

    tl;dr: I made an Android app. Get it from here.

    I was unsatisfied with the current available Android apps for J-Novel.club. More specifically, I wanted the ability to have a paginated two page reader for my tablet. And hey, I already wrote my reader with a cross platform toolkit, so why not port it to Android? So, porting I did, and JNovelReader is back like the cliché villain from an anime – and no, this probably isn't even its final form.

    Features:

    • Just as a good novel keeps you awake while reading even late at night, a good app keeps your display awake: When reading a part, the app holds a wakelock to prevent the screen from turning off.
    • Customizable reading experience:
      • Dark reading scheme? ✔
      • Bright reading scheme? ✔
      • Sepia reading scheme? ✔
      • Purple reading scheme? ✘ (why would you even want this?)
      • Ever wanted to read your favourite novel in 48pt Comic Sans? Now you can!

    Settings page

    • (Supposedly) smooth animations:
    • Transforms like a mecha: Supports both landscape and portrait mode, and allows you to switch while reading. Also adapts the interface to different screen sizes.

    Landscape mode (and you totally should read The Faraway Paladin if you haven't yet!)
    Potrait mode

    • Browse the catalogue of available titles
      Browse the volumes

    • Check the latest released parts

    Latest released parts

    By the way, a new build for Windows is also available: https://bitbucket.org/fkosmale/jnovel/downloads/jnovelreader.zip. However, this is just a folder that you can extract, there's currently no installer, and the Windows version isn't really well tested.

    Known gotchas:

    • The back button does not always work as expected.
    • The "Download" button in the library is literally useless. The download functionality is not implemented yet.
    • When opening a part from the “Latest Released Parts” view, you cannot jump to the next/previous view
    • When you are not logged in, you can try to jump to the next part of a volume, even if it isn't available for non-members. The app will then try to load the part for all eternity (or until you go back).
    • The app takes roughly 50MB once installed. That is a bit much, and could probably be optimized a bit, but I haven't done it yet.

    ---Original post---
    Hi there,

    as you might know, there is already an official app for Android and iOS to read j-novel.club's novels, as well as an unofficial one for Windows Phone and Windows 10. However, on Linux (and MacOS, for that matter), our only choice so far has been the website. Which, while functional, might not have everything one longs for.

    So, what does on do in that case? Well, obviously one writes ones own application. So I semi-proudly present to you: JNovelReader. You can find a more in-depth description at it's git repo, download the source code of it's initial release or, if you have a 64-bit Windows installation, you can download a prebuild application from here.

    Note that I cannot guarantee that the prebuild application works for you, as I mostly work with/on Linux. It has been tested on Windows 8.1, and should in theory work on at least Windows 7 or later, but it might as well be the case that I messed up the deployment and it just crashes on your computer. Please report back in that case.

    For Linux, there are build instructions in the repository (no pre-made packages or appimages for common distros so far, sorry). In theory, those instructions should also work for MacOS, so that is not tested.


  • Translators

    @jaquobus Awesome!

    I'll check it out when I get home tonight (on my macbook now). You could probably make a dmg for OS X pretty easily too since it's QT based.



  • Couple of (probably) simple-to-fix things after a few minutes of poking:

    • Items in list are text only and searching in a pile of text is relatively slow. Having thumbnails there (like in official app) helps A LOT if you're trying to quickly find a particular one.
    • Cover sizes are somewhat random in the app. Small and big thumbnails in the metadata are differentiated by name. (something like v.thumbnail = v.attachments.FirstOrDefault(a => a.filename.Contains(App.LargeCovers ? "cover" : "thumbnail")); returns the right one (except O;9 vol2, that one's broken))
    • Loading indicator stays forever on non-existing cover images.
    • You get member-only recent parts parts even when not logged in and clicking it lands you on an empty reader. Also initially loaded list is too small, getting like 20 shouldn't be a problem at all. Edit: "Fetch more" doesn't even work and the way you do it you'll get some race conditions
    • Going [Recent parts -> some part -> back] lands you on the volume's page which is a bit weird (and not useful at all because you probably wanted to just read the last part)
    • Consider adding an obvious action on double click in series/recent parts list.
    • Page flipping in a double-page book view is a bit... unusual. I expected it to flip two pages forward but it flips only one. Apparently web reader is the same, but at least it has animation so you can see what goes where.

  • Premium Member

    @_08 Thanks for the feedback, I think most of those should be easily fixable (or an option, like how many pages to progress on two page view) once I have some time to work on it.

    Out of curiosity, did you use the Windows binary or build it from source?



  • @jaquobus Binaries on Win7.
    Sometimes on startup process takes ~5M of RAM, does seemingly nothing for a few minutes and starts normally afterwards.
    Some more issues:

    • /updateReadCompletion is posted even if you aren't logged in
    • One of the most frequent actions during reading would be page flipping so you'd want to make that one to be comfortable to use. Right now it can only be done with small on-screen buttons and left/right arrows (and latter doesn't even work at first). At the very least you should add other obvious keys like up, down, pgUp, pgDn, space and that leads to another bug...
    • Go to serie->volume->part, hit space repeatedly. Among other things, computational complexity seems to rise each time.
      fun
    • Navigating between parts in the reader can also take you to an unavailable part.
    • Wide images get cropped (most notably in Ragnarok Part1 and Rokujouma V5P3).

  • Premium Member

    @_08 Thanks again for the valuable bug reports/feature requests.

    By the way, I've enabled BitBucket's issue tracker feature (https://bitbucket.org/fkosmale/jnovel/issues), so anyone who stumbles upon a bug, please use that one in the future. It allows anonymous reports, no need for anyone to create yet another account.


  • Premium Member

    News: Now available for Android (see top post for details).


  • Premium Member

    @jaquobus Looking pretty good, a little unresponsive but easier to read on than than the official app.


  • Premium Member

    @sniper_samurai
    Thanks for the feedback, and glad that you like the reading experience. About the unresponsiveness: Could you share how much RAM your device has? And is only the actual part reader somewhat unresponsive, or also the menu navigation?


  • Premium Member

    @jaquobus My device has 6GB of ram. Reading is fine, it's menu navigation. I'm finding I need to press a title a couple of times before getting access to the parts from series overview. Latest release also takes a couple of presses unless you use the open part button.

    You might also need to have android hide software buttons on the reader or adjust the reader side if software buttons are present. This one is really just cosmetic and doesn't detract from the reading experience.


  • Premium Member

    @jaquobus Good Job!

    I know it's for tablets but I installed in my smartphone (Xiaomi Redmi Note 4) and some issues:

    1. Blurry cover images.
    2. The "smooth animation" is very slow.

    blurry_images


  • Premium Member

    @zchronos Huh, I thought the covers were too small for anyone to notice that they are blurred – so much for that. Basically I'm using a faster, but blurry resize. I guess I should just use the "good" resize.

    For the animation: is only the menu transition animation slow, or also the part reader? If it's the former, your and sniper_samurai's comment probably indicate that I block the UI thread somewhere.


  • Premium Member

    @jaquobus

    For the android version, can I run it from external memory as well as download books to external/sdchip memory? This’d be a huge “selling” point for me...

    Ugh, I’ve only got like 500-1100 mb free...

    iOS version when????
    ,


  • Premium Member

    @thomask Uhm, technically it would be easy (well, relatively) for me to add a "temporarily download part for offline reading" functionality. However, this would definitely require an ACK from @Sam-Pinansky, as this is something which is currently not officially supported.

    The issue with iOS is that I have neither a Mac to build the app, nor some iDevice to test it. In theory, it should be pretty easy to port though for someone who has those.


  • Premium Member

    @Jaquobus

    The cover image can be a little bigger? Would be enough if it were the same size as the Official App.

    For the animation, in the "reader" the effect when moving to the other page is slow (I think it's the duration of the effect).
    If you want to skip several pages it takes a lot time.



  • @jaquobus said in A new *unofficial* reader application for j-novel.club (**now also for Android**):

    @zchronos Huh, I thought the covers were too small for anyone to notice that they are blurred – so much for that. Basically I'm using a faster, but blurry resize. I guess I should just use the "good" resize.

    As someone who thinks that you better use larger version of thumbnails on HDPI devices I believe you're doing it wrong.

    For the animation: is only the menu transition animation slow, or also the part reader?

    Everything is, I would say? In the menu going to "Latest Releases" is done at much lower fps than everything else. The reader seems to suffer from all 3 possible problems: high input delay (even pressing a button is slow), low fps, low animation speed. First two may be tricky to fix, but you should make flipping animation speed faster at least. It sometimes also lag for about a second when page is few dozens of pixels away from destination.
    Some or all of problems above may or may not be a consequence of having to render on a 2560x1600 screen.

    Going "Last Releases"->Part->back to "Last Releases" keeps populating the list with duplicate "first page" parts (and second page won't ever be get then).

    Edit: You should use cloudfront for images now.

    The download functionality is not implemented yet.

    Since it's apparently is something you will get into: you can request /api/users/id/ownedBooks?filter={"fields":["id":true]} instead of requesting the whole volume's data like web app does. Took me a while to realize that. never mind, I thought you had that download button on a general volume page.


  • Premium Member

    @jaquobus said in A new *unofficial* reader application for j-novel.club (**now also for Android**):

    @thomask Uhm, technically it would be easy (well, relatively) for me to add a "temporarily download part for offline reading" functionality. However, this would definitely require an ACK from @Sam-Pinansky, as this is something which is currently not officially supported.

    The issue with iOS is that I have neither a Mac to build the app, nor some iDevice to test it. In theory, it should be pretty easy to port though for someone who has those.

    Hmm... I’m gonna look into it. I have a iPad, and an app that at least let’s me “test” locally on it. That said, I don’t have a Mac for testing or coding. Neither do I have the developer accounton apples store...
    It might be worth it tho... at $99 a pop per year it becomes expensive.

    As for the download function, I can understand. I notice however that when I’m not on wifi, the amount of data used whe “pagination” is occurring isn’t far off of what I use when I download a manga using manga rock or alternative.

    And that happens “every pagination”, especially if you need to switch between apps and it’s unable to “save state”.

    I’ll look into trying to run it at least once on the iPad for feedback purposes.


  • Premium Member

    @_08

    As someone who thinks that you better use larger version of thumbnails on HDPI devices I believe you're doing it wrong

    It clearly shows that it was initially developed for a low DPI Linux desktop ;-)

    high input delay (even pressing a button is slow), low fps, low animation speed.

    Hm, the last one is of course easy to fix, and also @zchronos mentioned that it is too slow. Low fps is probably caused by your screen size, that won't be that easy to fix. High input delay means I'm doing something wrong, I'm just not sure what exactly.

    And thanks for the hint about cloudflare, I totally missed that the images are nowadays hosted there - whoa, they load significantly faster now!



  • @jaquobus said in A new *unofficial* reader application for j-novel.club (**now also for Android**):

    And thanks for the hint about cloudflare, I totally missed that the images are nowadays hosted there - whoa, they load significantly faster now!

    Fun fact: I'm pretty far away from S3, but cloudflarecloudfront hates me and works even slower sometimes.

    Forgot to mention: dark mode should have darker background (not #444444 or whatever android has by default) unless I really misunderstand it's intention. Though that won't be very useful if controls stay white.
    Screen may flicker at startup because it goes white -> dark for a fraction of second (if it's default on the device) -> white interface again. That's pretty annoying.

    It clearly shows that it was initially developed for a low DPI Linux desktop ;-)

    Inserts are upscaled with freaking nearest neighbor. Don't do that.


  • Premium Member

    So, I've released a new version, 0.2.0 for Android. It

    • ensures that insert images are rendered correctly on High-DPI displays,
    • changes the list behaviour on smartphones: single tapping now opens an entry; tablets (or large phones) still use the double tapping behaviour, so you can view the additional info before opening a series/volume,
    • sacrifices app startup time to load all screens initially, which should make switching between them smoother,
    • has shorter animations, which is probably good for snappines,
    • hides the menu bar on Android in the part reader,
    • uses the CloudFlare URL, so images probably load faster,
    • is less racy when fetching more latest released parts,
    • uses larger images by default in the menu, and uses a better looking scaling method

    Initial part loading is still much slower that I'd like, and the same holds for jumping multiple pages forwards/backwards. I try to solve this at some point, however it's fast enough™ for me on my tablet, so my motivation for doing so is not too high, and neither is the time I have available for further development in the near future. For anyone who still likes to try it – enjoy!