Created
March 9, 2020 22:58
-
-
Save orafaelfragoso/757a8ba1a9497040a07e2021c8cfd34c to your computer and use it in GitHub Desktop.
Fetch Twitter API Recursively
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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