indes / flowerss-bot Goto Github PK
View Code? Open in Web Editor NEWA telegram bot for rss reader. 一个支持应用内阅读的 Telegram RSS Bot。
Home Page: https://flowerss-bot.now.sh/
License: MIT License
A telegram bot for rss reader. 一个支持应用内阅读的 Telegram RSS Bot。
Home Page: https://flowerss-bot.now.sh/
License: MIT License
比如原标题:
**[全职猎人2011][HUNTERxHUNTER][HUNTERxHUNTER (2011) / Hunter x Hunter (2011)][BDRip] **
rss推送后就会变成:
全职猎人2011 HUNTERxHUNTER HUNTERxHUNTER (2011) / Hunter x Hunter (2011) BDRip
由于去除大括号就会影响阅读,看起来毕竟别扭(
请问,如何让这个框框不被去除掉?
已经一下午没推送了,怎么回事
1C1G的vps能运行吗?剩余内存大概只有500MB的样子……
按照使用说明,运行后容器总会自动停止。docker ps -a可以看到运行几秒后就自动停止了
vim ~/flowerss/config.yml
目前只支持为个人导入 OPML,希望能支持为 Channel 导入 OPML。
问题:
/setfeedtag 在channel中 无法添加tag
错误提示为:
请输入正确的订阅id!
关注的instagram有部分会出现该错误
2020/04/20 04:28:04 Source Title: <kasumi arimura 有村架純&staff(@kasumi_arimura.official)'s Instagram> Subscriber: 1 New Contents: 0
2020/04/20 04:28:06 Unable to make request: expected element type <feed> but have <html> https://www.xxxxx.top:1200/instagram/user/aragakiyui_fanspage
个人认为目前最好的 RSS 方案
1、自建 Tiny Tiny RSS
2、自建 RSSHub
3、iOS 移动端 Reeder
缺点就是没有办法及时收到更新提醒,而 flowerss 刚好补足了这点。
遗憾的就是 flowerss 的订阅列表和 Tiny Tiny RSS 的订阅列表需要分别维护。
now.json
{
"version": 2,
"name": "telegram-api-proxy",
"routes": [
{
"src": "/(.*)",
"dest": "https://api.telegram.org/api/$1"
}
],
"github": {
"enabled": true,
"autoJobCancelation": true
}
}
tb.Settings{URL: proxy}
直接 /sub xxxxx 通过 /list 能看到订阅列表,/sub @xxx xxxxx 再 /list 看不到订阅列表
比如源扫描间隔update_interval,还有源最大出错次数error_threshold...
有些源无法爬取,希望能够知道并清理
订阅 http://voice.hupu.com/generated/voice/news_soccer.xml 失败,不支持中文编码么?
之前已经跟您(开发者)谈过了,怕您给忘了就写在issues里了。
批量订阅示例:
/sub url01
/sub url02
/sub url03
每个订阅地址一行,这样就不用一行一行输入了,直接复制粘贴就能一次性订阅大量RSS了。
注:原版本是没有批量订阅的功能的,一次性输入多行订阅地址,默认是只能订阅第一行的。
还有的话,我在想既然有import,那为什么就没有export呢?我建议您增加导出功能呢!
虽然导出成文件实现起来可能有些困难,但是导出成文本消息实现起来就简单一些了。
导出的文字示例:
/sub url01
/sub url02
/sub url03
我在想:既然导出的目的是为了备份,备份的目的是为了再次导入,那么把导出的文字做成导入的格式不是简单明了吗?
出发点:订阅一些ins/twitter的账户后,很多消息类型是:“一张图 + 一句话”的结构,因此并不适合生成telegraph。但是我关闭生成telegraph后,所生成的默认消息类型只有一段文字,并不能将图片< img >也通过消息发送过来。
查阅tg文档后发现有sendphoto的类型,还请开发者考虑将其加入todo(抱歉我代码能力不能实现pull)
https://core.telegram.org/bots/api#sendphoto
docker-compose logs
I got this error info:
2019/11/25 04:09:01 Telegraph Enabled, Token len: 3 Token: [<redacted> <redacted> <redacted> ]
service.flowerss_1 | 2019/11/25 04:09:02 request error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph
service.flowerss_1 | 2019/11/25 04:09:02 Telegraph load error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph token: <redacted>
service.flowerss_1 | 2019/11/25 04:09:03 request error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph
service.flowerss_1 | 2019/11/25 04:09:03 Telegraph load error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph token: <redacted>
service.flowerss_1 | 2019/11/25 04:09:05 request error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph
service.flowerss_1 | 2019/11/25 04:09:05 Telegraph load error: Post https://api.telegra.ph/getAccountInfo: x509: certificate is valid for atlassolutions.com, atdmt.com, xx.atlassbx.com, *.atdmt2.com, *.atlassolutions.com, *.atdmt.com, *.xx.atlassbx.com, atdmt2.com, *.atlassbx.com, atlassbx.com, not api.telegra.ph token: <redacted>
service.flowerss_1 | 2019/11/25 04:09:05 Telegraph token error, telegraph disabled
service.flowerss_1 | 2019/11/25 04:09:05 Bot Token: <redacted> Proxy: 192.168.6.77:1080
service.flowerss_1 | 2019/11/25 04:09:09 Source Title: <paper - Last paper> Subscriber: 1 New Contents: 0
root@green-nas:/d2_data/rsshub# curl https://api.telegra.ph/getAccountInfo --proxy socks5://192.168.6.77:1080
my config.yml
root@green-nas:/d2_data/rsshub# cat flowerss/config.yml
bot_token: <redacted>
telegraph_token:
- <redacted>
- <redacted>
- <redacted>
preview_text: 0
update_interval: 10
error_threshold: 100
socks5: 192.168.6.77:1080
sqlite:
path: ./data.db
My proxy worked well with curl
:
root@green-nas:/d2_data/rsshub# curl https://api.telegra.ph/getAccountInfo --proxy socks5://192.168.6.77:1080
{"ok":false,"error":"ACCESS_TOKEN_INVALID"}root@green-nas:/d2_data/rsshub# ls
And I install it with docker-compose, here is config:
version: '3'
services:
service.flowerss:
image: indes/flowerss-bot:latest
#environment:
# HTTP_PROXY: http://192.168.6.77:8000
# HTTPS_PROXY: http://192.168.6.77:8000
volumes:
- ./flowerss:/flowerss
working_dir: /flowerss
links:
- "service.rsshub:rsshub"
logging:
options:
#driver: "json-file"
max-size: '500k'
restart: always
service.rsshub:
image: diygod/rsshub
restart: always
ports:
- "1200:1200"
environment:
HTTP_PROXY: http://192.168.6.77:8000
HTTPS_PROXY: http://192.168.6.77:8000
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://db.redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://service.browserless:3000'
depends_on:
- db.redis
- service.browserless
service.browserless:
image: browserless/chrome
restart: always
db.redis:
image: redis
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:
Feel free to ask me to provide more info if you need, thank you in advance.
hi,我用了@RSSFlowBot,但是没有给我回复,我又自己部署了也无法应答
可不可以内置一个或多个订阅源,别人添加机器人到群组,频道,私聊等即可自动推送 订阅源,无需再设置
是我订阅源的问题吗?
南华早报的即时预览只有一部分,不是全文,希望休整一下啊
标题里有emoji时mysql数据库会报错,导致重复推送,能否把编码改成 utf8mb4?
feed 示例:
https://rsshub.app/fanfou/user_timeline/%E5%B3%84%E5%B3%B0
相关说明参考: https://blog.csdn.net/qingmulang/article/details/75141455
环境信息
data.db 25 M
Ubuntu 18.04.4 LTS
go version go1.13.4 linux/amd64
不太懂 go 的问题排查, 最近遇到几次假死的情况,现象就是进程还在,但是不会继续推送 rss 变更的消息。
最近两次的发生时间是 7月 6 号和 8 月 1 号。
更新进展:
已使用 #57 补丁, 继续观察中
美中不足:不能拉进频道使用
类似
./flowerss-bot -c /home/user/rss/config.yml
不然直接放systemd时会出错
配置里面设置扫描间隔是30分钟,错误尝试次数是30,配合自搭建的rsshub使用
只有在第一次订阅后才提醒一次,例如
https://rsshub.app/douyu/room/1126960
希望可以支持各源单独设置轮询时间。因为:
1、有的源反扒要求比较严格。
2、有的源每天更新频率不高,而有的更新频率又高,只能统一设置一个更新频率不合适。
E.g., admins
.
某些博客和论坛对于访客的权限做出了限制,未注册用户可能无法访问某些板块。
如下图的错误日志所示,
机器人在抓取页面时,碰到了身份验证问题,即无权访问某些特定内容。
还有些站长用Robot.txt禁止爬虫机器人爬取,这个只要改一下机器人的useragent就解决了。
问题最大的是前者,要想要让机器人抓取页面就必须获取身份验证信息,所以我就想到了调用cookies。
我觉得调用cookies,可以分成两个主体,分别是管理员和普通用户。
管理员方面:
调用cookies最简单的方法就是直接调用服务器本机指定路径的文件,但是考虑到一些docker主机(例如:Arukas),调用起来好像有些困难。
我觉得可以考虑增加网盘https直链(注:直接下载链接,非分享链接)的调用方式,机器人把文件存储到服务器并调用完成后,云盘的文件就可以删掉了,这样也降低了cookies被窃取的可能性。
其实,我觉得上面的那种调用方式也可以取消掉,直接用telegram发送文件给机器人,从体验上来说才是最好的。
用户方面:
由于这是一个面向大众的rss bot,所以需要考虑到普通用户的使用问题。
能否让人们通过telegram发送cookies.sqlite文件,机器人就能接收并调用呢?
首先,发送
/cookies
用户手动选择cookies文件并通过telegram发送
最后,机器人调用。
另外,考虑到并非所有人都会发送,或者是不想发送,因为会涉及安全和隐私问题。
所以有必要增加一个功能:普通用户通过telegram发送指定命令,管理员就能看到。
例如
/send 普通用户的留言(包含订阅网址)
我觉得面向管理员可以增加泛用型cookies,注:这是我自己创造的一个术语,我下面解释一下。
管理员拥有某种权限,可以让机器人通过自己的cookies抓取到页面,并向所有订阅该rss的用户推送。
而普通用户的cookies只能给自己的帐号推送,如果普通用户的cookies也变成了泛用型的话,绝对会引发争议的。
我从第三人称的角度来举个例子详细说明一下吧!
admin拥有T论坛的漫画资源板块的访问权限,guest访客(包含bot)是没有该板块的访问权限的,因此无法抓取到页面内容。
这时候,admin通过telegram向bot发送了泛用型的命令,
/general
接着发送了cookies文件。
最后,bot通过该cookies成功抓取到了漫画资源板块内容,并向所有订阅T论坛Rss的用户推送该内容。
普通用户(化名“萌酱”)也拥有T论坛的高级会员,她能够访问该论坛的日记区板块。
但是“萌酱”发送cookies文件后,机器人抓取的rss内容,只有她自己才能看到。
当“萌酱”和admin同时拥有T论坛的访问权限时,我觉得应该优先使用“萌酱”自己的cookies,其它网站仍然使用admin发送的泛用性cookies,这样才是对使用者最大的尊重。
简单来说,就是普通用户自己的cookies的优先级高于泛用型。
最后,你还记得我前面挖的坑吗?
普通用户可以通过发送指定命令,例如/send
给管理员留言。
那么问题来了,为什么要给管理员留言呢?
当管理员看到留言处的订阅地址后,有空的话就会手动注册该论坛或博客的帐号,进而获得了普通会员的权限。
接下来就到了泛用型cookies登场的时候啦!♬(ノ゜∇゜)ノ♩
注:要获得高级会员也不是不行,不过应该没有哪个管理员会这么闲。
你也许会问,手动注册不嫌麻烦吗?
我的回答是:“不,如果需要机器人自动注册的话,一是要解决邮件验证问题,二是要绕过该网站的机器人验证制度(例如google reCaptcha),这样会让机器人的开发的难度呈几何级递增。”
我们前面提到了用户可以给管理员留言,可那是单向传递的,如何做到双向,让管理员可以在telegram通过此bot推送一些消息给关注这个bot的普通用户呢?
我的想法就是把推送通知的bot和这个RSS bot融合在一起。
你也许会想那也太麻烦了吧?
有没有办法不用开发通知机器人就能实现信息双向传递甚至是多向传递呢?
当然是有办法的,可以建一个telegram群,或者是一个论坛,在description中说明让用户进去讨论就可以了。
不过要是消息过于繁杂的话,也有可能会降低效率。
上面那些想法,我写了一个多小时,总觉得好难啊!
/set 之后就出现了这个
GB2312
is still used by many website in China.
Is there a plan to support xml encoded by GB2312
?
如果要使用应用内部即时预览,必须在配置文件中填写telegraph_token配置项,电报令牌申请命令如下
curl https://api.telegra.ph/createAccount?short_name=flowerss&author_name=flowerss&author_url=https://github.com/indes/flowerss-bot
提示 curl: (35) Peer reports incompatible or unsupported protocol version.
这个怎么解决谢谢
有些原文的图片有防盗链 >_<
docker部署成功,运行起来,订阅也是ok的,但是没有推送,是啥情况?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.