独立的基于django的提要聚合器。
newspeak的Python项目详细描述
它的功能
newspeak是一个feed聚合器,具有用于关键字筛选的高级功能 以及链接内容提取,作为standalone django应用程序实现。
架构
newspeak执行以下任务(按顺序):
- 根据Feed模型(并行)获取指定的rss/atom提要。
- 使用feedparser分析源。
- (可选)基于KeywordFilter模型,对标题和/或摘要应用每个提要包含/排除关键字筛选器。
- (可选)使用xpath表达式从提要条目的链接url中提取摘要数据,使用lxml。
- (可选)使用xpath表达式从feed条目的链接url中提取存储模块信息,使用lxml。
- 将结果提要信息本地存储在数据库中。
- 在单个rss/atom提要中提供所有提要条目的聚合。
通过应用程序的feed数据流大致如下(给出一些示例feed和关键字过滤器):
[Feed 1]-[Keyword filter 1]-[Keyword filter 2]-[XPath content extraction]-----------------------------`\ [Feed 2]--------------------[Keyword filter 3]-[XPath summary extraction]-[XPath content extraction ] -+--[Aggregate output feed] [Feed 3]-[Keyword filter 3]-[Keyword filter 4]---------------------------------------------------------/
安装
开始使用newspeak非常容易,这要归功于david cramer的出色表现 logan用于制作独立的django应用程序。 只需执行以下步骤:
安装时,您可以轻松地编写代码:
pip install -e \ git+https://github.com/bitsoffreedom/newspeak.git#egg=newspeak
如果您很聪明并且喜欢保持python环境的干净,请执行以下操作 在一个VirtualEnv里。
在~/.newspeak/newspeak.conf.py中初始化配置
newspeak init
通过编辑设置文件执行(可选)配置。因为 《新闻高峰》是根据Django改编的 available Django settings 可以使用。此外,还有一些特定于新高峰的设置:
- newspeak_threads:用于爬网的(轻量级)线程数 输入数据。
- newspeak_metadata:生成的输出源中使用的元数据。
有关这些设置的更详细描述和示例,请 查看在上一步中生成的初始设置文件。
(可选)运行测试:
newspeak test newspeak
这可能需要一段时间,所以去拿杯咖啡来。如果失败了, 请提供命令的输出newspeak test newspeak–traceback 在github上的issue中。
创建管理员用户和sqlite数据库(可选择适当的数据库):
newspeak syncdb --migrate
启动本地Web服务器:
newspeak run_gunicorn
在浏览器中打开http://127.0.0.1:8000/admin/,添加一些feed。只有 URL是必需的,将获取描述和标题 以及第一组条目。
(可选)为源配置一个或多个基于关键字的筛选器。
确保执行以下命令以更新源:
newspeak update_feeds
(可选地,添加-v<;1 2 3>;以获取有关流程的更多反馈。)
看看漂亮的feeds:openhttp://127.0.0.1:8000/all/rss/或者 http://127.0.0.1:8000/all/atom/在您最喜欢的feed阅读器中。全部输入 订阅源将在那里聚合。
或者,使用的原始feed、关键字和xpath表达式 一个名为feeds\u bof.json的fixture中包含了一些自由。这个 可使用以下方法加载夹具:
newspeak loaddata feeds_bof
将Cronjob设置为自动 使用newspeak update_feeds命令更新feed数据。为了 例如,每小时更新提要的cron作业可以如下所示:
0 * * * * <full_path_to_>/newspeak update_feeds
升级
再次运行pip安装命令:
pip install -e \ git+https://github.com/bitsoffreedom/newspeak.git#egg=newspeak
(可选)运行测试:
newspeak test newspeak
应用任何数据库迁移:
newspeak migrate