Skip to main content

从 Pump.io 到 Twitter 的交叉帖子。

项目描述

泵推特

一个 Python 脚本,将来自 Pump.io 服务器的帖子交叉到 Twitter。

概述

如果您不熟悉pump.io,请查看https://microca.st/。试试看,看看你的想法!该脚本适用于已经使用 pump.io 服务的人(例如 microca.st,但还有很多其他的,您可以自己运行)。

有许多不同种类的活动。在这里,我们寻找笔记,就像普通的博客条目一样。我们找到一个注释,将其缩短,创建一个指向原始内容的 URL,然后发布推文。换句话说,我们是从 pump.io 交叉发布到 Twitter。

撰写便笺时,您可以选择收件人。如果它是To: PublicCC: Public,此脚本将交叉发布您的笔记。未发送到公开的帖子将被忽略。不包括其他泵活动(评论、喜欢等)。他们会如何在 Twitter 上引起兴趣还不清楚。

该程序设计为定期作为 cron 作业运行。

例子

泵注可以是任意长度,但推文限制为 140 个字符。该程序在(1)第一个换行符处裁剪注释或(2)尽可能接近 140 个字符,同时仍为原始注释的链接留出空间。这里有些例子。

示例泵 #1。

Have a great weekend, everyone!

示例推文#1。URL 是原始注释的链接。

Have a great weekend, everyone!http://ur1.ca/fislx

示例泵 #2。

I have a technical question about cooling fans.

My processor on my new machine is an i7. I'm using a SilverStone AR-01 heat sink. The heat sink is...

示例推文#2。仅保留注释的第一行。

I have a technical question about cooling fans.… http://ur1.ca/fihk8

接触

如果你想联系作者,这里有一些方法。错误报告和改进总是受欢迎的。

PyPI 安装

首先,您需要 Python。Python 3.4 和 3.5 已经过测试并且可以工作。旧版本可能不会。

PyPI安装是最容易的。首先,制作一个 virtualenvvirtualenv很好,因为它意味着您在此处安装的软件不会干扰系统上的任何其他内容。此外,如果您发现有问题或不满意,您可以删除pumptweet目录。

$ cd
$ mkdir pumptweet
$ virtualenv pumptweet
$ cd pumptweet
$ source bin/activate
(pumptweet)$ pip install pumptweet

假设没有出现错误,您已经安装了pumptweet。下一步是配置它。

源安装

  • 浏览:https ://dperkins.org/git/gitlist/pumptweet.git 。

  • 克隆:https ://dperkins.org/git/public/pumptweet.git 。

  • GitHub:https ://github.com/dper/pumptweet.git 。

如果要进行自定义修改,请考虑使用git install。这些说明适用于 Debian 系统。其他 Linux 和 Unix 发行版应该类似。首先,获取源代码并将其放入virtualenv中。

$ cd
$ git clone https://github.com/dper/pumptweet
$ virtualenv pumptweet
$ cd pumptweet
$ source bin/activate

命令提示符现在应该以(pumptweet)开头。您可能还需要安装一些依赖项,包括 PyPumppython-twitter

(pumptweet)$ pip3 install pypump
(pumptweet)$ pip3 install python-twitter

配置

为了使用该脚本,请创建一个名为PumpTweet.ini的文件,它看起来像这样。

[pump]
username =

[twitter]
key =
secret =
token =
token_secret =

[history]
recent =
published =

[pump][twitter]中的所有值都必须填写,但[history]​​中的两个条目可以留空。如果您未能填写前两个部分,则在运行脚本时会出现某种错误。为方便起见,包含了一个名为PumpTweet.ini.blank的文件。将该文件或上述文本复制到PumpTweet.ini并填写必要的部分。

PumpTweet.ini文件放在基本安装目录中。例如,我在本文档的前面将 pumptweet 安装到~/pumptweet中。我的配置文件应该位于 ~/pumptweet/PumpTweet.ini

配置泵

该脚本使用 PyPump 与泵服务器通信。这假设您已经有一个泵帐户。

您需要做的第一件事是将您的用户名(看起来像电子邮件地址)放入 ini 文件的[pump]部分。接下来,运行:

$ cd pumptweet
$ source bin/activate
(pumptweet)$ ./pt.py

此时,您将获得指向泵服务器的超链接。将链接粘贴到浏览器中以打开一个页面,您可以在其中登录并授予应用程序必要的权限。将验证器粘贴回提示符以继续。这就是您需要为[pump]做的所有事情。

配置推特

要使用 Twitter 验证客户端,请使用您最喜欢的 Web 浏览器。这假设您已经有一个 Twitter 帐户。

  • 转到https://apps.twitter.com/并登录。

  • 单击创建新应用程序

  • 你需要给它一个名字(比如pumptweet314),一个描述(比如A cross-posting script from Pump to Twitter.)和一个网站(如果你在 GitHub 上创建了一个 pumptweet 的分支,那将是一个不错的 URL,但是一切正常)。还要选中同意他们的条款的框并回答验证码。

  • 单击设置选项卡。将访问权限更改为 Read 和 Write。在屏幕底部,单击 更新此 Twitter 应用程序的设置

  • 单击详细信息选项卡。在屏幕底部附近单击 Create my access token

  • 单击“密钥和访问令牌”选项卡。此屏幕应显示 ini 文件中所需的四个值。复制并粘贴它们。这就是您需要为[twitter]做的所有事情。

运行脚本

要运行脚本,只需调用它。如果您缺少任何依赖项(如上面记录的那些),您将在此处找到相关信息。如果您从源代码安装了 pumptweet,请按如下方式运行它。

(pumptweet)$ ./pt.py

如果您使用pip安装它,请按如下方式运行它。

(pumptweet)$ ./bin/pt.py

如果一切正常,您应该会看到类似以下内容。在此示例中,有一条新注释,因此有一条新推文发布到 Twitter。

Reading the config file...
Logging into the pump.io server...
Logging into Twitter...
Converting posts to tweets...
Looking at pump.io outbox activity...
> note (2013-09-12 11:31:49+00:00)
> note (2013-09-12 10:40:24+00:00)
Printing tweets...
> Microca.st: Someone put on a pot of coffee at 3PM today. I can't have coffee in the afternoon and reliably get to ... http://ur1.ca/fhy3z
Posting to Twitter...
Updating history...

如果您再次运行该脚本,它会查看自上次运行以来是否有任何新内容。在下面的示例中,它查看一个帖子并停止,因为该帖子并不比脚本上次处理的内容更新。没有任何内容发布到 Twitter。

Reading the config file...
Logging into the pump.io server...
Logging into Twitter...
Converting posts to tweets...
Looking at pump.io outbox activity...
> note (2013-09-12 11:31:49+00:00)
Printing tweets...
Posting to Twitter...
Updating history...

为方便起见,有一个 bash 脚本pt.sh可以为您完成 virtualenv的工作。从命令行调用该脚本以确保其正常工作。如果您从源代码安装,请按如下方式运行它。

$ cd /home/me/pumptweet && pt.sh

如果您使用pip安装,请按如下方式运行它。

$ cd /home/me/pumptweet && ./bin/pt.sh

Cron 和速率限制

假设您已将程序安装在/home/me/pumptweet并使用pt.sh对其进行了测试,以确认一切正常。接下来要做的是做一个 cron 作业(使用crontab -e),如下所示。以下 cron 作业每五分钟运行一次。

*/5 * * * * cd /home/me/pumptweet && ./pt.sh > /dev/null

对于大多数用户来说,不用担心,但如果你倾向于在短时间内写很多笔记,交叉发布可能会有些微妙。Twitter有一个速率限制,虽然我不知道它到底是什么。此脚本一次最多发布三个推文。如果自上次调用以来你已经写了五个笔记,最新的三个将成为推文,而最旧的两个将被遗忘。

如果你发现你写了很多笔记并且它们被跳过了,你可以更改PumpTweet.py并一次发布三个以上。但不要将值提高得太高,否则您可能会达到 Twitter 速率限制,开始向您的 Twitter 关注者发送垃圾邮件,或两者兼而有之。更好的方法可能是更频繁的 cron 作业。

错误

识别错误可能很困难。如果 Pump 或 Twitter 服务器完全离线,您将收到一条明显的错误消息,但如果它们部分离线,您可能不会。同样,如果您的登录名不正确,您可能会看到令人困惑的错误消息。如果您不确定出了什么问题,我们鼓励您打开问题、联系开发人员或向 Pump 网络发布消息。

测试

如果您尝试修改脚本或追踪其他错误,您可能需要进行测试运行。在这种情况下,请按如下方式调用脚本,根据您的安装位置更新目录。

(pumptweet) $ pt.py --test

对于(非常短的)命令行帮助文档,请使用此命令。

(pumptweet) $ pt.py --help

GNU 社交

GNU social有一个类似 Twitter 的 API,您可以使用这个脚本,稍加修改,从 Pump.io 交叉发布到 GNU social。[@sazius]( https://pump.saz.im/sazius/note/jdTJx2pQRGiEDpB5eDlXEg ) 已经这样做了,这就是他所说的。

这很简单:只需将参数 base_url='https://your.gnu.social/api'添加到PumpLogin.pytwitter_login中的twitter.API()调用 中。我想你可以把它作为一个可配置的参数。

下一个问题是从 GNU Social 获取 OAuth 令牌,我使用了 get_access_token.py脚本,但是您必须将 ?oauth_callback=oob添加到REQUEST_TOKEN_URL,当然还要将 Twitter API URL 替换为 GNU social 的 URL。

谢谢

整个pump.io社区都帮助宣传了这个项目。感谢在场的每一个人的支持。请参阅AUTHORS.md以获取贡献代码的优秀个人的列表。

项目详情


下载文件

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

源分布

pumptweet-2.1.tar.gz (86.1 kB 查看哈希)

已上传 source