配置
这部分囊括了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在里面 是一个用来从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设置同样的rate
和 keep
. 通过使用 default_rate
和 default_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 feedsadd("http://blog1")add("http://blog2")...default_rate(1) # Quick feeddefault_keep(100) # Lots of items could be missedadd("http://quick1")add("http://quick2")...
如果你想改回原默认值, 把rate设置为5分钟(5) ,把 keep设置为0, 这意味着所有feed源上的文章都会保留.
丢弃策略
一般来说, 丢弃feed中keep
定义范围之外的文章是可行的,因为这些文章都太老旧了.如果你想永远不丢弃某个标签或状态的文章,你可用使用 never_discard
函数.例如,我们要保留所有未读的文章不丢弃:
never_discard("unread")
你也能指定一个标签,例如"Slashdot", 不过除非你觉得花费大量的磁盘空间来保存成千的Slashdot文章是无所谓,否则我是不会建议你这么做的.