为什么我使用 AWS Lambda 自动删除我的旧推文 内容和观点 社交媒体不是社交 短暂的推文 为什么要使用 Twitter?

2025-05-28

为什么我使用 AWS Lambda 自动删除旧推文

内容和观点

社交媒体不是社交

短暂推文

为什么要使用 Twitter?

从现在开始,我的推文将不再可见。以下是我要删除所有旧推文以及免费执行此操作的 AWS Lambda 函数的原因。

内容和观点

我成为“单包流浪者”才一年半多一点。在此之前,我和大多数人一样,住在公寓或独栋别墅里。我拥有家具、比实际需要的更多衣物,以及足够装满几个搬家箱的“杂物”。如果我要搬到别的地方,比如因为学校、家庭或工作原因搬家,我都会把所有东西打包带走。这些年来,我积累的东西越来越多。

许多人称之为极简主义的生活方式迅速改变了我许多长期以来的观念。把我所有的东西都送人(这个想法我曾经觉得理论上很有趣,但实际上有点荒谬)现在成了常态。现在,对我来说,不拥有那些不经常用的东西也很正常。我不会在墙上的架子上堆满旧书、旧盘子、旧衣服或童年玩具,因为这些东西对我来说已经不再重要了。取而代之的是,我只保留美好的回忆。

想象一下,我还住在一所房子里。想象一下,那所房子里,冰箱上,挂着一幅我六岁时画的画。画的右下角用绿色蜡笔潦草地写着:“西兰花很笨——维多利亚,六岁。”

如果你在我家看到冰箱上的那幅画,你会认为“西兰花很笨”这句话准确且符合我对西兰花的看法吗?当然不会。我写那句话的时候才六岁。我已经有足够的时间来改变我的想法了。

社交媒体不是社交

我有个朋友,我们从幼儿园就认识了。我们一起上小学,之后几年偶尔见面聊天。现在我们都长大了。有时聊天时,我们会回忆起小时候的一些趣事。记忆的本质决定了,我并不认为我们回忆的内容能够准确无误。我们对过去发生的事情的印象——无论是犯过的错误还是取得的胜利——都受到我们之后经历和学到的一切的影响。在同学生日聚会上遇到的尴尬时刻,会成为孩子学习社交的一个例子,而不是当时那种尴尬到极点的尴尬。

这就是记忆的运作方式。从某种意义上说,它会更新,这也是理所当然的。生活在小社区的人们会记得邻居多年前做过的事,但会结合现在的邻居以及他们目前的关系来回忆这些事。这种对历史的重新着色,是人们疗伤做出正确决定社交的重要组成部分。

社交媒体做不到这一点。你保存完好的五天前或五年前的推文,都能被准确无误地回忆起来。对大多数人来说,这并不特别令人担忧。我们倾向于发一些非常平凡的推文——无聊时突然想到的,想引起别人注意的事情。通常情况下,我们发的旧推文本身并不重要。然而,汇总起来,它们却能完整地展现一个人随意、无意识的想法。这就是问题所在。

对社交媒体,尤其是推特上的内容做出的假设,与你对某人上周在笔记本上涂鸦做出的假设截然不同。我无意揣测其中原因——我只是见过太多因为多年前发布的内容而被公开批评的案例,足以证明这种事确实存在。这很奇怪。如果你不会认为上周在笔记本上涂鸦或几十年前用蜡笔画的画能反映出一个人现在的本质,那么你又怎么会认为一条旧推文能反映出这一点呢?

你已不再是上个月的你——你见识过、读过、理解过、学到过的东西,这些都在某种程度上改变了你。虽然一个人一生中的大部分时间里,对自我和身份的认知可能都是一样的,但即使是这种认知,也会随着岁月的流逝而不断成长和变化。我们的观点、欲望和习惯都会改变。我们并非一成不变,也不应该让自己被刻意地描绘成一成不变。

短暂推文

如果你今天查看我的 Twitter 个人资料页面,你会发现那里的推文比你的手指还少(我希望如此)。我正在使用ephemeral (一个我为AWS Lambda编写的轻量级实用程序)来删除所有超过几天的推文。我这样做的原因和我不再保留不再使用的东西一样——这些东西对我来说已经不再重要,也不代表我。

组成 ephemeral 的代码是用 Go 编写的。AWS Lambda 为每个 Lambda 函数创建一个环境,因此 ephemeral 会利用环境变量来存储你的私有 Twitter API 密钥以及你想要保留的推文的最长期限(以小时为单位),例如72h

var (
    consumerKey       = getenv("TWITTER_CONSUMER_KEY")
    consumerSecret    = getenv("TWITTER_CONSUMER_SECRET")
    accessToken       = getenv("TWITTER_ACCESS_TOKEN")
    accessTokenSecret = getenv("TWITTER_ACCESS_TOKEN_SECRET")
    maxTweetAge       = getenv("MAX_TWEET_AGE")
    logger            = log.New()
)

func getenv(name string) string {
    v := os.Getenv(name)
    if v == "" {
        panic("missing required environment variable " + name)
    }
    return v
}
Enter fullscreen mode Exit fullscreen mode

该程序使用anaconda库。它会根据 Twitter API 每次请求 200 条推文的限制,获取你的时间线,然后将每条推文的创建日期与你的MAX_TWEET_AGE变量进行比较,以确定其是否足够旧,需要删除。删除所有过期推文后,Lambda 函数将终止。

func deleteFromTimeline(api *anaconda.TwitterApi, ageLimit time.Duration) {
    timeline, err := getTimeline(api)

    if err != nil {
        log.Error("Could not get timeline")
    }
    for _, t := range timeline {
        createdTime, err := t.CreatedAtTime()
        if err != nil {
            log.Error("Couldn't parse time ", err)
        } else {
            if time.Since(createdTime) > ageLimit {
                _, err := api.DeleteTweet(t.Id, true)
                log.Info("DELETED: Age - ", time.Since(createdTime).Round(1*time.Minute), " - ", t.Text)
                if err != nil {
                    log.Error("Failed to delete! ", err)
                }
            }
        }
    }
    log.Info("No more tweets to delete.")

}
Enter fullscreen mode Exit fullscreen mode

在此处阅读完整代码

对于这样的用例,AWS Lambda 提供了一个免费的套餐。无论您是任何级别的开发人员,这都是一个非常有用的工具,值得熟悉。有关如何设置一个可以自动发推文的 Lambda 函数的完整演示和屏幕截图,您可以阅读这篇文章。临时推文的设置方法相同,只是功能相反。:)

我从 Adam Drake 的Harold中 fork 了 ephemeral 版本。Harold 是一款 Twitter 工具,除了精简时间线之外,还有很多实用功能。如果您需要一次性删除超过 200 条推文,请先使用 Harold 进行删除。您可以deletetimeline在终端中启用该选项并运行 Harold。

出于情感考虑,您可能希望在删除所有推文之前先下载它们

为什么要使用 Twitter?

先回答这个问题,我先说是的,我确实会用 Twitter,除了把它当作一个用来存放 Lambda 函数的容器之外。它有它的好处,大部分都与我理解的它最初的意图相关:作为一种近乎即时的沟通方式,将简短易懂的信息传递给更广泛的受众。

我用它来关注当下发生的事情。我会用它来评论、调侃,甚至同情我关注的人发的推文。通过把我的时间线限制在最近几天,我感觉自己更能用上 Twitter 了:它是一种参与对话、了解世界动态的方式,而不仅仅是一个积累更多“东西”的地方。

文章来源:https://dev.to/victoria/why-im-automatically-deleting-my-old-tweets-using-aws-lambda-1b81
PREV
12 个鲜为人知的 JavaScript Web API,助你网站性能飞速提升
NEXT
SQL 注入和 XSS:白帽黑客如何信任用户输入 SQL 注入攻击 SQL 注入缓解 跨站点脚本 (XSS) 攻击 XSS 攻击缓解 注意您的输入