1.0.5 • Published 1 year ago

twitster v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Twitster

npm building workflow license alt text

A free and unlimited API for twitter.

Contents

Features

  • explore new tweets
  • search keyword inside tweets
  • search users
  • get and search tweets for single user
  • translate tweets

Installation

npm install twitster

Usage

Get-Tweets

to extract list of tweets:

Parameters

  • keyword - keyword or hashtag for your tweets list
  • options - optional parameters
    • options.nextPageToken - next page token for getting next page
    • options.page - page number for get get specific page
Basic example
var { findTopTweets } = require("twitster");

var listOfTweets = await findTopTweets("bitcoin");

console.log(listOfTweets);
Output
[{
  authorName: 'Airmass',
  authorBlueCheckMark: false,
  retweeted: 'Deniz.Hodl⚡🐂',
  tweetContent: 'All you need to know about investing in #Bitcoin.',
  hashtags: [ '#Bitcoin' ],
  commentCount: '1',
  likeCount: '5',
  retweetCount: '0',
  quoteCount: '0',
  tweetTime: '1m',
  tweetCreatedAt: 'Dec 31, 2022 · 9:43 AM UTC',
  tweetLink: '/IT_AIRmass/status/1609123005396819969#m',
  images: [],
  nextPageToken: 'scroll%3AthGAVUV0VFVBaAgLLF_8vg1CwWhMC8-a7O4NQsEnEVhIZ6FYCJehgEVVNFUjUBFQAVAAA%3D'
},
{
    authorName: 'Math Profesor',
    authorBlueCheckMark: false,
    tweetContent: 'absolut scarcity can only be achieved with #bitcoin',
    hashtags: [ '#bitcoin' ],
    commentCount: '0',
    likeCount: '0',
    retweetCount: '0',
    quoteCount: '0',
    tweetTime: '9s',
    tweetCreatedAt: 'Dec 31, 2022 · 9:44 AM UTC',
    tweetLink: '/MathProfesor/status/1609123389364371456#m',
    images: [
      'https://nitter.tiekoetter.com/pic/media%2FFnUar77WIAAwzdu.jpg%3Fname%3Dsmall%26format%3Dwebp'
    ],
    nextPageToken: 'scroll%3AthGAVUV0VFVBaAgLLF_8vg1CwWhMC8-a7O4NQsEnEVhIZ6FYCJehgEVVNFUjUBFQAVAAA%3D'
}];
Pagination example

if you want to get next page list you can use nextToken in previous request

var { findTopTweets } = require("twitster");

var listOfTweets = await findTopTweets("bitcoin", options = { nextPageToken: 'scroll%3AthGAVUV0VFVBaEgLPxirPi1CwWgICy8fTM4tQsEnEV8PF5FYCJehgEVVNFUjUBFRAVAAA%3D' });

console.log(listOfTweets);

if you want to get list by page number, need to set page in options

var { findTopTweets } = require("twitster");

var listOfTweets = await findTopTweets("bitcoin", options = { page: 2 });

console.log(listOfTweets);

Get-Tweet-Replies

to get replies for a single tweet

Parameters

  • link - tweet link get from Get-Tweets
  • options - optional parameters
    • options.nextPageToken - next page token for getting next page
Basic example
var { getTweetReplies } = require("twitster");

var listOfReplies = await getTweetReplies('IT_AIRmass/status/1609123005396819969#m');

console.log(listOfReplies);
Output
[{
    authorName: 'Islaay',
    authorBlueCheckMark: false,
    replyingTo: 'Replying to @IT_AIRmass',
    tweetContent: 'We have waited a long time for 2023... The implosion of the CT bera hivemind',
    hashtags: null,
    commentCount: '0',
    likeCount: '0',
    retweetCount: '0',
    quoteCount: '0',
    tweetTime: '1h',
    tweetCreatedAt: 'Dec 31, 2022 · 10:30 AM UTC',
    tweetLink: '/JIslaay/status/1609134888728563713#m',
    nextPageToken: 'LBlGgMDU6Z%2FF4NQsgICwlcv74NQsgsDU5fvp5dQsgICzlfaR7tQsJQYRAAA%3D#r'
  },
  {
    authorName: 'direwolf',
    authorBlueCheckMark: false,
    replyingTo: 'Replying to @IT_AIRmass',
    tweetContent: 'Based.',
    hashtags: null,
    commentCount: '0',
    likeCount: '0',
    retweetCount: '0',
    quoteCount: '0',
    tweetTime: '15m',
    tweetCreatedAt: 'Dec 31, 2022 · 11:43 AM UTC',
    tweetLink: '/direwol54352270/status/1609153167354126336#m',
    nextPageToken: 'LBlGgMDU6Z%2FF4NQsgICwlcv74NQsgsDU5fvp5dQsgICzlfaR7tQsJQYRAAA%3D#r'
}];
Pagination example

if you want to get next page list you can use nextToken in previous request

var { getTweetReplies } = require("twitster");

const listOfReplies = await getTweetReplies('direwol54352270/status/1609153167354126336#m',  options = { nextPageToken: 'LBlGgMDU6Z%2FF4NQsgICwlcv74NQsgsDU5fvp5dQsgICzlfaR7tQsJQYRAAA%3D#r' });

console.log(listOfReplies);

Search-Users

to search users and get list of them:

Parameters

  • username - username or full name
  • options - optional parameters
    • options.nextPageToken - next page token for getting next page
Basic example
var { findUsers } = require("twitster");

var listOfUsers = await findUsers("messi");

console.log(listOfUsers);
Output
[{
    fullName: 'Lionel Messi Fan Club',
    username: '@LMessifanclub',
    bioInfo: 'A must follow for a true Messi fan! Watch videos about Leo on our YouTube channel! Be with us, be Messified!',
    link: '/LMessifanclub',
    nextPageToken: 'DAAFCgABFlTaB7l__z8LAAIAAADwRW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFBQUJRUkRUSVZZRmZRQUFBQUFBQVBEODJsQUFBQUFEOFZpYTRBQUFBQVVzRHJ4QUFBQUFBQTl2OU9DeldVenB2WEFBQVRCWDl0QmRXZ0F4R09ac0JWMTlBQkFBQUFBR0Naa2pvVWp1VzZ4eGZBQmdBQUFBQ3Q2anBNQUFBQUFBTUVHeTBBQUFBQXFkNytlQUFBQUFDMnZSUnRBQUFBQUVJZVRlNFAzUHJzTGRSd0FBQUFBQUEyYkY4Y0RrY0ZscFFXd0FBU3NtM1YrVll3QVFBQUFBQmMvbTJXAAA'
  },
  {
    fullName: 'Leo Messi',
    username: '@leomessiprivate',
    bioInfo: 'Jugador del PSG. 🇨🇵',
    link: '/leomessiprivate',
    nextPageToken: 'DAAFCgABFlTaB7l__z8LAAIAAADwRW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFBQUJRUkRUSVZZRmZRQUFBQUFBQVBEODJsQUFBQUFEOFZpYTRBQUFBQVVzRHJ4QUFBQUFBQTl2OU9DeldVenB2WEFBQVRCWDl0QmRXZ0F4R09ac0JWMTlBQkFBQUFBR0Naa2pvVWp1VzZ4eGZBQmdBQUFBQ3Q2anBNQUFBQUFBTUVHeTBBQUFBQXFkNytlQUFBQUFDMnZSUnRBQUFBQUVJZVRlNFAzUHJzTGRSd0FBQUFBQUEyYkY4Y0RrY0ZscFFXd0FBU3NtM1YrVll3QVFBQUFBQmMvbTJXAAA'
}];
Pagination example

if you want to get next page list you can use nextToken in previous request

var { findUsers } = require("twitster");

var listOfUsers = await findUsers("messi", options = { nextPageToken: 'DAAFCgABFlTaB7l__z8LAAIAAADwRW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFBQUJRUkRUSVZZRmZRQUFBQUFBQVBEODJsQUFBQUFEOFZpYTRBQUFBQVVzRHJ4QUFBQUFBQTl2OU9DeldVenB2WEFBQVRCWDl0QmRXZ0F4R09ac0JWMTlBQkFBQUFBR0Naa2pvVWp1VzZ4eGZBQmdBQUFBQ3Q2anBNQUFBQUFBTUVHeTBBQUFBQXFkNytlQUFBQUFDMnZSUnRBQUFBQUVJZVRlNFAzUHJzTGRSd0FBQUFBQUEyYkY4Y0RrY0ZscFFXd0FBU3NtM1YrVll3QVFBQUFBQmMvbTJXAAA' });

console.log(listOfUsers);

Get-User-Detail

to get detail of user

Parameters

  • username - username or full name
  • options - optional parameters
    • options.nextPageToken - next page token for getting next page
    • options.filter - keyword to add filter tweets
Basic example
var { getUserDetail } = require("twitster");

var detailOfUser = await getUserDetail("Bitcoin");

console.log(detailOfUser);
Output
{
  profileInfo: {
    fullName: 'Bitcoin',
    username: '@Bitcoin',
    bio: "Bitcoin is an open source censorship-resistant peer-to-peer immutable network. Trackable digital gold. Don't trust; verify. Not your keys; not your coins.",
    location: 'Worldwide',
    website: 'bitcoin.org/bitcoin.pdf',
    joinDate: ' Joined August 2011',
    tweetCounts: '24,551',
    following: '26',
    follower: '5,685,033',
    likes: '2,928'
  },
  tweets: [
     {
      authorName: 'Bitcoin',
      authorBlueCheckMark: false,
      pinnedTweet: false,
      tweetContent: 'Can they prove that they did not? That is jut their attestation. 😱',
      hashtags: null,
      commentCount: '78',
      likeCount: '230',
      retweetCount: '0',
      quoteCount: '4',
      tweetTime: 'Dec 21',
      tweetCreatedAt: 'Dec 21, 2022 · 5:25 PM UTC',
      tweetLink: '/Bitcoin/status/1605615442134855680#m',
      images: [
      'https://nitter.tiekoetter.com/pic/media%2FFnUar77WIAAwzdu.jpg%3Fname%3Dsmall%26format%3Dwebp'
      ],
      nextPageToken: 'HBaAwK3pqsnovSwAAA%3D%3D'
    },
    {
      authorName: 'Bitcoin',
      authorBlueCheckMark: false,
      pinnedTweet: false,
      tweetContent: '',
      hashtags: null,
      commentCount: '290',
      likeCount: '2,344',
      retweetCount: '0',
      quoteCount: '67',
      videoCount: '176,680',
      tweetTime: 'Dec 19',
      tweetCreatedAt: 'Dec 19, 2022 · 3:29 PM UTC',
      tweetLink: '/Bitcoin/status/1604861594160070656#m',
      images: [],
      nextPageToken: 'HBaAwK3pqsnovSwAAA%3D%3D'
    }
  ]
}
Pagination example

if you want to get next page list you can use nextToken in previous request

var { getUserDetail } = require("twitster");

var detailOfUser = await getUserDetail("Bitcoin", options = { nextPageToken: 'HBaAwK3pqsnovSwAAA%3D%3D' });

console.log(detailOfUser);
Filter example

add filter and limit result of user tweets

var { getUserDetail } = require("twitster");

var detailOfUser = await getUserDetail("Bitcoin", options = { filter: 'doge' });

console.log(detailOfUser);
output
{
  profileInfo: {
    fullName: 'Bitcoin',
    username: '@Bitcoin',
    bio: "Bitcoin is an open source censorship-resistant peer-to-peer immutable network. Trackable digital gold. Don't trust; verify. Not your keys; not your coins.",
    location: 'Worldwide',
    website: 'bitcoin.org/bitcoin.pdf',
    joinDate: ' Joined August 2011',
    tweetCounts: '24,551',
    following: '26',
    follower: '5,685,122',
    likes: '2,928'
  },
  tweets: [
    {
      authorName: 'Bitcoin',
      authorBlueCheckMark: false,
      pinnedTweet: false,
      tweetContent: 'Because DOGE is an altcoin. Bitcoin (BCH) is the oldest and most established cryptocurrency.',
      hashtags: null,
      commentCount: '4',
      likeCount: '6',
      retweetCount: '0',
      quoteCount: '0',
      tweetTime: '4 May 2018',
      tweetCreatedAt: 'May 4, 2018 · 5:24 PM UTC',
      tweetLink: '/Bitcoin/status/992454950524403712#m'
    },
    {
      authorName: 'Bitcoin',
      authorBlueCheckMark: false,
      pinnedTweet: false,
      tweetContent: '"Chap slapped in @Dogecoin crap app flap" - Great headline by @theregister theregister.co.uk/2015/06/29…',
      hashtags: null,
      commentCount: '0',
      likeCount: '2',
      retweetCount: '0',
      quoteCount: '0',
      tweetTime: '4 Jul 2015',
      tweetCreatedAt: 'Jul 4, 2015 · 7:22 PM UTC',
      tweetLink: '/Bitcoin/status/617413100791308289#m'
    }
]}

Translate tweets

for extract translated tweets just add language inside options find your language code from here

const { findTopTweets } = require('twitster');

var translatedTweets = await findTopTweets("bitcoin", options = { language: 'de' });
console.log(translatedTweets);

Output

[
  {
    id: '4937c6d261',
    authorName: 'marvinFrancois',
    authorBlueCheckMark: false,
    tweetContent: '#Bitcoin ist bereit für einen riesigen Bullenlauf.',
    hashtags: [ '#Bitcoin' ],
    commentCount: '0',
    likeCount: '0',
    retweetCount: '0',
    quoteCount: '0',
    tweetTime: '8s',
    tweetCreatedAt: 'Jan 5, 2023 · 8:49 PM UTC',
    tweetLink: '/marviinFrancois/status/1611102551893594115#m',
    nextPageToken: 'scroll%3AthGAVUV0VFVBaWwL6R2s7k2ywWgIDQzbnQ5NssEnEV8IV6FYCJehgEVVNFUjUBFQAVAAA%3D',
    originalTweet: '#Bitcoin    is ready for a huge bull run.'
  },
  {
    id: 'f9d902908f',
    authorName: 'Guy Swann ⚡️',
    authorBlueCheckMark: false,
    retweeted: 'thee junior class prezzy ✨',
    tweetContent: 'Es ist die grundlegende Natur und das Design von #Bitcoin, die den FTX-Betrug unweigerlich zum Scheitern verurteilt und schnell demoliert haben, als es klar wurde.\n' +
      '\n' +
      'Und aus dem gleichen Grund ist #Bitcoin unsere einzige Chance, den globalen Geldbetrug zu korrigieren.',
    hashtags: [ '#Bitcoin', '#Bitcoin' ],
    commentCount: '0',
    likeCount: '38',
    retweetCount: '0',
    quoteCount: '0',
    tweetTime: '14 Dec 2022',
    tweetCreatedAt: 'Dec 14, 2022 · 6:45 PM UTC',
    tweetLink: '/TheGuySwann/status/1603098882627567618#m',
    nextPageToken: 'scroll%3AthGAVUV0VFVBaWwL6R2s7k2ywWgIDQzbnQ5NssEnEV8IV6FYCJehgEVVNFUjUBFQAVAAA%3D',
    originalTweet: 'It is the fundamental nature & design of #Bitcoin that made the FTX fraud inevitably doomed to fail & quickly demolished when it became clear.\n' +
      '\n' +
      'And it’s the same reason why #Bitcoin is our only shot at correcting the global monetary scam.'
  }
]

Support

Contributors

if your pull requests makes documentation changes, please update readme file.

License

This project is licensed under the terms of the MIT license