如何从命令行检索推文?

如何从命令行检索推文?

有没有一种简单的方法可以从命令行检索某人的推文?

该帐户将是公开的,并且命令(或脚本,如果需要)将检索所有或指定数量的最新推文到一个文本文件中,每行一条推文,不包含元数据,最新的推文在第一行。

不使用API​​,仅使用bash。

答案1

从最近开始,Twitter 不会让您在没有 OAuth 密钥的情况下进入其 API。但作为一种解决方法,您可以使用搜索 API。它是 RESTful,因此您可以使用它curl来检索 JSON 格式的搜索结果。例如,如果您想检索 @java 的推文并将其保存到文件~/.tweets,可以使用以下代码行:

curl http://search.twitter.com/search.json?q=from:java&page=1&rpp=10&callback=? >> $HOME/.tweets

您可以使用任何 JSON 解析器来解析该文件。


参数rpp是要检索的推文数量。callback是要在生成的 JSON 上执行的 JavaScript 函数。如果您没有在 API 中使用 JavaScript,则可以保留它?,但不要删除它。否则会导致错误。有关搜索 API 的更多指导,请参阅https://dev.twitter.com/docs/api/1/get/search

有一些工具可以从命令行界面解析 JSON。虽然我从未使用过,但我会放上一些资源链接,以帮助您找到最适合的工具:

需要注意的是,使用 Python 或 Ruby(或其他语言)会更快。

答案2

如果您不想使用 Twitter API,您可以使用 bash 脚本获取 Twitter 个人资料的 RSS 提要,然后从那里继续格式化。

由于 Twitter API 已弃用 RSS 提要,您可以通过使用搜索结果生成 RSS 提要来解决此问题。

这是我的推文的 RSS 订阅


不过,您必须整理必要的 bash 脚本。从获取 RSS 源到根据您的要求格式化推文。

答案3

这是我为屏幕保护程序编写的脚本

#!/bin/bash

user="$1"
user="${user:=pontifex_pl}"

last_status_url=$(lynx -dump https://twitter.com/$user \
    | grep -i "$user/status/" \
    | head -1 \
    | awk '{print $2}')

lynx -dump "$last_status_url" \
    | grep 'Twitter:' -m1 -A4 \
    | tr -d '\n' \
    | sed -e 's/[^"]*"//' -e 's/".*//' \
    | tr -s ' '

echo

答案4

我制作了一个工具,它几乎可以完全按照你描述的方式完成:Twitter 屏幕抓取 默认情况下,它将以 JSON 格式输出,并附带元数据,但可以通过类似下划线-cli去掉所有你不想要的东西。

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile

相关内容