跳转到主要内容

多站聚合器(行星)或个人订阅阅读器

项目描述

弃用通知:这个项目的分支几乎已被废弃,并且有一段时间没有更新,请查看其他github分支(例如allo-/feedjack)以获取更最新和功能更完整的版本。

Feedjack是一个聚合器,允许将多个rss/atom聚合到多个“站点”,作为常规网页访问,有点像“行星”聚合器所做的那样,但更好。

旨在作为一个多站点内容聚合器(例如“planet python”)以及一个带有网络界面的个人内容订阅阅读应用。它也是一个Django应用,可以集成到更大的Django项目中。

本项目是基于Gustavo Picón的原始Feedjack项目的分支,该项目似乎已经废弃了一段时间。有关过去发生的事情的更多详情,请参阅CHANGES文件。

安装

Python模块(Django应用)

这个Feedjack分支是Python 2.7的常规包(非3.X)。

最佳安装方式是从PyPI使用pip

% pip install Feedjack

如果您没有它,可以使用

% easy_install pip
% pip install Feedjack

或者(参见pip2014.compip安装指南

% curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
% pip install Feedjack

当前git版本可以这样安装

% pip install 'git+https://github.com/mk-fg/feedjack.git#egg=Feedjack'

所有这些都会自动从配置的python站点路径获取并安装“feedjack”Django应用,以及所有必需的依赖项。

从git checkout安装的另一种方法是,在目录中运行python setup.py install

请注意,要在系统范围的PATH和site-packages中安装东西,通常需要提升权限。使用“install –user”,~/.pydistutils.cfgvirtualenv以在自定义路径中进行无权限安装。

Django项目

如果您不熟悉Django框架以及Django应用的部署方式,请参阅这个简短教程,其中包含了初始化“django项目”目录所需的全部步骤,并解释了里面的内容。

https://docs.django.ac.cn/en/stable/intro/tutorial01/#creating-a-project

Django项目——在最基本的情况下——只是一些配置文件,指定使用哪个数据库,以及哪些“应用”应处理哪些URL。

Feedjack只能作为这样的项目中的“应用”部署,因此必须创建它,或者在现有应用中启用。

在Django项目中启用应用

  • 首先,必须在settings.py中的INSTALLED_APPS中启用“feedjack”应用。

  • 然后从命令行运行./manage.py migrate“migrate”命令,在Django-1.7中替代了“syncdb”)应在数据库中填充feedjack特定的模式(在同一个文件中配置的数据库)。

  • Feedjack的“静态文件”目录应设置为可以通过配置的STATIC_URL(确切地说是在“STATIC_URL/feedjack/”下)访问。

    这可以通过使用django.contrib.staticfiles应用自动完成,该应用将通过./manage.py collectstatic命令复制/链接静态文件。

    也可以手动完成。例如,如果您的STATIC_URL解析为“/var/www/htdocs”,并且Feedjack安装到了“/usr/lib/python2.7/site-packages/feedjack”,则从那里创建符号链接可能会起到作用。

    % ln -s /usr/lib/python2.7/site-packages/feedjack/static/feedjack /var/www/htdocs/
  • 请确保也启用/添加/取消注释并检查“django.contrib.admin”应用(Django管理界面),因为它是配置和控制feedjack最方便和支持的方式。

    之后可能还需要进行“migrate”操作。

    安装后配置和控制feedjack应用的其它方式包括

    • 命令行工具。

      这些可以通过django-admin.py(或“./manage.py”包装器)访问——参见–help输出以获取支持的命令的参考。

      其中一些(例如“feedjack_update”)也可以作为python console_scripts入口点安装。

    • 直接从python代码或./manage.py shell中操作模型,这可能对某些类型的迁移或自动化配置是有用的。

  • 在Django的“urls.py”文件中添加feedjack.urls条目,使其看起来像这样(在“/admin/”上启用管理界面):

    urlpatterns = patterns( '',
      (r'^admin/', include('django.contrib.admin.urls')),
      (r'', include('feedjack.urls')) )

    当然,更复杂的Django配置可能需要更多的条目。

完成这些后,检查“/admin”界面(如果启用了django.contrib.admin应用程序)来创建feedjack站点可能是个不错的选择,否则在首次请求时将创建一个默认的样本站点。

在使项目可通过互联网访问之前,务必查看Django文档中的部署部分以及那里的清单。

请参阅下方的“配置”部分。

需求

  • Python 2.7(不是3.X)

  • Django 1.8+

  • feedparser 4.1+

  • (可选,推荐)pytz - 在某些情况下由Django需要,有助于正确处理/解释时区。

  • (可选)lxml - 在某些主题(如fern,plain)中用于html转换,以及在无法处理这些时间戳的情况下处理更多自由格式的feed时间戳。

  • (仅用于从旧版本的Feedjack/Django更新)South

从旧版本更新

唯一不向后兼容的更改应该在数据库模式中,因此需要迁移,但这比听起来要容易得多。

Feedjack过去没有自动数据库迁移功能,然后使用了South模块(在此分支中),现在使用Django的内置数据库迁移功能(仅与Django-1.7+一起使用)。

  • 要升级那些根本未使用迁移的旧安装,请安装并启用South应用程序,备份“feedjack/migrations”(现在包含Django原生迁移信息),然后将“feedjack/migrations.south”目录重命名为“feedjack/migrations”。

    当前数据库中没有自动确定模式版本的方法,因此请使用South的./manage.py migrate --list命令列出迁移,找到匹配当前数据库状态的迁移,然后运行例如./manage.py migrate feedjack 0013 --fake以使South了解它。

    对于分叉前的Feedjack版本(0.9.16及以下),这将是非常第一个(0001)模式版本。

  • 要从South升级到Django-1.7+原生迁移,临时将“migrations.south”目录恢复为上述“migrations”,运行./manage.py migrate以确保所有South迁移都已应用,然后恢复Django的“migrations”目录,在INSTALLED_APPS中将“south”替换为“django.db.migrations”,然后再次运行./manage.py migrate以应用所有这些。

    请参阅Django文档中关于迁移的从South升级部分。

配置

你首先想要做的是添加一个站点。

为此,打开Django管理界面并创建你的第一个星球。你必须使用URL字段中的有效地址,因为它将用于在同一个实例中有多个星球时识别当前星球并生成所有链接。

然后你应该向你的第一个星球添加订阅者。订阅者是Feed和Site之间的关系,因此当你添加第一个订阅者时,你应该通过点击Feed组合框右边的“+”按钮添加你的第一个Feed。

Feedjack设计为使用Django缓存系统来存储数据库密集型数据,如帖子页面和标签云,因此强烈建议在django设置中配置CACHES(memcached,db,files等)。Feedjack将尝试使用带有“feedjack”别名的缓存,如果没有定义,则回退到“default”。

现在您已经设置好了所有内容,运行 ./manage.py feedjack_update(或类似 DJANGO_SETTINGS_MODULE=myproject.settings feedjack_update)以从源获取实际数据。此脚本应设置为定期运行(以从源获取新帖子),这通常是Unix cron守护进程的任务。

如果某些功能缺失或无法访问,feedjack可能会在每次运行时发出(一次)python警告,这些警告可以通过日志系统捕获(通常应该这样做),以便由django处理(例如,向管理员发送通知邮件)。

为此,将以下代码添加到Django的settings.py文件中

import logging
logging.captureWarnings(True)

用法

导航到Django应用部署的http(s) URL,您应该会看到一个包含配置的源所有内容的聚合页面,或者如果没有配置或获取到内容,则可能是一个空页面。

源更新(获取新条目)仅在运行feedjack_update命令时发生,这可以是命令行脚本(由setup.py作为cli入口点安装)或常规Django管理命令之一。

管理命令

Feedjack应用添加了几个Django管理命令,完整列表可以通过运行例如 ./manage.py help(或通过django-admin.py执行类似操作)找到。

使用–help(或-h)选项运行每个命令,以查看特定命令的完整信息。

  • feedjack_update

    获取所有活动(默认)或指定的站点/源的条目。

  • feedjack_add_feed

    添加指定的源,可选地添加站点订阅者,获取(有关详细信息,请参阅–hidden选项以仅显示未来条目)和相关内容。

  • feedjack_status

    列出所有站点/源及其各种信息的通用命令。

  • feedjack_purge

    按指定标准清理(清除)源条目的命令。

    最常见的使用可能是“按年龄”子命令,允许删除过时很久的帖子(或较新的帖子,请确保检查–dry-run选项和–debug选项下的帖子列表,这可能在进行实际删除之前很有用)。

自上次更新README以来,可能还有更多命令,请参阅 ./manage.py help--help 以获取完整列表和/或有关每个命令的信息。

错误、开发、支持

此分支的所有问题可能都应该报告给相应的github项目/分支,因为这里的代码可能与原始项目有很大不同。

直到2012年,此分支保存在一个fossil仓库此处

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

Feedjack-16.8.1.tar.gz (170.0 kB 查看哈希值)

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面