创建一个数据驱动的Twitter头像

首先,免责声明:我不是编码员,只是使用代码制作东西的人。

幸运的是,对于像我这样的人,以及那些想要将各种互联网插在一起的人,有越来越多的平台和API可以互操作,使许多项目能够理解平台可以做什么,然后连接蓝线和绿线(但从来没有红线!)。

其中一个平台是Google Apps脚本,一种基于云的脚本语言,可向许多Google应用程序公开API,例如Spreadsheets,Maps,Mail和Calendar。如果您使用Google Apps(例如Gmail或Google文档),则现在可以通过这些API访问您的数据。它使用简单的类似JavaScript的语法,因此,如果您之前已经完成了一些前端脚本,您可以立即找到适合Google Apps脚本的方法。

这些工具使得它非常简单,快速且易于演示,通常只需很少的代码。这是我最近建造的玩具的一个例子,一个数据驱动的Twitter头像。

我建的是什么

如果你看看我的Twitter帐户,你会看到我的头像是带有数字的彩色块。这是我的收件箱中的大概电子邮件数量,每30分钟更新一次。由于Google Apps脚本的简单性,我花了大约30分钟才能一起破解。

这个想法

几年前,我读过Everyware亚当·格林菲尔德(Adam Greenfield),对无所不在的计算概念进行了精彩的介绍。它提出了一个世界,挂在墙上的艺术品不仅可以提供漂亮的图片,还可以提供嵌入的环境信息。也许当天气晴朗时,图片显示平静的海面,或者当信用卡拖欠时,图片显示波涛汹涌的海水和暴风雨。比闪烁的图标或ping警报更加微妙。

Not an uncommon sight in my inbox

在我的收件箱中并不罕见

几年后,我有一个免费的早晨做类似的事情。一般来说,收件箱中的电子邮件数量很好地衡量了我发生了多少事情。如果我很忙,我会慢慢回复,电子邮件会堆积起来。如果我可以将收件箱中的电子邮件数量连接到我的Twitter帐户,用“红色/琥珀色/绿色”或“平静/忙碌/重载”图像替换头像怎么办?

访问您的收件箱

首先,让我们打开一个新的Google Apps脚本。

你可以访问Script.google.com

要么

访问Drive.google.com和创建>更多>脚本

单击“创建空白项目”,您将立即看到一个代码编辑器,其中包含一个名为的空方法MyFunction的()

Function MyFunction(){}

这是我们放弃访问和控制Google Apps的代码的地方。

有很好的API文档,Google为其平台公开了这些文档developers.google.com/apps-script。为此,我们最感兴趣的是Gmail APIdevelopers.google.com/apps-script/class_gmailapp

从方法列表中可以看出,您可以完成许多任务,例如获取所有垃圾邮件列表(方便),搜索Gmail(非常方便),获取特定对话(超级方便)和检索收件箱中所有会话的列表(对于此任务,完美!)。

function myFunction(){//从我的收件箱中检索线程(对话)var threads = GmailApp.getInboxThreads();}

您现在可以点击“运行”,查看脚本的功能。如果这是您第一次使用Google脚本,系统会要求您进行一系列授权,主要是为了允许Google脚本访问您的收件箱,等等。您将到达一个页面,上面写着“您的脚本现在已被授权运行”,您可以关闭该页面,然后再次点击“运行”。

瞧瞧。没有。

好的 - 这不仅仅是访问您的收件箱并检索您的电子邮件列表。通常,如果使用JavaScript,您可以使用查看输出警报()或者将响应写入HTML页面或文本区域,但由于此脚本在云中运行,因此没有可视界面来查看其输出,因此我们需要使用Logger类。

function myFunction(){//从我的收件箱中检索线程(对话)var threads = GmailApp.getInboxThreads(); Logger.log(线程);}

运行此脚本,执行完毕后,单击View菜单,然后选择'Logs'(或按Ctrl + Enter)。假设您的收件箱中有电子邮件,您会看到以下内容:

[GmailThread,GmailThread]

这是一组电子邮件。您可以在此处访问对话的特定属性,但我只对会话数量感兴趣。

修改代码使我们能够处理计数,而不是线程本身。

function myFunction(){//从我的收件箱中检索线程(对话)数量var inboxcount = GmailApp.getInboxThreads()。length; Logger.log(inboxcount);}

超级简单。

修改你的头像

接下来,我想调用我编写的PHP脚本,该脚本获取该数据并上传适合我收件箱中电子邮件数量的图像。

Google Apps脚本使我们可以使用。来调用远程URLURLFetchApp

function myFunction(){//从我的收件箱中检索线程(对话)数量var inboxcount = GmailApp.getInboxThreads()。length; //将收件箱大小发送到远程脚本UrlFetchApp.fetch(“http://yourserver.com/updateavatar/script.php?count=”+ inboxcount);}

此单行通过HTTP调用我的远程脚本,以及收件箱计数作为查询字符串变量。 PHP脚本然后使用优秀Twitter的异步图书馆@jmathai连接到Twitter REST API以使用选定的图像替换我的头像:

Some of the sprites used in the script

脚本中使用的一些精灵
 5)$ imagename = 5; } $ filename = dirname(__ FILE__)。 '/'。 $ imagename。 '.PNG'; //将图像推送到Twitter //你需要从https://dev.twitter.com/apps/new获取各种Twitter API密钥$ twitterObj = new EpiTwitter($ consumer_key,$ consumer_secret,$ token,$秘密); $ twitterObj-> post('/account/update_profile_image.json',array('@ image'=>“@ $ filename”)); //是的,这真的很容易吗?>

每小时更新一次头像

最后,我们需要让脚本每小时运行一次,以保持头像更新。再次,Google Apps脚本即可解决问题。

在“资源”菜单下,您可以访问“触发器”列表。事件和触发器允许您在外部影响下运行脚本,例如时间传递或打开或编辑文件。我们想编写一个每小时执行一次脚本的触发器。

单击“添加新触发器”提供了一些简单的下拉选项,我们选择要运行的功能(MyFunction的),我们想要挂钩的事件(时间驱动),我们感兴趣的事件(小时计时器),然后是数据本身(每隔一小时)。这实际上是一个的cronjob

现在,我们可以点击“保存”,离开,每隔一小时,就会调用远程URL。

当然,我们不仅限于更新头像,或者实际上基于收件箱大小,Google Apps脚本API非常重要,它允许您创建文档,将许多Google服务连接在一起,并且通常可以自动化您的Google应用。

我决定调用一个远程URL来允许我自己的服务器执行繁重的工作(即上传图像,处理OAuth等),但实际上Google Apps可以使用OAuth和HTTP调用直接连接到Twitter API,这意味着我可以完全在Google的基础架构上运行脚本,无需任何托管。

能够使用一些非常简单的代码来展示一个想法是很长的路,所以也许风雨如磐的海洋绘画并不是那么遥远。



翻译字数超限