从 Pump.io 到 Twitter 的交叉帖子。
项目描述
泵推特
一个 Python 脚本,将来自 Pump.io 服务器的帖子交叉到 Twitter。
概述
如果您不熟悉pump.io,请查看https://microca.st/。试试看,看看你的想法!该脚本适用于已经使用 pump.io 服务的人(例如 microca.st,但还有很多其他的,您可以自己运行)。
有许多不同种类的活动。在这里,我们寻找笔记,就像普通的博客条目一样。我们找到一个注释,将其缩短,创建一个指向原始内容的 URL,然后发布推文。换句话说,我们是从 pump.io 交叉发布到 Twitter。
撰写便笺时,您可以选择收件人。如果它是To: Public或CC: 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安装是最容易的。首先,制作一个 virtualenv。virtualenv很好,因为它意味着您在此处安装的软件不会干扰系统上的任何其他内容。此外,如果您发现有问题或不满意,您可以删除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)开头。您可能还需要安装一些依赖项,包括 PyPump和 python-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 帐户。
单击创建新应用程序。
你需要给它一个名字(比如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
谢谢
整个pump.io社区都帮助宣传了这个项目。感谢在场的每一个人的支持。请参阅AUTHORS.md以获取贡献代码的优秀个人的列表。