Closed appleftg closed 4 months ago
太客气了,这是一个bug,不是说明不完善,因为发送邮件的函数忘了使用传入的端口号,而是从主机名中提取。 因为我测试都使用587默认端口,所以换了几个邮件服务器都测试通过。
最新代码已经修正此bug
谢谢,有空麻烦更新下docker镜像,嘿嘿
好的,
已经更新docker镜像3.0.0c 这个版本和3.0.0b版本的数据库不兼容,表LastDelivered增加了一列url。 你可以选择:
碰到这种情况,就更体会到nosql相对于sql数据库的一个很大的优势:数据库表发生变化后不影响已有数据! 所以我之前就在部署说明里面提到优先使用nosql。
不过一旦发布正式版,我会尽量不修改数据库结构,即使修改,也会提供一个命令用于迁移老的数据库文件到新数据库格式。
已经更新docker镜像3.0.0c 这个版本和3.0.0b版本的数据库不兼容,表LastDelivered增加了一列url。 你可以选择:
- 先备份订阅数据,删除数据库文件 kindleear.db,让KindleEar重建数据库,然后再导入。
- 使用其他sqlite管理工具,在LastDelivered表添加一列url,类型为VARCHAR。
碰到这种情况,就更体会到nosql相对于sql数据库的一个很大的优势:数据库表发生变化后不影响已有数据! 所以我之前就在部署说明里面提到优先使用nosql。
不过一旦发布正式版,我会尽量不修改数据库结构,即使修改,也会提供一个命令用于迁移老的数据库文件到新数据库格式。
谢谢,重新部署了,正常了,数据库问题不大,正式版部署以后基本都是稳定不动了。还有几个建议希望完善下:1.自定义RSS增加批量删除、编辑修改已订阅的源。2.导入订阅列表保留原URL格式,有时候URL包含一些特殊字符被修改订阅失败(自定义RSS单个添加正常,导入订阅列表特殊字符被转换了),如http://192.168.15.47:1300/protected/shuge/https%3A%2F%2Fwww.shuge.org%2Ffeed%2F?opencc=t2s。3.归档保留老版本的二维码分享功能,有时候手机扫一扫查看挺方便的。4.增加docker版日志控制按钮,gunicorn.access.log文件大小增长挺快的。
1.自定义RSS增加批量删除、编辑修改已订阅的源。
这个功能意义不大,曾经想过后来放弃,一般情况下每个人就那么几个订阅,所以增加这个功能反而复杂了。
2.导入订阅列表保留原URL格式,有时候URL包含一些特殊字符被修改订阅失败(自定义RSS单个添加正常,导入订阅列表特殊字符被转换了),如[http://192.168.15.47:1300/protected/shuge/https%3A%2F%2Fwww.shuge.org%2Ffeed%2F?opencc=t2s。
是因为我修改了导入导出的转义功能,之前是使用url的转义规则,现在使用xml的转义规则,转义字符更少,xml文件的可读性更好,如果以前的版本导出的xml现在导入会导致一些字符没有正确被转义,不过从现在开始,导出的xml重新导入不会出错。 只是不知道其他的rss reader的导入导出转义是什么样的规则?
3.归档保留老版本的二维码分享功能,有时候手机扫一扫查看挺方便的。
以前我是深度魔改Calibre,所以想实现什么功能都容易,现在是因为软件架构变化(尽量少修改Calibre)后我还没有找到一个比较干净的方法能中途添加图像文件,如果用很脏的方法实现我会抓狂的,所以就暂时去掉此功能。
4.增加docker版日志控制按钮,gunicorn.access.log文件大小增长挺快的。
这个已经不是KindleEar的范畴了,是Linux的运维部分了,以前的做法是使用linux的 logrotate.d 服务自动分割日志文件,在我的部署文档里面的手动部署方法里面有提到。 不过我简单搜索一下,新版本gunicorn还可以使用新的配置方法来控制日志的大小,我再学习学习。
哦哦,明白了,可以增加编辑单个已订阅的源不?有时候修改感觉有点麻烦,要删除重新添加。新版用xml的转义规则导出正常,导入又被转义了,所以有些需要手工修正,又没找到地方,一个个删除重新添加,有点麻烦,原来用url的转义规则导出导入是正常的,如现在用xml的转义规则导入http://192.168.15.47:1300/protected/shuge/https%3A%2F%2Fwww.shuge.org%2Ffeed%2F?opencc=t2s,变成了http://192.168.15.47:1300/protected/shuge/https://www.shuge.org/feed/?opencc=t2s,订阅就失败了,要手工修改。其他的rss reader的导入导出转义是规则不清楚,应该订阅的时候是什么样,导入导出的时候应该就是什么样的吧,才能保持一致订阅正常
这样还是改回之前的转义规则好了
这样还是改回之前的转义规则好了
试着改了下"/KindleEar/application/view/adv.py"176-190行,导入正常了,%3A、%2F等没有被解码,订阅正常,供参考:
#title, url, isfulltext = xml_unescape(o.text), unquote(xml_unescape(o.xmlUrl)), o.isFulltext #isFulltext为非标准属性
title, url, isfulltext = xml_unescape(o.text), o.xmlUrl, o.isFulltext # 直接使用原始编码的URL
if isfulltext:
isfulltext = str_to_bool(isfulltext)
else:
isfulltext = defaultIsFullText
#if not url.startswith('http'):
# url = ('https:/' if url.startswith('/') else 'https://') + url
# URL前缀检查不变,这确保了即使在原始URL编码的情况下,也能正确处理URL
parsed_url = urlparse(url)
if not parsed_url.scheme:
url = 'https://' + url.lstrip('/')
1.自定义RSS增加批量删除、编辑修改已订阅的源。
这个功能意义不大,曾经想过后来放弃,一般情况下每个人就那么几个订阅,所以增加这个功能反而复杂了。
2.导入订阅列表保留原URL格式,有时候URL包含一些特殊字符被修改订阅失败(自定义RSS单个添加正常,导入订阅列表特殊字符被转换了),如[http://192.168.15.47:1300/protected/shuge/https%3A%2F%2Fwww.shuge.org%2Ffeed%2F?opencc=t2s。
是因为我修改了导入导出的转义功能,之前是使用url的转义规则,现在使用xml的转义规则,转义字符更少,xml文件的可读性更好,如果以前的版本导出的xml现在导入会导致一些字符没有正确被转义,不过从现在开始,导出的xml重新导入不会出错。 只是不知道其他的rss reader的导入导出转义是什么样的规则?
3.归档保留老版本的二维码分享功能,有时候手机扫一扫查看挺方便的。
以前我是深度魔改Calibre,所以想实现什么功能都容易,现在是因为软件架构变化(尽量少修改Calibre)后我还没有找到一个比较干净的方法能中途添加图像文件,如果用很脏的方法实现我会抓狂的,所以就暂时去掉此功能。
4.增加docker版日志控制按钮,gunicorn.access.log文件大小增长挺快的。
这个已经不是KindleEar的范畴了,是Linux的运维部分了,以前的做法是使用linux的 logrotate.d 服务自动分割日志文件,在我的部署文档里面的手动部署方法里面有提到。 不过我简单搜索一下,新版本gunicorn还可以使用新的配置方法来控制日志的大小,我再学习学习。
您好,我修改了下"KindleEar/application/static/base.js"文件,增加了自定义RSS批量删除、删除单个RSS订阅自动将待删除的RSS订阅源信息填充到添加RSS信息功能,觉得蛮方便的,方便大量测试rss订阅源,希望供您参考,加入进去,谢谢。
主要实现是: 1.在PopulateMyCustomRss函数中添加多选框的全部选择、取消选择按钮、删除选中按钮,在每个RSS项前添加一个多选框。 2.修改DeleteCustomRss(rssid, title)函数,支持删除订阅源数组,不影响原删除单个,如果是删除单个RSS订阅源就将待删除的RSS订阅源信息填充到添加RSS信息,方便修改再次添加。 3.增加了自定义RSS全部选择和取消选择selectAllCustomRss(selectAll)函数,批量删除选中自定义RSS 函数deleteSelectedCustomRss()。
搞复杂了,我好不容易将按钮都藏起来,现在一下子又多出三个~ 不过删除后将删除的信息添加到文本框以便重新添加这个主意挺好,我会采用这个建议。
搞复杂了,我好不容易将按钮都藏起来,现在一下子又多出三个~ 不过删除后将删除的信息添加到文本框以便重新添加这个主意挺好,我会采用这个建议。
谢谢采纳,我觉得按钮隐藏不隐藏不是特别重要,一般稳定以后很少登陆管理了。想增加这些批量删除的初衷,说实话,也受到键钮隐藏的影响,一下导入几十个rss源测试,旧版直接点删除按钮就行了,新版要点开隐藏的找到,再确认弹窗,来来回回操作几十次,觉得太麻烦了,所以想直接选中删除,还是希望加入进去。
你这个也是特殊情况,也就是测试是用用,以后就不会用了。 要解决此问题,有一个更简单的方法,删除时检查ctrl按键,如果按住ctrl再点击删除,则不用弹出确认对话框,这样就可以快一点。
你这个也是特殊情况,也就是测试是用用,以后就不会用了。 要解决此问题,有一个更简单的方法,删除时检查ctrl按键,如果按住ctrl再点击删除,则不用弹出确认对话框,这样就可以快一点。
好的,感谢
针对这种特殊情况,我还想起很多游戏的作弊码,曾经我收集了很多作弊码。
我们可以在添加自定义rss时如果输入一个特殊的字符串,则全部删除当前自定义rss。
针对这种特殊情况,我还想起很多游戏的作弊码,曾经我收集了很多作弊码。
我们可以在添加自定义rss时如果输入一个特殊的字符串,则全部删除当前自定义rss。
哈哈,跟分享的小彩蛋样
chrome扩展已经上架,之前因权限问题,被拒了一次,返回来重新修改,耽误了几天时间。
在chrome应用商店搜索 "KindleEar"。
或者 直达链接
Docker镜像3.0.0d已经更新,如果没有什么问题,这个应该就和正式版一致了。 这几天就发布正式版。
chrome扩展已经上架,之前因权限问题,被拒了一次,返回来重新修改,耽误了几天时间。
在chrome应用商店搜索 "KindleEar"。 或者 直达链接
辛苦,看到了,测试了,都能正常用,能不能增加个语言选项,上传到KindleEar默认分类到英文里了。
Docker镜像3.0.0d已经更新,如果没有什么问题,这个应该就和正式版一致了。 这几天就发布正式版。
谢谢,感觉这一版非常完美
chrome扩展已经上架,之前因权限问题,被拒了一次,返回来重新修改,耽误了几天时间。 在chrome应用商店搜索 "KindleEar"。 或者 直达链接
辛苦,看到了,测试了,都能正常用,能不能增加个语言选项,上传到KindleEar默认分类到英文里了。
语言是自动探测的,先是看html里面有没有声明语种,如果没有,使用Chrome 自动检测当前网页的语种,可能是Chrome自动检测错误。
不过可以在配置项里增加一个配置,可以选择是自动检测还是强制固定为某一个语种。
chrome扩展已经上架,之前因权限问题,被拒了一次,返回来重新修改,耽误了几天时间。 在chrome应用商店搜索 "KindleEar"。 或者 直达链接
辛苦,看到了,测试了,都能正常用,能不能增加个语言选项,上传到KindleEar默认分类到英文里了。
语言是自动探测的,先是看html里面有没有声明语种,如果没有,使用Chrome 自动检测当前网页的语种,可能是Chrome自动检测错误。
不过可以在配置项里增加一个配置,可以选择是自动检测还是强制固定为某一个语种。
好想法
归档保留老版本的二维码分享功能, 我直接修改"/KindleEar/application/lib/calibre/web/feeds/news.py",在append_share_links函数尾,1125行后直接加以下代码,能用,有时候还是蛮方便的。
# 生成分享二维码 先安装库,pip install qrcode[pil]
import qrcode
from io import BytesIO
from base64 import b64encode
# 在二维码前添加换行符
bodyTag.append(soup.new_tag('br')) # 新增换行符
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(url)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
byte_io = BytesIO()
img.save(byte_io, 'PNG')
byte_io.seek(0)
qr_data = byte_io.read()
qr_base64 = b64encode(qr_data).decode('utf-8')
qr_img_tag = soup.new_tag('img', src=f"data:image/png;base64,{qr_base64}")
bodyTag.append(qr_img_tag)
是的,data url是不错的工具,我在kindleear网页中使用了。 为什么没有在电子书里使用是担心兼容性问题,不单单Kindle能推送,很多电子书现在都有推送服务,有些小品牌的和一些老版本的电子书可能对data url兼容不好。 Calibre代码非常复杂,一大部分都是处理兼容性问题。 对这个处理我先放到TODO列表中,待以后研究决定。
是的,data url是不错的工具,我在kindleear网页中使用了。 为什么没有在电子书里使用是担心兼容性问题,不单单Kindle能推送,很多电子书现在都有推送服务,有些小品牌的和一些老版本的电子书可能对data url兼容不好。 Calibre代码非常复杂,一大部分都是处理兼容性问题。 对这个处理我先放到TODO列表中,待以后研究决定。
好的,也没什么影响,我先这么用着才,谢谢
想想其实这个是边缘功能,兼容性不是问题,大不了显示不出来,你这个做法挺好的,要不你提一个pull requests?
我终于将收邮件功能在我的VPS上调通了,但是mailglove还是太大,338M,太奢侈了。 所以我就基于alpine,写了一个和它功能基本相同的镜像 kindleear/mailfix,只有一个简单的启动脚本 (参考docker/postfix/install.sh),镜像中只需要安装postfix/curl,直接使用bash脚本转发邮件,不需要其他多余的任何东西,解压后镜像为 26.8M,docker push时显示九百多字节,不到1K,应该显示的是最后一层的大小,所以在Docker hub上都显示不出大小。
使用新的docker-compose.yml或docker-compose-nginx.yml即可使用新的mailfix镜像。
想想其实这个是边缘功能,兼容性不是问题,大不了显示不出来,你这个做法挺好的,要不你提一个pull requests?
这个估计我做不来,一是pull requests没用过,当然可以学。二主要是我是直接加上去用的没有加归档选项框,加个二维码的归档选项框,还有些其它的文件要改,应该还要改数据库,保存二维码账户选项。
我终于将收邮件功能在我的VPS上调通了,但是mailglove还是太大,338M,太奢侈了。 所以我就基于alpine,写了一个和它功能基本相同的镜像 kindleear/mailfix,只有一个简单的启动脚本 (参考docker/postfix/install.sh),镜像中只需要安装postfix/curl,直接使用bash脚本转发邮件,不需要其他多余的任何东西,解压后镜像为 26.8M,docker push时显示九百多字节,不到1K,应该显示的是最后一层的大小,所以在Docker hub上都显示不出大小。
使用新的docker-compose.yml或docker-compose-nginx.yml即可使用新的mailfix镜像。
厉害,小了很多,重新部署了,试了,使用正常,嘿嘿
我将原来的docker-compose.yml改名为docker-compose-nginx.yml,新增了一个使用caddy的docker-compose.yml,因为我折腾ssl证书折腾了很久,所以我想使用caddy替代nginx还是更有市场一些,caddy的https支持直接开箱即用,不用管什么申请证书续签证书什么的,caddy通通一起搞定。
nginx
那方便,我一直用nginx,证书用的了docker自动更新,还有一起用的东西,懒得折腾了。
大佬,使用网页配置SMTP选项时,端口选项似乎有问题,端口配置在主机栏,发送邮件正常,配置在端口栏,报Connection unexpectedly closed错误,请修正,谢谢
以下配置发送邮件正常:
以下配置发送邮件报Connection unexpectedly closed错误: