cdhigh / KindleEar

Aggregates RSS and web content(Calibre recipe), sends to Kindle, and includes an e-ink optimized online reader.
http://cdhigh.github.io/KindleEar/
MIT License
2.73k stars 630 forks source link

部分RSS,转换书籍成功,亚马逊推送失败 #691

Closed Spaiol closed 5 months ago

Spaiol commented 5 months ago

作者您好,该RSS源:https://www.archdaily.com/feeds/rss 电子书可能正常生成,下载到本地也能阅读,但自动推送不能成功。单独或是合并成册均如此。

使用Sigil检查,提示:This EPUB has HTML files that are not well formed or are missing a DOCTYPE, html, head or body elements. Sigil can automatically fix these files, although this may very rarely result in minor data loss in extreme circumstances.

使用kindlegen转换生成的epub,提示如下:

*************************************************************
 Amazon kindlegen(MAC OSX) V2.9 build 0000-kdevbld 
 命令行电子书制作软件 
 Copyright Amazon.com and its Affiliates 2015 
*************************************************************

信息(prcgen):I1047: 已添加的元数据dc:Title        "ArchDaily"
信息(prcgen):I1047: 已添加的元数据dc:Date         "2024-06-02T03:18:08.800961+00:00"
信息(prcgen):I1047: 已添加的元数据dc:Creator      "KindleEar"
信息(prcgen):I1047: 已添加的元数据dc:Publisher    "KindleEar"
信息(prcgen):I1047: 已添加的元数据dc:Contributor  "calibre (7.2.0) [https://calibre-ebook.com]"
信息(prcgen):I1047: 已添加的元数据dc:Description  "Articles in this issue:
Life Ladprao Valley Residential Building / Openbox Architects
The oblique Sunshine / Man Office
Sendero Hotel / LOOP Design Studio
Pizzeria 22k / destilat
RizA ii House / React Architects
Houses in Peru: 5 Projects That Use Cement Blocks in Their Constructio
信息(prcgen):I1002: 解析文件  0000020
信息(cssparser):I10004: 不支持@规则,但 @import、@charset 和 @font-face 除外
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_0/index_u4.html     行: 0000009
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_0/index_u4.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_1/index_u11.html     行: 0000009
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_1/index_u11.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_2/index_u1.html     行: 0000009
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_2/index_u1.html     行: 0000115
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_3/index_u12.html     行: 0000009
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_3/index_u12.html     行: 0000093
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000009
警告(inputpreprocessor):W29007: 不使用的未知标签为: <picture>
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_10/index_u9.html
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/page_styles.css
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/stylesheet.css
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_8/index.html
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_6/index_u3.html
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
警告(inputpreprocessor):W29007: 不使用的未知标签为: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html
      文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_4/index_u10.html     行: 0000019
错误(prcgen):E21018: 解析文件中的内容时,创建改进的 Mobi 域名失败。内容:<data-AmznRemoved> 文件中: /var/folders/v8/2l04mcqn7lb0p7szq7czzq6c0000gn/T/mobi-x4k7V5/feed_0/article_0/index_u4.html 行: 4294967295

不知是否是压缩图片后导致的异常,烦请您帮忙查看,是否在calibrek中设置什么参数能够解决? 谢谢~

Spaiol commented 5 months ago

截屏2024-06-02 下午2 10 38

cdhigh commented 5 months ago

如果是这个错误的话,
此页面使用的picture 是html5新标签,可能kindle 不支持,待升级kindleear 将其转换为img

Spaiol commented 5 months ago

谢谢,期待升级

cdhigh commented 5 months ago

推送错误的原因是kindle不支持svg内嵌的title标签。 不过我发现svg在kindle上真的很烦人,因为网站上的svg大多数是图标,在kindle上会自动放大,占满一屏,特别丑的同时对阅读也是没有价值的。 所以除了修改这个bug,我干脆默认将svg去掉了。 如果有某些rss需要svg图像,可以在网页的calibre选项中填写 {"keep_svg":true}

代码已更新,如果是GAE部署,可以直接部署即可使用新代码。
如果是Docker,可以等我之后更新Docker镜像,因为昨天才更新了一个大版本,支持在Kindle上在线阅读而不用推送到Kindle。

更新:Docker也已更新,还是使用3.1.0标签

zangjingwei commented 5 months ago

这个bug更改后south china morning post可以接收到了,不过还是有问题,标题前面会有一些无关的信息,看起来有点乱。另一个问题是有些print edition的recipe文章标题抓不到,标题不在正文中显示,只能在功能框下面显示,在此次更新前是没有这种问题的

cdhigh commented 5 months ago

是的,我修改了title的正则表达式,因为之前有些标题提取不出来

你出问题的是哪个源,我看一下

zangjingwei commented 5 months ago

我订了washington post 和the hindu两个的print edition,里面多数标题是正常的,有的标题有问题。再就是south china morning post 的问题。the economist虽然文章不缺,但都不是全文,只有两三段。另外有些recipe没有推送内容,推出来是0,例如南方周末,这种挺多的

cdhigh commented 5 months ago

这几个我都测试了,没有明显问题,你说的有的标题有问题,我没有找到,可以给出有问题的文章和文章的url吗?

至于文章不全的问题,KindleEar算是一个通用爬虫项目,面对着复杂的网络条件,具有非常大的挑战。

  1. 如果是recipe格式,可以修改提取内容规则而提取完整内容
  2. 如果是自定义RSS模式,因为是使用readabilit/justext尝试提取文章正文,各种文章结构不一,如何高效准确的提取文章正文是世界性难题,各种库琳琅满目,没有一个库能适合所有的情况,要不提取了不必要的内容,要不漏掉部分内容,我基于平衡复杂性和有效性的考虑选择了这两个库,所以如果有的不能很好的提取,还是需要写一个recipe,分析html结构进行有针对性的提取,我写的那个浏览器扩展可以协助减小一些工作量。
  3. 没有推送内容可能有两种情况,一种是源已失效,另一种是网站防爬虫,还有就是提取正文失败(要不就是完全的动态网页,全部使用js生成,要不就是文章结构太过复杂导致算法无所适从)。 具体来说南方周末的问题是一个依赖库feedparser的bug,我先暂时规避。

总的来说,只能碰到一个问题解决一个问题,估计一行一旦AI成熟和足够便宜,使用AI提取正文应该是一个趋势。 现在的AI要不太贵,要不上下文长度不够,所以很多事情还需要等等。

结论就是,KindleEar做为一个业余项目,我会尽力,但最终用户也不能不切实际的寄予太高的期望,一个问题一个问题的解决就好。

zangjingwei commented 5 months ago

今天的华盛顿邮报所有front page的文章,目录中的标题都在工具栏下边显示,文章正文的标题更类似于小标题。the hindu的第一篇文章,也是同样的,只不过正文标题只写了today's paper news,breaking news,top headlines-the hindu businessline,这就显然不是小标题了。

其实我觉得不改也没什么的,并不影响阅读,既然已经知道标题了,也没必要纠结在哪个位置

cdhigh commented 5 months ago

你能给我rss地址和截图吗,我测试发现没你所说的问题,不管在电脑上看还是在kindle上看,我怀疑我们所说的不是同一个rss。 https://feedx.net/rss/washingtonpost.xml

Spaiol commented 5 months ago

谢谢,问题已解决,辛苦您了!

zangjingwei commented 5 months ago

咱们说的确实不是一个,feedx的源没有任何问题。我说的是recipe里面的源。 IMG_20240604_091330 IMG_20240604_091319 IMG_20240604_091308 IMG_20240604_091223 IMG_20240604_091209 IMG_20240604_091202 能看出区别吧,目录里面的标题和功能框下面的标题是一致的,但是和正文中的标题是不一致的。截图为,the hindu的目录第一篇文章,washington post的目录第二篇文章

cdhigh commented 5 months ago

你查看recipe的源代码就可以知道了,这个排版是recipe代码中故意这样写的(体现这个recipe作者的某种意图吧),你完全可以将这个源码下载下来,改成你需要的排版,然后再上传就好。

如果recipe有问题,反馈给我没什么用,建议给calibre提一个pull request,calibre的recipe好像也不是其作者亲自维护的,都是其他人发现问题而pull request到github的。

zangjingwei commented 5 months ago

好的,多谢解答