有没有一种简单的方法可以从命令行检索某人的推文?
该帐户将是公共帐户,命令(或脚本,如果需要)将检索全部或指定数量的最新推文到文本文件,每行一条推文,第一行中没有元数据,而没有元数据。
不使用API,只能使用bash。
有没有一种简单的方法可以从命令行检索某人的推文?
该帐户将是公共帐户,命令(或脚本,如果需要)将检索全部或指定数量的最新推文到文本文件,每行一条推文,第一行中没有元数据,而没有元数据。
不使用API,只能使用bash。
Answers:
从截止日期开始,Twitter将在没有OAuth密钥的情况下不允许您进入其API。但是,作为解决方法,您可以使用Search API。它是RESTful的,因此您可以curl
用来检索JSON格式的搜索结果。例如,如果您想检索@java的推文,并将其保存到file ~/.tweets
,则可以使用以下代码行:
curl http://search.twitter.com/search.json?q=from:java&page=1&rpp=10&callback=? >> $HOME/.tweets
您可以使用任何JSON解析器来解析文件。
rpp
参数是要检索AF鸣叫次数。callback
是要在生成的JSON上执行的javascript函数。如果您没有将api与JavaScript一起使用,则可以将其保留为?,但不要将其删除。我会导致错误。有关Search api的更多指南,请访问https://dev.twitter.com/docs/api/1/get/search
有一些工具可以从命令行界面解析JSON。尽管我从未使用过,但是我将放置一些指向某些资源的链接,以帮助您找到最合适的工具:
还有一点注意,使用某些Python或Ruby(或其他)更快。
如果您不想使用Twitter API,则可以使用bash脚本获取Twitter配置文件的RSS feed,然后从那里进行格式化。
由于Twitter API已弃用RSS提要,因此您可以通过使用搜索结果生成RSS提要来解决此问题。
但是,您将必须整理必要的bash脚本。从获取RSS提要到根据您的要求格式化推文。
这是我为屏保使用的脚本
#!/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
我制作了一个工具,几乎可以完成您所描述的工作:twitter-screen-scrape 。默认情况下,它将以JSON和元数据的形式输出,但是通过诸如underscore-cli之类的输出将所需的内容剥离掉是很简单的。
$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
您可以通过以下方式使用python + tweepy路线:
我刚刚测试了它,效果很好。但是,有些用户会保护自己的推文,因此可能无法让您下载所有内容。但这是Twitter的功能。
限制仍然是3200,您将获得CSV文件。
twarc
如果您想存档Nassim Nicholas Taleb所使用的推文,则可以举个例子。
twarc timeline nntaleb --format csv> taleb.csv
您也可以使用其他格式: --format {json,csv,csv-excel}
如何配置twarc
:API
不幸的
是,获取完整推文的唯一方法是使用该应用,即使该应用是透明的,您也需要进行初始设置和配置,您还需要申请API
(
自2018年7月起,您必须申请Twitter开发者帐户并获得批准,然后才能创建新应用程序。
)
一旦获得了应用程序密钥,就可以twarc
使用configure命令确定它们的含义。
twarc configure
这将存储在一个名为您的凭据.twarc
在你的home目录,所以你不必保持进入他们。如果你宁愿直接供给他们,你可以将它们在环境中(CONSUMER_KEY
,CONSUMER_SECRET
,ACCESS_TOKEN
,ACCESS_TOKEN_SECRET
),或者使用命令行选项(--consumer_key
,--consumer_secret
,--access_token
,--access_token_secret
)。