黄杰, 2015-10-29
root[a]linuxsand.info
2016-08-29 更新:RssDemon 做了一次大更新(4.x.x),虽然变好看了,但是我看中的功能基本废了。已弃用……
换了新手机,正在手动恢复部分程序、数据。
原本在用 Feed+ 看订阅,现在打算用 RssDemon,这两个软件几乎是一样的,经过判断后者才是「真·美猴王」。但是本文针对的是 Feed+。
问题是这样的,软件设置中可以导出订阅,但我实在找不到导出文件的路径。没办法,进到 /data/data/com.appyet.feedplus/databases,用数据库查看器打开 data.db 查看表结构,其中有个 Feed 表,进入就看到了我想要的内容。
把 data.db 拷贝出来,再根据 http://www.sqlite.org/cli.html 页面「Writing results to a file」的样例,把我要的信息提取出来:
sqlite> .open data.db
sqlite> .mode tab
sqlite> .output result.txt
sqlite> select FeedType, Link, Title from Feed;
sqlite> .exit
得到中间结果 result.txt:
...
ATOM http://v2ex.com/feed/tab/qna.xml V2EX - 问与答
RSS http://www.dgtle.com/rss/dgtle.xml 数字尾巴
...
再根据 OPML 的格式要求(我偷懒用 Foxmail 导出了一个),拼接成最终的 OPML 文件出来。「一次性」Python 脚本:
# coding: utf-8
outline = '<outline htmlUrl="%s" xmlUrl="%s" version="%s" type="%s" title="%s" text="%s"/>'
lines = []
for line in open('result.txt'):
parts = line.rstrip().split('\t')
assert len(parts) == 3
_type, _url, _title = tuple(parts)
lines.append(outline % (_url, _url, _type.upper(), _type, _title, _title))
opml = '''<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
<title/>
</head>
<body>
<outline title="Others" text="Others">
%s
</outline>
</body>
</opml>'''
with open('opml.txt', 'w') as f:
f.write(opml % '\n'.join(lines))
将拼接好的 opml.txt 复制到手机上,然后打开 RssDemon,从 OPML 添加订阅,手动输入 opml.txt 的路径(……),完成。
在软件的设置上,建议仅在 WiFi 环境下载图片。