Skip to content

Instantly share code, notes, and snippets.

@orafaelfragoso
Created March 9, 2020 22:58
Show Gist options
  • Save orafaelfragoso/757a8ba1a9497040a07e2021c8cfd34c to your computer and use it in GitHub Desktop.
Save orafaelfragoso/757a8ba1a9497040a07e2021c8cfd34c to your computer and use it in GitHub Desktop.

Revisions

  1. orafaelfragoso created this gist Mar 9, 2020.
    52 changes: 52 additions & 0 deletions twitter_search.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    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)
    }
    })()