Your comments

It looks like for ebooks, this will get the mark: 

/user-api/bookmark?isBook=true&docId=<ID>


The data it returns is different: 

"mark" : "4#0",


But, I don't see any books, pdf or epub, that have a total number of pages displayed in the interface.  Without that, you could get a mark to show it was started, or what current page it was on, but not a progress bar.

It looks like the forum took single quotes and turned them double. 

I also had to change the z-index to force it on top of the image.  I'd edit my post, but apparently we can't! 

https://gist.github.com/j4c3/fa5b983cd36afce56e35c1dd52059334

So, I modified this.  I don't use that theme, but it should be similar enough to work anywhere, I think.  

The only known 'issue' is that if you open a comic, read some, and close, this tag isn't updated.  This is because the reading window is an overlay, so when you close it, the comic list isn't refreshed.  I'm not going to bother with that. 

Anyway, I just put the following JS in my themeScript.js file.

// Anonymous "self-invoking" function
(function() {
    var startingTime = new Date().getTime();
    // Load the script
    var script = document.createElement("SCRIPT");
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName("head")[0].appendChild(script);

    // Poll for jQuery to come into existance
    var checkReady = function(callback) {
        if (window.jQuery) {
            callback(jQuery);
        } else {
            window.setTimeout(function() { checkReady(callback); }, 20);
        }
    };

    // Start polling...
    checkReady(function($) {
        //////////////////////////////////
        //Add currently reading condition to comic
        //////////////////////////////////
        $('.thumb a img').each(function(){
            raw_src = $(this).attr('src')
            page_num = '0';
            //sort comics from folders
            if (raw_src.search("folder") >= 0){
                //console.log("raw_src: "+raw_src);
            } else {
                //extract Comic ID
                thing = $(this);
                src = $(this).attr('src');                //console.log("source: "+src);
                $(this).closest('.thumb').append('');
                var comicid = src.split('/');            //console.log("Comic ID: "+comicid[2]);
                //get comic meta from server
                json_url = window.location.origin+"/user-api/bookmark?docId="+comicid[2];        //console.log("url: "+json_url);
                $.getJSON( json_url, function() {
                    //console.log( "json_url success" );
                }).done(function( data ) {
                    current_this = thing;
                    if (data != null){
                        var items = [];
                        var c_id = '';
                        var c_pages = '';
                        var page_num = '';
                        $.each( data, function( key, val ) {
                            if (key == 'docId'){ c_id = val;}
                            if (key == 'mark'){    page_num = val;}
                        });
                        if (page_num != '0'){
                            // get total pages from server
                            content_url = window.location.origin+"/comicdetails/"+c_id;    //console.log("url: "+content_url);
                            $.get( content_url, function() {
                                //console.log( "content_url success" );
                            }).done(function( data ) {
                                details = $('<details>').append($.parseHTML(data));
                                size_div = $('#details_size', details).html();
                                c_pages = size_div.match(/\d+/)[0];

                                thumb = $("img[src*='"+c_id+"']").closest('.thumb');
                                thumb.css({ 'display' : 'flex',
                                            'justify-content' : 'flex-end',
                                            'flex-direction' : 'column'});
                                base_thumb_content = thumb.html();
                                // set reading if page_num < total_pages
                                if (page_num >= (c_pages - 1)) {
                                    progress_percent = 100;
                                    progress_string = "Completed";
                                } else {
                                    progress_percent = ((page_num/c_pages) * 100);
                                    page_int = Number(page_num);
                                    progress_string = (page_int++) + " of " + c_pages;
                                }
                                modified_thumb_content = "<div class="progress-container" style="position: absolute; width: -webkit-fill-available; background: rgba(00, 00, 00, 0.6)">" +
                                                            "<div class="progress_percent" style="bottom: 0px; left: 0px; background: rgba(50, 200, 50, 0.7); width: " + progress_percent + "%;"> </div>" +
                                                            "<div class="progress_string" style="bottom: 0px; left: 0px; position: absolute; color: #FFF; width: 100%; height: 100%;">" + progress_string + "</div>" +
                                                         "</div>" + base_thumb_content;
                                thumb.html(modified_thumb_content);
                            });
                        }
                        //console.log("page_num "+page_num);
                    }
                }).fail(function(){});
            }
        //console.log("triggered");
        });
    });
})();
// end Anonymous "self-invoking" function

I was looking a bit into this.  It seems that isFinished in /user-api/bookmark? is set by some things.  Kuboo sets it to true, but the web viewer doesn't.

As for getting the total pages, OP had mentioned thinking they had somewhere to do that.  Were you just going to try to scrape it out of the /comicdetails/%id% html?