GithubHelp home page GithubHelp logo

indes / flowerss-bot Goto Github PK

View Code? Open in Web Editor NEW
1.8K 22.0 237.0 7.05 MB

A telegram bot for rss reader. 一个支持应用内阅读的 Telegram RSS Bot。

Home Page: https://flowerss-bot.now.sh/

License: MIT License

Go 99.33% Makefile 0.39% Dockerfile 0.28%
telegram-bot rssbot rss telegram

flowerss-bot's Introduction

Hi there 👋

flowerss-bot's People

Contributors

boypt avatar cxyzzz avatar darkskygit avatar dependabot-preview[bot] avatar dependabot[bot] avatar edisonjwa avatar fossabot avatar hellodword avatar hulb avatar indes avatar luuray avatar machinly avatar makubex2010 avatar prnake avatar renothing avatar rv2900 avatar vaayne avatar zwypfdsj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flowerss-bot's Issues

Rss标题会自动去除大括号[ ]

比如原标题:
**[全职猎人2011][HUNTERxHUNTER][HUNTERxHUNTER (2011) / Hunter x Hunter (2011)][BDRip] **

rss推送后就会变成:
全职猎人2011 HUNTERxHUNTER HUNTERxHUNTER (2011) / Hunter x Hunter (2011) BDRip

由于去除大括号就会影响阅读,看起来毕竟别扭(
请问,如何让这个框框不被去除掉?

推送的消息体,能否只显示文章标题而隐藏RSS源名称

背景:用这个工具推送微博单一用户RSS的新消息

目的:请教能否设置修改推送tg消息的组成,想要隐去每条消息开头的RSS源名称

原因:因为只订阅一个RSS源的情况,每次tg推送通知也都会显示RSS源名称,有些冗余;
个人对代码修改不熟悉,部署说明中没有找到相关可配置项

附图 参考
20200810151231.png
20200810151243.png

感谢帮助

消息模板不能生效

image

配置文件写法如图,>写法都尝试过,消息推送过来还是默认样式。
ps:手动修改默认样式的代码,可以修改消息模版

消息模版参考 #25

错误Unable to make request: expected element type <feed> but have <html>

关注的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

希望可以支持link preview

现在好像是全部disable的…想看preview只能转存telegraph,但有些RSS转存之后效果并不好。
请问可以增加一个是否启用link preview的开关吗?就像ifttt那样。谢谢
Screenshot_20200914-210943

希望能支持 Fever API

个人认为目前最好的 RSS 方案

1、自建 Tiny Tiny RSS
2、自建 RSSHub
3、iOS 移动端 Reeder

缺点就是没有办法及时收到更新提醒,而 flowerss 刚好补足了这点。
遗憾的就是 flowerss 的订阅列表和 Tiny Tiny RSS 的订阅列表需要分别维护。

希望可以支持自定义Telegram API Endpoint

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}

建议:增加批量订阅和批量导出的功能

之前已经跟您(开发者)谈过了,怕您给忘了就写在issues里了。
批量订阅示例:

/sub url01
/sub url02
/sub url03

每个订阅地址一行,这样就不用一行一行输入了,直接复制粘贴就能一次性订阅大量RSS了。
注:原版本是没有批量订阅的功能的,一次性输入多行订阅地址,默认是只能订阅第一行的。
还有的话,我在想既然有import,那为什么就没有export呢?我建议您增加导出功能呢!
虽然导出成文件实现起来可能有些困难,但是导出成文本消息实现起来就简单一些了。
导出的文字示例:

/sub url01
/sub url02
/sub url03

我在想:既然导出的目的是为了备份,备份的目的是为了再次导入,那么把导出的文字做成导入的格式不是简单明了吗?

请求添加photo的消息类型,来适应weibo/twitter/ins等消息类型

出发点:订阅一些ins/twitter的账户后,很多消息类型是:“一张图 + 一句话”的结构,因此并不适合生成telegraph。但是我关闭生成telegraph后,所生成的默认消息类型只有一段文字,并不能将图片< img >也通过消息发送过来。

查阅tg文档后发现有sendphoto的类型,还请开发者考虑将其加入todo(抱歉我代码能力不能实现pull)
https://core.telegram.org/bots/api#sendphoto

附上常见的图文消息样式示例:
单图(视频):
image
多图:
image

Request error when enable telegraph with socks proxy

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.

telegram bot 无应答

hi,我用了@RSSFlowBot,但是没有给我回复,我又自己部署了也无法应答

可不可以内置订阅源

可不可以内置一个或多个订阅源,别人添加机器人到群组,频道,私聊等即可自动推送 订阅源,无需再设置

反馈一个问题

订阅Github抓取一些软件的更新,得到的更新日志乱码
Screenshot_2020-06-18-17-57-14-219_org telegram plus~01

进程还在, 但不会继续推送消息

环境信息

data.db  25 M
Ubuntu 18.04.4 LTS
go version go1.13.4 linux/amd64

不太懂 go 的问题排查, 最近遇到几次假死的情况,现象就是进程还在,但是不会继续推送 rss 变更的消息。
最近两次的发生时间是 7月 6 号和 8 月 1 号。


更新进展:

已使用 #57 补丁, 继续观察中

希望可以支持各源单独设置轮询时间

希望可以支持各源单独设置轮询时间。因为:
1、有的源反扒要求比较严格。
2、有的源每天更新频率不高,而有的更新频率又高,只能统一设置一个更新频率不合适。

建议:增加调用cookies的功能

某些博客和论坛对于访客的权限做出了限制,未注册用户可能无法访问某些板块。
如下图的错误日志所示,
草图 39.png
机器人在抓取页面时,碰到了身份验证问题,即无权访问某些特定内容。
还有些站长用Robot.txt禁止爬虫机器人爬取,这个只要改一下机器人的useragent就解决了。
问题最大的是前者,要想要让机器人抓取页面就必须获取身份验证信息,所以我就想到了调用cookies。
我觉得调用cookies,可以分成两个主体,分别是管理员和普通用户。
管理员方面:
调用cookies最简单的方法就是直接调用服务器本机指定路径的文件,但是考虑到一些docker主机(例如:Arukas),调用起来好像有些困难。
我觉得可以考虑增加网盘https直链(注:直接下载链接,非分享链接)的调用方式,机器人把文件存储到服务器并调用完成后,云盘的文件就可以删掉了,这样也降低了cookies被窃取的可能性。
其实,我觉得上面的那种调用方式也可以取消掉,直接用telegram发送文件给机器人,从体验上来说才是最好的。

用户方面:
由于这是一个面向大众的rss bot,所以需要考虑到普通用户的使用问题。
能否让人们通过telegram发送cookies.sqlite文件,机器人就能接收并调用呢?
首先,发送

/cookies

用户手动选择cookies文件并通过telegram发送
最后,机器人调用。

另外,考虑到并非所有人都会发送,或者是不想发送,因为会涉及安全和隐私问题。
所以有必要增加一个功能:普通用户通过telegram发送指定命令,管理员就能看到。
例如

/send 普通用户的留言(包含订阅网址)

下载 5.jpg
又切回到管理员方面:

我觉得面向管理员可以增加泛用型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
给管理员留言。
那么问题来了,为什么要给管理员留言呢?
下载 6.jpg
当管理员看到留言处的订阅地址后,有空的话就会手动注册该论坛或博客的帐号,进而获得了普通会员的权限。
接下来就到了泛用型cookies登场的时候啦!♬(ノ゜∇゜)ノ♩
注:要获得高级会员也不是不行,不过应该没有哪个管理员会这么闲。

你也许会问,手动注册不嫌麻烦吗?
我的回答是:“不,如果需要机器人自动注册的话,一是要解决邮件验证问题,二是要绕过该网站的机器人验证制度(例如google reCaptcha),这样会让机器人的开发的难度呈几何级递增。”
下载 7.jpg
我们前面提到了用户可以给管理员留言,可那是单向传递的,如何做到双向,让管理员可以在telegram通过此bot推送一些消息给关注这个bot的普通用户呢?
我的想法就是把推送通知的bot和这个RSS bot融合在一起。

你也许会想那也太麻烦了吧?
有没有办法不用开发通知机器人就能实现信息双向传递甚至是多向传递呢?
当然是有办法的,可以建一个telegram群,或者是一个论坛,在description中说明让用户进去讨论就可以了。
不过要是消息过于繁杂的话,也有可能会降低效率。
上面那些想法,我写了一个多小时,总觉得好难啊!
下载 8.jpg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.