How to retrieve tweets from command line?

Is there a simple way to retrieve someone’s tweets from the command line?

The account would be public, and the command – or script, if necessary – would retrieve all or a specified number of most recent tweets to a text file, one tweet per line, without the metadata, the newest in the first line.

Without the use of API, only bash.

Asked By: Strapakowsky

||

If you don’t want to use the Twitter API, you could grab the RSS feed of the Twitter profile using a bash script and then proceed to format it from there.

Since Twitter API has deprecated the RSS feed, you can workaround this by generating RSS feed using the search results.

Here’s the RSS feed of my tweets.


You would have to put together the necessary bash script though. From fetching the RSS feed to formatting the tweets as per your requirements.

Answered By: jokerdino

From a-close-date on, Twitter won’t let you into their API without having an OAuth key. But as a workaround you can use Search API. It is RESTful, so you can use curl to retrieve search results in JSON format. For example, if you want to retrieve @java’s tweets, and save it to file ~/.tweets, this line of code can be used:

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

And you can parse the file, using any JSON parser.


The rpp parameter is number af tweets to be retrieved. callback is javascript function to be executed on the resulting JSON. In case you’re not using JavaScript with the api, you can leave it ?, but don’t remove it. I will cause an error. More guidance on Search api can be found on https://dev.twitter.com/docs/api/1/get/search

There are tools to parse JSON from command line interface. Although I’ve never used one, I’ll put some links to some resources, to help you find out the best suited tool:

And as a little note, it is quicker to use some Python or Ruby (or others).

Answered By: user91091

I made a tool that should do almost exactly what you described: twitter-screen-scrape
. By default it will output in JSON, with metadata, but it’s trivial to pipe the output through something like underscore-cli to strip out everything you don’t want.

$ twitter-screen-scrape -u slang800 | underscore pluck text --outfmt text > outputfile
Answered By: slang

This is my script made for screensaver usage

#!/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
Answered By: tworec

You could go the python + tweepy route by:

  1. Creating your own Twitter Application (To get API Keys)
  2. Create Access tokens for you twitter account
  3. Use a script such as this together with your credentials: https://gist.github.com/yanofsky/5436496

I just tested it and it works great. There are however users that protect their tweets, so it might not let you download everything. But that’s a feature of twitter.

Limit still is 3200 and you get a CSV file.

Answered By: Andrei

You can use twarc to give an example if you want to archive Nassim Nicholas Taleb’s tweets you use.

twarc timeline nntaleb --format csv> taleb.csv 

You can use other formats too: --format {json,csv,csv-excel}

How to configure twarc:
The only way to get the complete tweets is using the APIunfortunately even if the app is transparent you need to have an initial setup and configuration, you also need to apply for the API (

As of July 2018, you must apply for a Twitter developer account and be
approved before you may create new apps.

)

Once you’ve got your application keys you can tell twarc what they are with the configure command.

twarc configure

This will store your credentials in a file called .twarc in your home directory so you don’t have to keep entering them in. If you would rather supply them directly you can set them in the environment (CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET) or using command line options (--consumer_key, --consumer_secret, --access_token, --access_token_secret).

Answered By: Eduard Florinescu
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.