有没有一种简单的方法可以从命令行检索某人的推文?
该帐户将是公开的,并且命令(或脚本,如果需要)将检索所有或指定数量的最新推文到一个文本文件中,每行一条推文,不包含元数据,最新的推文在第一行。
不使用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。虽然我从未使用过,但我会放上一些资源链接,以帮助您找到最适合的工具:
- https://stackoverflow.com/questions/3858671/unix-command-line-json-parser
- http://www.conigliaro.org/2011/01/24/jazor-a-simple-command-line-json-parsing-tool/
- https://stackoverflow.com/questions/1955505/parsing-json-with-sed-and-awk
- http://kmkeen.com/jshon/
需要注意的是,使用 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