Skip to content

Instantly share code, notes, and snippets.

@orafaelfragoso
Created March 9, 2020 22:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orafaelfragoso/757a8ba1a9497040a07e2021c8cfd34c to your computer and use it in GitHub Desktop.
Save orafaelfragoso/757a8ba1a9497040a07e2021c8cfd34c to your computer and use it in GitHub Desktop.
Fetch Twitter API Recursively
const Twitter = require('twitter')
const fs = require('fs')
const client = new Twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: '',
})
const wait = ms => new Promise((resolve) => setTimeout(resolve, ms))
const recursivelyFetchRetweets = async (query, nextPage = null) => {
try {
const params = {
query,
}
if (nextPage) {
params.next = nextPage
}
console.log(params)
const response = await client.get('tweets/search/30day/development', params)
await wait(250) // make sure we stay inside the API's limits (10/second)
if (response.next) {
console.log('Fetching next page: ', response.next)
return response.results.concat(await recursivelyFetchRetweets(params.query, response.next))
} else {
return response.results
}
} catch (err) {
console.log(err)
}
}
(async () => {
try {
const results = await recursivelyFetchRetweets('"Estou sorteando esse livro que já me ajudou bastante, e agora poderá ajudar quem está precisando."')
console.log('Number os results: ', results.length)
fs.writeFile('data.txt', JSON.stringify(results), (err) => {
if (err) throw err;
console.log('File saved.')
})
} catch (err) {
console.log(err)
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment