GithubHelp home page GithubHelp logo

nanihadesuka / noveldokusha Goto Github PK

View Code? Open in Web Editor NEW
157.0 8.0 12.0 10.24 MB

Android web novel reader

License: GNU General Public License v3.0

Kotlin 100.00%
android webnovel reader epub-reader kotlin android-app jetpack-compose light-novel light-novel-reader light-novels

noveldokusha's People

Contributors

elias-sundqvist avatar lagradost avatar nabeelshar avatar nanihadesuka avatar rickym7 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

noveldokusha's Issues

Reload button

Need reload/retry button on chapter reading place.(error like internet connection problem)
Because if there is error I need to revisit the page/chapter.
IMG_20220512_201241.jpg

Favorite your Source.

Favorite your source and it appears in the bottom menu between library and finder
with the exception
You can favorite only one source

The ability to read out the novel

Firstly I'd like to thank your effort on this app, it's very well done for what seems to be a two person effort.

I understand this is a large request that will probably need a lot of refinement, but in future I'd like a feature where you could have a text to speech reader read out the novel while highlighting what line it is currently on, I am new to reading novels on a phone so this could be of use. Some other features that could accompany this could be the ability to change the tone voice if the novel has dialogue (indicated by a set of "") and the ability to change the reading pace or set it to change lines as one scrolls (instead of scrolling on its own).

If needed I could expand on this, but I just wanted to make this "issue" as more of a feature suggestion for when the app is more mature.

adding download all chapters

I think it will be interesting if it is added with the download all chapters feature. so it can be read offline at leisure, without requiring an internet connection.

User can Login to read locked chapters.

Can you add where user can login to read locked chapter.
like webnovellight i locked a chapter and user A has access to that chapter, when he signin we store that cookie and when he visit that chapter because we have the cookie he can read the chapter.

Megre Novelupdates db source NU source.

Can you merge db NU and Source Nu because then there is no need for db(as baka is not working) optional(. and added that to menu)

It will look something like this


Alive?

It's been quite for month or so.

Please fix versioning

The APK at release 1.2.0 identifies with versionName: "1.0" (which should be "1.2.0") and versionCode: 1 (which, as this is the 3rd release, should be 3 or higher). Can you please fix that? versionCode is used by Android to tell versions apart, so 1.2.0 would not be considered an update to any of the previous versions. And versionName certainly helps when users report issues 😉

While on it: Maybe you could include some screenshots with the Readme?

[F-R] APP Translation on Weblate

I think it will be really nice to have this app on Weblate. It can able the community to translate the app and help it to be bigger and better.

I think this Weblate Documentation can help you to implemwnt this on the project.

Thank you very much for this amazing project!

Page Reading instead of Endless Scroll

I was wondering if it would be possible to decide between endless scroll and a page setup for reading.
I've gotten far too use to reading and clicking on volume buttons at this point

ERROR Unresolved reference: string

so I am getting this error after changing the package name.

e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\uiViews\ErrorView.kt: (47, 49): Unresolved reference: string
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\uiViews\ErrorView.kt: (62, 49): Unresolved reference: string
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\chaptersList\ChaptersViewModel.kt: (156, 37): Unresolved reference: R
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\chaptersList\ChaptersViewModel.kt: (174, 49): Unresolved reference: R
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\databaseSearch\DatabaseSearchActivity.kt: (42, 53): Unresolved reference: colorAttrRes
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\main\LibraryPageFragment.kt: (67, 27): Unresolved reference: updatePadding
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\main\MainActivity.kt: (24, 33): Unresolved reference: setupWithNavController
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderActivity.kt: (53, 31): Unresolved reference: fadeIn
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderActivity.kt: (181, 35): Unresolved reference: attr
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderActivity.kt: (217, 42): Unresolved reference: string
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderActivity.kt: (249, 27): Unresolved reference: doOnNextLayout
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderItemAdapter.kt: (84, 20): Unresolved reference: updateLayoutParams
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderItemAdapter.kt: (85, 13): Unresolved reference: dimensionRatio
e: C:\Users\adnan\AndroidStudioProjects\webnovels\app\src\main\java\my\webnovel\ui\reader\ReaderItemAdapter.kt: (93, 29): Unresolved reference: doOnNextLayout

> Task :app:compileDebugKotlin FAILED

Change package name

How can I change the package name because sometimes I test this on my mobile and it destroy my old data.
So I wanna change the package name so it can't conflict with my main app which I use for personal reading.

Add Tags/genre

Add tags system when can be shown below description and using the same code can be added author alt title and more.

v1.7.0: size increase by factor 10 and a bunch of non-free components added

No idea if this was intentional, but the APK size jumped from about 4M to over 50M with v1.7.0. Further, the app is no longer FOSS as a couple of non-free components have been added:

Offending libs:
---------------
* Firebase Data Transport (/com/google/android/datatransport): NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Firebase (/com/google/firebase): NonFreeNet,NonFreeDep
* ML Kit (/com/google/mlkit): NonFreeDep,Tracking

4 offenders.

My guess is you added Google's ML Kit, which dragged in the other dependencies.

If this was intentional: Will you offer a FOSS flavor (and APK) without those? If it was not intended: Will you revert that? Thanks in advance!

Doesn't remember previous state

So I left the chapters (in middle) and left app when I reopen it's in top/start of app, it doesn't remember where I left the app.

Requesting mtlnovels

can you add mtlnovels, mtlnovel.com its the only mtl site with large amount of mtl novels.
I tired but got error , you have been blocked You are unable to access mtlnovel.com

Edited:- lol 😂
Edited 2:- WebView cookie bypass doesn't work.

Selectable text (reader)

Is it possible to change the font settings to a double tap instead of hold to permit for selectable text?
A lot of webnovels have links to images for explanations, and selecting text allows users to use Android's build-in Google Assistant search for words we aren't sure of. (I'll be damned if I ever remember all the names of the Chinese beasts and weapons)

Expected Behaviour 1:
Holding onto a word with finger in the reader selects text.
Current Behaviour 1:
Holding onto a word with finger in the reader shows font settings

Expected Behaviour 2:
Double-tapping screen shows font settings
Current Behaviour 2:
Double-tapping screen does not do anything.

Thank you very much for all you do.

Requesting source ReadWn

Here is code for fasting the process
`​package​ ​grabber​.​sources​;

​import​ ​grabber​.​Chapter​;
​import​ ​grabber​.​GrabberUtils​;
​import​ ​grabber​.​Novel​;
​import​ ​grabber​.​NovelMetadata​;
​import​ ​org​.​jsoup​.​HttpStatusException​;
​import​ ​org​.​jsoup​.​Jsoup​;
​import​ ​org​.​jsoup​.​nodes​.​Document​;
​import​ ​org​.​jsoup​.​nodes​.​Element​;
​import​ ​org​.​jsoup​.​select​.​Elements​;

​import​ ​java​.​io​.​IOException​;
​import​ ​java​.​util​.​ArrayList​;
​import​ ​java​.​util​.​List​;

​public​ ​class​ ​readwn_com​ ​implements​ ​Source​ {
​    ​private​ ​final​ ​String​ ​name​ = ​"Readwn.com"​;
​    ​private​ ​final​ ​String​ ​url​ = ​"https://www.readwn.com/"​;
​    ​private​ ​final​ ​boolean​ ​canHeadless​ = ​false​;
​    ​private​ ​Novel​ ​novel​;
​    ​private​ ​Document​ ​toc​;

​    ​public​ ​readwn_com​() {
​    }

​    ​public​ ​readwn_com​(​Novel​ ​novel​) {
​        ​this​.​novel​ = ​novel​;
​    }

​    ​public​ ​String​ ​getName​() {
​        ​return​ ​name​;
​    }

​    ​public​ ​boolean​ ​canHeadless​() {
​        ​return​ ​canHeadless​;
​    }

​    ​public​ ​String​ ​toString​() {
​        ​return​ ​name​;
​    }

​    ​public​ ​String​ ​getUrl​() {
​        ​return​ ​url​;
​    }

​    ​public​ ​List​<​Chapter​> ​getChapterList​() {
​        ​List​<​Chapter​> ​chapterList​ = ​new​ ​ArrayList​();
​        ​try​ {
​            ​toc​ = ​Jsoup​.​connect​(​novel​.​novelLink​)
​                    .​cookies​(​novel​.​cookies​)
​                    .​userAgent​(​"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0"​)
​                    .​get​();
​            ​// Travers pagination
​            ​Document​ ​chapterListPage​ = ​toc​;
​            ​while​ (​true​) {
​                ​// Add chapters from current page
​                ​Elements​ ​chapterLinks​ = ​chapterListPage​.​select​(​".chapter-list a"​);
​                ​for​ (​Element​ ​chapterLink​ : ​chapterLinks​) {
​                    ​chapterList​.​add​(​new​ ​Chapter​(​chapterLink​.​selectFirst​(​"strong"​).​text​(), ​chapterLink​.​attr​(​"abs:href"​)));
​                }
​                ​// Go to next page
​                ​Element​ ​nextPageLink​ = ​chapterListPage​.​selectFirst​(​".pagination li:contains(>) a"​);
​                ​// Is last page
​                ​if​ (​nextPageLink​ == ​null​) ​break​;
​                ​chapterListPage​ = ​Jsoup​.​connect​(​nextPageLink​.​attr​(​"abs:href"​))
​                        .​cookies​(​novel​.​cookies​)
​                        .​userAgent​(​"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0"​)
​                        .​get​();
​            }
​        } ​catch​ (​HttpStatusException​ ​httpEr​) {
​            ​GrabberUtils​.​err​(​novel​.​window​, ​GrabberUtils​.​getHTMLErrMsg​(​httpEr​));
​        } ​catch​ (​IOException​ ​e​) {
​            ​GrabberUtils​.​err​(​novel​.​window​, ​"Could not connect to webpage!"​, ​e​);
​        } ​catch​ (​NullPointerException​ ​e​) {
​            ​GrabberUtils​.​err​(​novel​.​window​, ​"Could not find expected selectors. Correct novel link?"​, ​e​);
​        }
​        ​return​ ​chapterList​;
​    }

​    ​public​ ​Element​ ​getChapterContent​(​Chapter​ ​chapter​) {
​        ​Element​ ​chapterBody​ = ​null​;
​        ​try​ {
​            ​Document​ ​doc​ = ​Jsoup​.​connect​(​chapter​.​chapterURL​)
​                    .​cookies​(​novel​.​cookies​)
​                    .​userAgent​(​"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0"​)
​                    .​get​();
​            ​chapterBody​ = ​doc​.​selectFirst​(​".chapter-content"​);
​        } ​catch​ (​HttpStatusException​ ​httpEr​) {
​            ​GrabberUtils​.​err​(​novel​.​window​, ​GrabberUtils​.​getHTMLErrMsg​(​httpEr​));
​        } ​catch​ (​IOException​ ​e​) {
​            ​GrabberUtils​.​err​(​novel​.​window​, ​"Could not connect to webpage!"​, ​e​);
​        }
​        ​return​ ​chapterBody​;
​    }

​    ​public​ ​NovelMetadata​ ​getMetadata​() {
​        ​NovelMetadata​ ​metadata​ = ​new​ ​NovelMetadata​();

​        ​if​ (​toc​ != ​null​) {
​            ​Element​ ​title​ = ​toc​.​selectFirst​(​".novel-title"​);
​            ​Element​ ​author​ = ​toc​.​selectFirst​(​".author span[itemprop=author]"​);
​            ​Element​ ​desc​ = ​toc​.​selectFirst​(​".summary div"​);
​            ​Element​ ​cover​ = ​toc​.​selectFirst​(​".lazy"​);

​            ​metadata​.​setTitle​(​title​ != ​null​ ? ​title​.​text​() : ​""​);
​            ​metadata​.​setAuthor​(​author​ != ​null​ ? ​author​.​text​() : ​""​);
​            ​metadata​.​setDescription​(​desc​ != ​null​ ? ​desc​.​text​() : ​""​);
​            ​metadata​.​setBufferedCover​(​cover​ != ​null​ ? ​cover​.​attr​(​"abs:data-src"​) : ​""​);

​            ​Elements​ ​tags​ = ​toc​.​select​(​".categories a"​);
​            ​List​<​String​> ​subjects​ = ​new​ ​ArrayList​<>();
​            ​for​ (​Element​ ​tag​ : ​tags​) {
​                ​subjects​.​add​(​tag​.​text​());
​            }
​            ​metadata​.​setSubjects​(​subjects​);
​        }

​        ​return​ ​metadata​;
​    }

​    ​public​ ​List​<​String​> ​getBlacklistedTags​() {
​        ​List​ ​blacklistedTags​ = ​new​ ​ArrayList​();
​        ​return​ ​blacklistedTags​;
​    }

​}`

Paragraph comment!

Can you make a paragraph comment system and store data in firebase.
Like when person hold the paragraph a comment system shows up and a person can comment and reads other people comments!

And all the data can be store in firebase.

PS:- If you decide to make it make it easily so when I run this on Android studio, I can also test it.
Thanks.

[Feature Request] Support for adding fonts.

I believe adding a feature to use custom font files ( say ttf ) instead of using only the default ones available would be a great addition to the app.

A few simple ideas include:

Manually place required ttf in a specific folder , for example say /storage/emulated/0/fonts and read from there

Automatically by using a web view to open Google and then detect ttf downloads and use the downloaded ttf ( like in Moon reader )

P.S. : Absolutely love the app ❤️

Novel translation option

It would be awesome if you added an option to translate the novels using a service like google translate or something similar.

New Code/scraper error

so I am getting a weird error same novel name:- 'back when I was....' is looping I thought it was because of cache so I deleted the app and clear the cache but getting the same error. I even try to change the catalog URL but still the same issue and same name

package my.noveldokusha.scraper.sources

import my.noveldokusha.data.BookMetadata
import my.noveldokusha.data.ChapterMetadata
import my.noveldokusha.scraper.*
import org.jsoup.nodes.Document

class NovelHall : SourceInterface.catalog
{
    override val name = "NovelHall"
    override val baseUrl = "https://www.novelhall.com"
    override val catalogUrl = "https://www.novelhall.com/all-1.html"
    override val language = "English"

    override suspend fun getChapterTitle(doc: Document): String? = null

    override suspend fun getChapterText(doc: Document): String
    {
        return doc.selectFirst("div#htmlContent")!!.let { textExtractor.get(it) }
    }

    override suspend fun getBookCoverImageUrl(doc: Document): String?
    {
        return doc.selectFirst(".book-img.hidden-xs")
            ?.selectFirst("img[src]")
            ?.attr("src")
    }

    override suspend fun getBookDescripton(doc: Document): String?
    {
        return doc.selectFirst("span.js-close-wrap")
            ?.let {
                textExtractor.get(it)
            }
    }

    override suspend fun getChapterList(doc: Document): List<ChapterMetadata>
    {
        return doc.select("#morelist a").select("a[href]").map {
            ChapterMetadata(title = it.text(), url = it.attr("href"))
        }

    }

    override suspend fun getCatalogList(index: Int): Response<List<BookMetadata>>
    {
        val page = index + 1
        if (page > 1)
            return Response.Success(listOf())

        return tryConnect {
            fetchDoc(catalogUrl)
                .select("tbody tr td ul > .btm  a[href]")
                .map { BookMetadata(title = it.text(), url = baseUrl + it.attr("href")) }
                .let { Response.Success(it) }
        }
    }

    override suspend fun getCatalogSearch(index: Int, input: String): Response<List<BookMetadata>>
    {
        if (input.isBlank() || index > 0)
            return Response.Success(listOf())

        val url = baseUrl.toUrlBuilderSafe().apply {
            add("search", input)
        }

        return tryConnect {
            fetchDoc(url)
                .selectFirst("#table")!!
                .children()
                .first()!!
                .children()
                .mapNotNull {
                    val link = it.selectFirst(".xxxx > a[href]") ?: return@mapNotNull null
                    val bookCover = it.selectFirst("img[src]")?.attr("src") ?: ""
                    BookMetadata(
                        title = link.text(),
                        url = link.attr("href"),
                        coverImageUrl = bookCover
                    )
                }
                .let { Response.Success(it) }
        }
    }
}

Notifications - Text to Speech controls

I would like to ask for media controls with which you can play and pause the tts when the screen is off with head and earphones and if possible also skip and previous functions.

I can't seem to find the label button, sorry for that.

But I would say this would fit in the [Enhacement] / [Feauture Request] label

Need more repositories

Sería genial si tuvieran mas repositorios para buscar novelas, como los que estan en lnreader o tener la opcion desde la app de agregar repositorios nuevos.

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.