Hi I’m the developer of Kavita , a new open source reading server for books, comics, and manga.
I’m implementing OPDS support, however I cannot for the life of me get Panels to connect to my OPDS feed.
I’ve tried IP with PORT or through reverse proxy and it never hits my API.
Is there something that the Panel’s team needs to do? My connection is like: (ip):(port)/api/opds
Not sure how to edit my original post, but I did see:
Version 2.70
Tested on iPhone XS Max and iPad Pro 12.9" 2nd Gen
iOS 15 Dev Beta 5
Using a new library with Calibre 5.24
When attempting to connect to a Calibre OPDS server it will ONLY work if login credentials aren’t required by the content server.
Panels doesn’t use the credentials even if you enter a Username and Password (tested this by creating login details that only access certain parts of a library).
When you set the Calibre content server to only accept connections with login cr…
I will confirm I have tried via https://subdomain.reverseproxy/api/opds and also did not get any hits to my API.
1 Like
dani
August 27, 2021, 1:55pm
#3
Hey @majora2007
Awesome work with Kevita
Let me look into this and get back to you soon. I’ll set up a Kevita server and try to replicate your environment.
Thanks, would appreciate it.
Please use https://github.com/Kareadita/Kavita/tree/feature/opds branch as that has the OPDS work on it.
You can drop by our discord if you need help (https://discord.gg/b52wT37kt7 ) and message me (same username). You have to enable OPDS on the server in server settings then get the url from your user settings page.
This was released, so if you are still looking into it, you can just download the release to setup.
dani
September 3, 2021, 9:49am
#6
Thanks!! Sorry I haven’t been able to look into this yet We are preparing an important release and it’s taking all my time. I promise I’ll look into supporting Kavita soon
dani
September 24, 2021, 1:09pm
#7
Hey @majora2007
I finally found some time to look into the Kavita integration. I was able to configure a local server and access it. But I found some issues with the feeds.
The Libraries list looks fine. But when I open one of them, I get another feed reference suffixed with (Archive)
. They match my folders on the server.
If I open an Archive, I get a “Volume” level. I guess Kavita automatically generates those volumes for me.
Then I can see multiple feed references corresponding to each comic file.
I cannot download them because we are missing the correct acquisition reference.
We are expecting a link reference with the rel http://opds-spec.org/acquisition
. Otherwise, Panels treat the entry
as a link to a subsection. The attributes representing the file mime-type (type
) and size (length
) are also recommended, but we treat them as optional.
I’ve made a couple of tweaks in our parser to recognize Kavita correctly, and the next version of Panels will show it with the right icon and default name.
I just sent a new build, including all the changes to show Kavita correctly in the list, to Testflight review. As soon as Apple approves it, I’ll share a link so you can give it a whirl.
Thanks Dani,
Thank you for taking a look.
Interesting, so you’re saying when you navigated from Library -> Volume -> Chapter, the Chapters were missing the Acquisition link on them?
From the output below, I do see the Acquisition link, could it be that we use the open-access part after?
localhost:5000/api/opds/{apiKey}/series/5/volume/12/chapter/16
Edit after noticing how small the image was (had to take the < off link to render:
link rel=“http://opds-spec.org/acquisition/open-access ” type=“application/pdf” href="/api
/opds/d809287f-5e92-403b-b435-cbc38760cdad/series/5/volume/12/chapter/16/download
/A%20Chronicle%20of%20the%20Last%20Pagans.pdf"/>
dani
September 24, 2021, 3:41pm
#9
Oh! interesting
this is what I got:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<updated>2021-09-24T10:53:00</updated>
<title>Akira - Volume 0 - Chapters</title>
<icon>/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/favicon</icon>
<author>
<name>Kavita</name>
<uri>https://kavitareader.com</uri>
</author>
<link rel="self" type="application/atom+xml;profile=opds-catalog;kind=acquisition" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1" />
<link rel="start" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff" />
<link rel="search" type="application/opensearchdescription+xml" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/search" />
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/1" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=1" />
<updated>2021-09-24T10:53:00</updated>
<id>1</id>
<title>Chapter 1</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/2" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=2" />
<updated>2021-09-24T10:53:00</updated>
<id>2</id>
<title>Chapter 2</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/3" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=3" />
<updated>2021-09-24T10:53:00</updated>
<id>3</id>
<title>Chapter 3</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/4" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=4" />
<updated>2021-09-24T10:53:00</updated>
<id>4</id>
<title>Chapter 4</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/5" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=5" />
<updated>2021-09-24T10:53:00</updated>
<id>5</id>
<title>Chapter 5</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/6" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=6" />
<updated>2021-09-24T10:53:00</updated>
<id>6</id>
<title>Chapter 6</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/7" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=7" />
<updated>2021-09-24T10:53:00</updated>
<id>7</id>
<title>Chapter 7</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/8" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=8" />
<updated>2021-09-24T10:53:00</updated>
<id>8</id>
<title>Chapter 8</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/9" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=9" />
<updated>2021-09-24T10:53:00</updated>
<id>9</id>
<title>Chapter 9</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/10" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=10" />
<updated>2021-09-24T10:53:00</updated>
<id>10</id>
<title>Chapter 10</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/11" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=11" />
<updated>2021-09-24T10:53:00</updated>
<id>11</id>
<title>Chapter 11</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/12" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=12" />
<updated>2021-09-24T10:53:00</updated>
<id>12</id>
<title>Chapter 12</title>
</entry>
<entry>
<link rel="subsection" type="application/atom+xml;profile=opds-catalog;kind=navigation" href="/api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/13" />
<link rel="http://opds-spec.org/image" type="image/jpeg" href="/api/image/chapter-cover?chapterId=13" />
<updated>2021-09-24T10:53:00</updated>
<id>13</id>
<title>Chapter 13</title>
</entry>
</feed>
I’ll give this another look tonight and double-check that I didn’t make any mistake.
Nevertheless… now that you mention it, It’s very likely that our pattern matching is looking for http://opds-spec.org/acquisition
exactly and will fail to match http://opds-spec.org/acquisition/open-access
. I’ll make sure that it works with anything starting with that string, that is what the RFC defines.
Ahh you’re one level more from the acquisition link.
In Kavita, we have Library -> Series -> Volume -> Chapter -> File. As you mentioned Volume/Chapter are generated for the user.
So opening /api/opds/75448f24-3808-4903-a930-57e92bc8c1ff/series/1/volume/1/chapter/5 should give you the actual acquisition link
dani
September 24, 2021, 8:30pm
#11
gotcha!! I’ll give this another look to fix the http://opds-spec.org/acquisition/open-access
issue on our side.
I’ll keep you posted. Thanks for the help
dani
September 26, 2021, 12:46pm
#12
It’s working now
I was able to read the comic using OPDS streaming, and also download it.
The next version of Panels will include support for Kavita. Thanks for the help!
1 Like
Awesome! Thanks for the help Dani.