gedoor / legado

Legado 3.0 Book Reader with powerful controls & full functions❤️阅读3.0, 阅读是一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
GNU General Public License v3.0
28.44k stars 3.8k forks source link

版本 3.23.031210 Webdav书籍出现新的问题 #2870

Closed pinoren closed 1 year ago

pinoren commented 1 year ago

确认 / Assignments

问题描述 / Describe Bugs

之前从WebDAV中导入保存的TXT书籍,如果在本地删除后,无法从WebDAV中正常自动获取。

复现步骤 / How to reproduce

问题重现方式如下: WebDAV服务器上的文件目录结构如下: DAV服务器地址示例:http://www.test.com:1234/home 目录结构: /home/legado/books/ /home/legado/books/武侠 /home/legado/books/武侠/金庸 /home/legado/books/科幻 /home/legado/books/玄幻

txt扩展名的书刊分类保存在目录结构中。 在初次使用阅读软件时,使用阅读软件的远程书籍导入功能导入了WebDAV上的书刊。 从WebDAV导入的TXT书刊默认存储在安卓手机下Download/Books目录下。 此后一直正常使用。

由于需要三个安卓手机之间同步阅读进度,在三个手机上使用了相同的WebDAV配置,然后在主用手机上批量导入了WebDAV的书刊,并备份了设置到WebDAV,然后在另外两台手机上使用备份/恢复功能选择了主用手机的备份进行了设置恢复。

此时主手机上从WebDAV导入的TXT书籍在备份恢复操作之后,均可以从另外两个手机上看到并正常访问,查看日志能看到手机上不存在的TXT,阅读会自动从WebDAV相应目录中自动获取并下载。

此使用方法从上一个版本3.23.022715以及之前一直正常使用。但自升级了3.23.030400和3.23.031210版本之后,以上使用方法开始出错,无法正常工作: 安卓手机本地的download/Books目录中如果不存在书籍,如果远程的文件保存在例如/home/legado/books/武侠 中,点开阅读中的对应书籍(例如 文件1),书籍页面会显示: 获取本地书籍内容失败   /tree/primary:Download/Books/document/primary:Download/Books/文件1.txt 文件不存在

日志中除了或许本地书籍失败的一条记录之外,还有一条“自动下载webdav书籍失败”的日志。

但如果TXT书籍保存在WebDAV远程例如/home/legado/books/武侠/金庸 这样的目录中,错误又有所不同,点开本地不存在的书籍后,错误状态为阅读软件会让选择书籍所在的文件夹(系统文件夹选择器),选择Download/Books后,系统提示要允许阅读访问Books中的文件吗?允许后,阅读页面显示:找不到文件。

经试验,把深层目录的TXT文件挪移到/home/legado/books/下,错误仍然相同,无法正常获取WebDAV上的书籍文件。

此操作在仍然使用3.23.022715版本的安卓手机上一切正常,手工删除本地文件后仍然可以自动从WebDAV上下载。 如果把手机上安装的3.23.030400及以上的版本删除掉,重新安装3.23.022715版本,并使用主用手机的配置备份文件恢复,则问题可以得到解决。

另:发现在3.23.030400之后的版本导入3.23.022715之前的备份文件时会提示许多json文件导入错误,字符串为空什么什么的提示,但是我找不到详细错误日志在哪里获取。

日志提交 / Relevant log output

No response

阅读版本 / Legado version

3.23.031210

Android版本 / Android version

12

机型 / Model

荣耀V40轻奢版、360 N6、华为nova4

其他信息 / Additions

No response

821938089 commented 1 year ago

你点一下“自动下载webdav书籍失败”这条日志,然后截图

恢复备份的问题,昨天修了一下,你试试测试版有没有问题 恢复备份改成用压缩包了,你可能需要手动打包一下备份文件

pinoren commented 1 year ago

你点一下“自动下载webdav书籍失败”这条日志,然后截图

恢复备份的问题,昨天修了一下,你试试测试版有没有问题 恢复备份改成用压缩包了,你可能需要手动打包一下备份文件

您好,经查看: 自动下载webdav书籍失败”日志内容为: io.legado.app.exception.NoStackTraceException: Unexpected server ID

二层目录和三层目录中书籍的不同错误表现状态,日志内容均相同。

pinoren commented 1 year ago

此错误是我在刚才全新安装3.23.022715版并使用备份文件恢复配置后,确定删除了本地txt文件后,点击书刊名能正常从WebDAV自动下载后,直接覆盖升级安装3.23.031210,不进行任何其他操作,再次删除本地txt文件后,点击书刊名称得到的日志提示。

我这就去找一下您说的测试版,感谢您!

pinoren commented 1 year ago

汇报:安装了 legado_app_3.23.03131039_共存 版本测试。 直接安装并配置好WebDAV,并使用之前的备份文件恢复,备份恢复时的错误提示没有了,提示恢复成功。但是自动获取WebDAV书籍的错误依然存在,错误提示和上面所述相同。

Xwite commented 1 year ago

有点怪

Xwite commented 1 year ago

https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt#L323

pinoren commented 1 year ago

https://github.com/gedoor/legado/blob/master/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt#L323

看到被标记为已解决,然后关闭了,找了半天差点找不到我发的帖子到哪里去了,哈哈。请问也就是说下一个版本更新的时候会得到解决么?

Xwite commented 1 year ago

等会应该会重发