koreader / koreader

An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices
http://koreader.rocks/
GNU Affero General Public License v3.0
16.33k stars 1.24k forks source link

FR: add support for other read-it-later services (omnivore,shiori) #10406

Open Amolith opened 1 year ago

Amolith commented 1 year ago

Omnivore (GitHub) is an open source read-it-later service similar to wallabag, which KOReader already has support for. I'd like to see support added for Omnivore as well; its UI is much more pleasant than wallabag's and they have a promising roadmap.

If this would be welcome as a PR, I'll take a look when I have time over the summer.

Frenzie commented 1 year ago

If it works sufficiently similar maybe the Wallabag plugin can be generalized. I'd be less enthused about having another plugin that's extremely similar but different, anyway. ;-)

pazos commented 1 year ago

A bit dissapointing https://github.com/omnivore-app/omnivore#how-to-deploy-to-your-own-server

aqxa1 commented 1 year ago

There's also shiori which is much faster than wallabag on my system (at least with the official docker container) and deployment is simple.

EDIT: Although I'm not sure how usable it is API wise.

EDIT2: Here are the API docs.

Amolith commented 1 year ago

Looking around some more, neither Omnivore nor Shiori export EPUB files. Wallabag definitely does and I'm guessing that the current KOReader plugin just lets wallabag do the hard conversion work and it downloads the result.

Adding Omnivore/Shiori support would make the plugin much more complex because it would have to do all that conversion itself. I don't have the time or motivation to implement this, so I'll just stick with wallabag for now ^^'

aqxa1 commented 1 year ago

A PR for epub generation is close to being merged to shiori. So hopefully it becomes realistic once that happens.

Frenzie commented 1 year ago

Creating an EPUB in KOReader isn't much work — or rather, the work's already been done before.

That being said, in those linked Shiori API docs I don't even see how to get the content, just the URL? Now that could complicate matters significantly, given how authentication can also be an important part of these systems, cf. https://github.com/wallabag/wallabag/pull/2317.

Monirzadeh commented 1 year ago

I start working on shiori ebook Generation to link that to KOReader later. For now, shiori is under heavy API refactor on https://github.com/go-shiori/shiori/pull/497. But for now the request should send just the ID to the server, and it generates EPUB for that specific bookmark. After https://github.com/go-shiori/shiori/pull/497 i try update API section for that epub generate. For work better with koreader is there any specific feature to be crucial? As I know it, just need to log in API and request EPUB, (maybe modify tag or request specific tag) in shiori side. For now, shiori get content and create a clean version with go-readability. We use that result for build ebook.

Frenzie commented 1 year ago

Other than actually getting content in any form at all I don't see anything obviously missing in the API docs.

For PDF you'd generally want to download the actual PDF instead of some text extracted EPUB.

Frenzie commented 1 year ago

Edit would ideally also include read status though; I don't see that listed.

Monirzadeh commented 1 year ago

Edit would ideally also include read status though; I don't see that listed.

There is some discussion about how should handle read status https://github.com/go-shiori/shiori/discussions/343

For now, we have PDF on disk, but not return in API. I plan to return actual PDF file when I'm starting work on update API for eink device. But it is on hold until https://github.com/go-shiori/shiori/pull/497 done.

Monirzadeh commented 7 months ago

hi. how should i place my plugin beside other plugin? if i use something like this

function Shiori:addToMainMenu(menu_items)
    menu_items.shiori = {
        text = _("Shiori"),
        sub_item_table = {

koreader place Shiori here 1


but i want place shiori here 2

pazos commented 7 months ago

@Monirzadeh: you'll need to populate sorting_hint with the string that defines a submenu. You can get all the strings in https://github.com/koreader/koreader/blob/master/frontend/ui/elements/reader_menu_order.lua and related files.

Monirzadeh commented 7 months ago

@pazos i add sorting_hint = "tools", and it move to the tools menu but after More tools in second page. can i move that to the first page? for example after wallabag? 3

note: i add shiori in https://github.com/koreader/koreader/blob/master/frontend/ui/elements/reader_menu_order.lua after wallabag too, but it is not work

pazos commented 7 months ago

@pazos i add sorting_hint = "tools", and it move to the tools menu but after More tools in second page. can i move that to the first page? for example after wallabag? 3

note: i add shiori in https://github.com/koreader/koreader/blob/master/frontend/ui/elements/reader_menu_order.lua after wallabag too, but it is not work

Your guess is good. If you want to place the menu entry at a fixed position you need to edit the menu file and ignore sorting hint.

Editing reader menu order will affect the menu of the reader. You need to do ir also on the file manager menu order.

Monirzadeh commented 1 month ago

Hi @pazos @Frenzie what is the workflow for adding shiori plugin to koreader? should i release that in a repository and user download and use it.(it will go to the second page of plugin list because it is not define in reader_menu_order.lua yet) or somehow it should deliver with koreader like wallabag plugin? plugin will give UI to interact with shiori beside accesses content on server

pazos commented 1 month ago

@Monirzadeh: could you explain the features of the plugin?

Also, key features of shiaori. Is a drop-in replacement for wallabag? advantages, features...

what is the workflow for adding shiori plugin to koreader?

Releasing on your own is quick and easy. Submitting a PR here requires a long review. I think it worths our time (yours and reviewers'), in this case :)

Monirzadeh commented 1 month ago

it is not 100% finish yet but it is get a UI to intract with shiori not just download article. it will give feature that present in current wallabag too. shiori not support annotation (yet) it will give user acsses to the content in server + excerpt user can download them as epub or add links to shiori inside koreader shiori not have read status but user can add specific tag and this plugin use that specific tag as read status and hide that (user can fillter and see just unread item on server) this screenshots from plugin (in current state) 1 main_page 2 detail_menu 3 settings_menu 4 please_login

inspire from wallabag and vocabBuilder plugin

pazos commented 1 month ago

That looks awesome!

Is it self-contained on shiaori.koplugin or requires other changes too?

Feel free to open a wip PR, maybe with a todo list for the things that you want to be done.

Monirzadeh commented 1 month ago

it is self-contained in shiaori.koplugin when it release maybe just need to fix this

it will go to the second page of plugin list because it is not define in reader_menu_order.lua yet

currently it is work whit login itself(similar to wallabag) but i think if koreader can give me acsses to add acount for shiori plugin in cloudstorage (act as account manager) section from plugin code. i explain that in details in https://github.com/koreader/koreader/discussions/12219 i think a central place for account in koreader can be more cleaner instead of each plugin create it is own login page.

Frenzie commented 1 month ago

That's debatable. The plugin presumably needs some settings regardless (e.g., a limit for article age or number, whether you want read = delete, etc.), so it's not a stretch to put the authorization in there too, quite the opposite in our opinion.

But we're probably speaking in the abstract a bit too much atm.

pazos commented 1 month ago

@Monirzadeh:

If you want to add full support for shiori you'll need to make different PRs.

First focus on the plugin. Then, you can add shiori as an export target.

The cloud-storage thing is a bit nasty to merge stuff in. Hopefully we should be able to move stuff out. We don't have an account manager yet, but if you want to commit one make sure it is separated from cloudstorage

If you need a cloudstorage view for shiori then feel free to submit those changes in yet another PR. At some point we should refactor frontend/apps/cloudstorage as a filemanager module that displays virtual files.