配置

这部分囊括了Canto的基本特性,这里会教你如何使用过滤,排序,标签 以及其他预先就在canto.extra中就写好的功能. 下面的章节会告诉你如何真正写一些客户化的东西。这些东西都放在 这些东西都需要写在 ~/.canto/conf.py文件中 (conf, without the extension, is acceptable as well).

添加 feeds

add函数

add 是Canto配置文件的基本构成内容之一. 从名字就知道, 该函数添加feed到配置信息中. 99%的情况下, 只需要配置好了add(),就足够我们日常应用了:

add("http://someurl")

在获取feed时,你也可以配置其他参数 rate参数表示从服务器上获取feed的速率而 keep表示你希望保存多少文章. 下面那个配置告诉canto每30分钟更新一次feed,并且在这个feed上保留100篇文章.

add("http://someurl", rate=30, keep=100)

注意: 在keep参数低于feed中文章数量的情况下"keep"会被忽略(感觉怪怪的). 事实上, 默认情况下keep = 0. 这一点与0.6.x.版本不同

默认的rate值为5,也就是每5分钟从服务器上取一次文章.

有密码保护的 Feeds

如果配置的feed浏览器验证的保护 (也就是说. 当你用浏览器浏览时,会有一个输入框让你输入用户名和密码), 你也能在定义feed时设置这些参数.

add("http://someprotectedurl", username="myuser", password="mypass")

注意: 为了保护你配置文件中的敏感信息, 一般来说推荐执行chmod 600 ~/.canto/conf命令,这样可以使得其他用户不能获取到你的密码, 即使他能读取你的主目录也无济于事. 当然,和其他程序一样,Canto 不会强制你这样设置权限.

add函数还有其他一些选项, 我们将在其他地方进行讲解.

脚本扩展

Canto 支持使用 Snownews 扩展. 本质上, 这就是些可执行的脚本, 这些脚本运行起来的时候会生成 feed XML. 很多时候,我们用这些脚本从那些通常不提供feed的网页中将feed制造出来 (好在这种网页已经越来越少了). 默认情况下, 这些脚本放在 ~/.canto/scripts/文件中, 但是通过给canto-fetch-S选项可以指明其他地址作为脚本的存放处.

使用扩展脚本的一个典型案例是从Slashdot polls获取feed.这个页面,就像刚才说的,没有RSS在里面 slashdotpolls 是一个用来从Slashdot中制造出feed的脚本.下面是使用它的方法:

$ wget http://codezen.org/static/slashdotpolls
$ chmod +x slashdotpolls
$ mkdir ~/.canto/scripts
$ mv slashdotpolls ~/.canto/scripts/

给脚本加执行权限非常重要,否则扩展会失败.

注意: 由于这些扩展脚本会以你的用户权限来运行, 当你从一个未知的地方获取到脚本时,请一定检查该脚本,保证它是无害的,否则请一定不要使用该脚本..

下一步,为了在Canto中使用扩展脚本, 你需要在add函数中传递feed参数的地方用"script:"代替, 就像这样:

add("script:slashdotpolls -external")
add("script:myscript -arg1 -arg2 ...")

对于 slashdotpolls这个脚本来说, -external 选项使得该脚本打印出RSS地址来. 你可以从Snownews仓库 中找到更多的扩展脚本.

导入其他格式的文件

Canto 支持从其他格式的文件中添加feed. 当你想在不同阅读器中同步URL的时候,这个功能特别有用. 只要告诉Canto OPML文件的路径,Canto能够在运行时导入OPML文件.

source_opml("/home/myuser/feeds.opml")

Canto 也能导入纯文本格式的URL列表, URL之间用换行符分隔.

source_urls("/home/myuser/urls")

通过外部文件导入的Feeds跟简单的调用add("URL")效果是一样的. 如果你想给这种方式导入的 feeds 添加其他属性的话,那么你需要使用change_feed 该函数的参数跟add 一样.

设置默认值

有时候你可能想为大量的feeds设置同样的ratekeep . 通过使用 default_ratedefault_keep这两个函数 ,你可以为后面的每个feed设置rate和keep的值. 由于这些参数只对那些调用了这两个函数之后再添加的feed生效, 这两个函数不仅可以用来对所有的feed设置keep和rate值,也常常用来为一批的feeds设置keep和rate值. 如果你想全局性得对所有的feed都设置'keep' 和 'rate' 值,那么就在你定义任何feed前定义默认值即可.

注意:再次提醒你, rate的单位是分钟 而 keep 会忽略任何低于feed源上文章数量的值.

下面是很好的设置默认值的例子:

default_rate(30)    # News feeds 
add("http://news1")
add("http://news2")
...

default_rate(120)   # Slow blog feeds
add("http://blog1")
add("http://blog2")
...

default_rate(1)     # Quick feed
default_keep(100)   # Lots of items could be missed
add("http://quick1")
add("http://quick2")
...

如果你想改回原默认值, 把rate设置为5分钟(5) ,把 keep设置为0, 这意味着所有feed源上的文章都会保留.

丢弃策略

一般来说, 丢弃feed中keep定义范围之外的文章是可行的,因为这些文章都太老旧了.如果你想永远不丢弃某个标签或状态的文章,你可用使用 never_discard 函数.例如,我们要保留所有未读的文章不丢弃:

never_discard("unread")

你也能指定一个标签,例如"Slashdot", 不过除非你觉得花费大量的磁盘空间来保存成千的Slashdot文章是无所谓,否则我是不会建议你这么做的.