Home

Awesome

QReader - a browser-server based feed reader

QReader

QReader 是一款使用 Go 和 JavaScript 编写的阅读器,支持订阅 RSS 2.0 和 Atom 1.0 格式的 feed。Github地址:https://github.com/m3ng9i/qreader

为了运行 QReader ,你需要有一台 server,它可以是你放在局域网中的 PC。你需要在 server 上运行 QReader 服务端程序,然后使用手机、平板电脑或 server 上的浏览器访问 QReader。当然,如果你有兴趣,可以尝试把 QReader 编译到 Android、iOS 设备或路由器中。

QReader 是一个单用户的阅读器,不适合多人共同使用。

直接下载 QReader 可执行程序

最新版本:v0.2.2

更新说明

更新方式

  1. 关闭 QReader;
  2. 备份 sitedata 目录下的 feed.dbconfig.ini 文件;
  3. 重新下载 QReader 可执行程序和 sitedata 文件,将压缩包解压缩;
  4. 将之前备份的 feed.dbconfig.ini 文件放回到更新后的 sitedata 目录下;
  5. 重新启动 QReader。

注意:

next 分支

最新的程序代码变更、bug 修复将在 next 分支出现,但此分支不提供二进制可执行文件下载,你需要自行将代码编译为可执行程序。

0. 功能

QReader 包含如下功能:

1. 截图

下面是 PC 和手机上的 QReader 界面截图,点击可查看大图。

Windows, Google Chrome:

文章列表 订阅管理 feed 详情 标签列表 加星文章 随机文章 文章页面 系统信息

Android, Opera:

文章列表 文章页面

2. 安装与运行

QReader 程序分为服务器端与客户端两部分。服务器端负责抓取 feed 并提供 http 服务。客户端需要通过浏览器访问,用来阅读与管理 feed。建议将 QReader 服务器安装在 PC 或 Mac 上,然后使用电脑、手机或平板上的浏览器访问 QReader 客户端。

除了直接下载已编译好的可执行程序外,你也可以根据下面的说明自行编译 QReader。

2.1 编译

在命令行界面中运行以下命令下载并编译程序:

go get -d github.com/m3ng9i/qreader
cd `echo $GOPATH | cut -d ":" -f 1 | cut -d ";" -f 1`/src/github.com/m3ng9i/qreader
chmod u+x build.py
./build.py

上述命令可以在 Mac/Linux 的命令行界面或 Windows 的 Cygwin 下运行。其中 ./build.py 负责具体的编译工作,需要用到 python3,如果你没有安装 python3,也可以使用 go build 命令代替,但生成的可执行程序中将不会包含程序版本信息。

编译完成后会在当前目录(QReader 源码目录)下生成一个可执行文件,Windows 下为 qreader.exe,Mac/Linux 下为 qreader。编译完成后,除了刚编译好的可执行程序以及 sitedata 目录外,其他文件均不再需要,可以删除。

如果你想图省事,也可以使用下面的命令完成源码下载和编译:

go get github.com/m3ng9i/qreader

使用此命令生成的可执行程序将会在 $GOPATH/bin 目录下生成,同样不会包含程序版本信息。

由于 QReader 使用的 SQLite3 数据库驱动 (github.com/mattn/go-sqlite3) 基于 cgo,因此无法实现跨平台编译。

如果在 Windows 下编译 go-sqlite3 时遇到问题,建议使用 TDM-GCC 进行编译。

2.2 sitedata 目录

sitedata 目录保存着配置文件、客户端程序(JavaScript、HTML、CSS文件)、数据库文件和用来进行 TLS 加密的证书。QReader运行时需要读取 sitedata 目录下的文件。

2.3 配置文件

sitedata/config.ini 是 QReader的配置文件,在对 QReader 初始化后会自动生成此文件。你也可以使用 QReader 的命令行参数 -defini 显示默认的配置文件内容。配置文件中各字段的说明如下:

注意:修改了配置文件后,需要重新启动 QReader 才能生效。

2.4 初始化

你可以将 QReader 可执行程序和 sitedata 目录放到任意目录下。如果 sitedata 目录与 QReader 可执行程序不在同一个父目录下,在运行时,需要用 -s 参数指定 sitedata 目录的位置。

首次运行前需要初始化,用以生成数据库文件和配置文件。进入 QReader 可执行程序所在目录,然后执行:

./qreader -init

./qreader -s <sitedata 所在路径> -init

然后输入 y 回车,会在 sitedata 目录下生成配置文件 config.ini 和 数据库文件 feed.db。如果多次进行初始化,新生成的 config.ini 和 feed.db 会覆盖已存在的文件。

你可以根据需要,修改配置文件中的部分配置。之后就可以运行了。

2.5 运行

完成初始化后,运行:

./qreader

./qreader -s <sitedata 所在路径>

启动 QReader 服务器。默认会将日志输出到 stdout,你可以在日志中看到 QReader 的访问地址。如果你需要同时在系统默认浏览器中打开 QReader 页面,可以加上 -open 参数。

使用浏览器打开 QReader 网页,如果你没有在配置文件中设置密码,直接在登录界面点击“登录”即可。登录后,点击“订阅”,添加 feed。

2.6 命令行参数

完整的命令行参数说明:

-s, -sitedata <sitedata>    指定 sitedata 路径,如果没有提供,使用当前目录下的 sitedata 目录
-init                       初始化 QReader 数据库和 config.ini 文件
-initdb                     初始化 QReader 数据库
-current-token              显示当前的 api token
-defini                     显示默认的 config.ini 文件内容
-open                       运行 QReader 服务器的同时,使用系统默认浏览器打开 QReader 网页
-h, -help                   显示帮助
-v, -version                显示版本信息

2.7 关闭 QReader 服务器

关闭 QReader 服务器有多种方法:

2.8 浏览器支持

QReader 使用网页作为客户端用户界面,建议使用的浏览器为 Google Chrome、Mozilla Firefox、Safari 或 Opera。在 IE 下可能无法正常使用。你也可以通过手机或平板电脑上的浏览器访问 QReader。

QReader 支持如下的快捷键:

快捷键说明
0 或 h前往首页
r刷新页面
t页面顶部
b页面底部
ctrl+left, command+left 或 p上一页
ctrl+right, command+right 或 n下一页

3. 文章搜索

点击顶部菜单中的“搜索”,可以根据关键词、feed id、tag、已读状态、加星状态进行搜索,可以设置排序字段和排序方式,可以设置返回结果数量。

3.1 搜索语法

搜索指令语法:[<条件>:]<值>[,<值>,...]

搜索指令包括“条件”和“值”,两者之间使用英文冒号分隔,多个搜索指令之间使用空格分隔,例如:tag:news starred:true 会搜索所有标签为 “news”,且已加星的文章。

“条件”项可以使用以下字段:

条件说明
fidfeed id,数字
keyword关键词,表示从文章标题和文章内容中进行搜索
title从文章标题中进行搜索
content从文章内容中进行搜索
read文章已读状态,any 表示任意文章,true 表示已读文章,false 表示未读文章,默认为 false。
orderby排序字段,默认为id
order排序方式,asc 表示正序,desc 表示逆序。默认为 desc。
tagfeed 标签
starred文章加星状态,any 表示任意文章,true 表示已加星文章,false 表示未加星文章,默认为 any。
num每页显示的结果数量,数字,默认为系统配置中设置的“每页条目数量”。

条件字段可以省略,如果省略,表示输入的为 keyword 条件的值。

fidkeywordtitlecontent 的值可以提供多个,相同的条件的多个值之间为“或”的关系,不同条件之间为“且”的关系。

当值中包含空格或符号时,需要用引号将值括起来,例如:keyword:"value1 value2"

多个值之间用英文逗号分隔:keyword:value1,value2

3.2 搜索举例

查找 feed id 为 15,标题中包含“编程”的未读文章:

fid:15 title:编程

查找文章内容为“Go”或“JavaScript”的已加星文章,每页显示20个结果:

content:Go,JavaScript starred:true num:20

查找标题或内容包含“linux”的文章,根据文章id和fid正序排序:

linux order:asc orderby:id,fid

4. 技术规格

第三方模块(JavaScript/CSS):

第三方模块(Go):

以下 Go 模块来自我写的 feedreader 和 go-utils 包: