UNPKG

@tcortega/twitter-scraper

Version:

Twitter Scraper & Media Downloader. Scrape info from any tweet.

40 lines (32 loc) 1.38 kB
import { ITweetData } from '../typings'; import { Mapper } from './Mapper'; import { Request } from './Request'; export class Util { public static isValidTweetUrl(tweetUrl: string): boolean { return /(?:http)?(?:s:\/\/)?(?:www\.)?twitter\.com\/([a-zA-Z0-9_]+)\/status\/[0-9]{19}/.test(tweetUrl); } public static getTweetId(tweetUrl: string): string { return tweetUrl.match(/(?<=status\/\s*)\d+/)![0]; } public static async getRandomGuestID(): Promise<string> { const responseData = await (await Request.post('https://api.twitter.com/1.1/guest/activate.json')).json(); return responseData.guest_token; } public static filterTweetData(tweetData: any): ITweetData { // TO-DO: find a better way to do this. let returnObject: ITweetData = { id: tweetData.id_str, created_at: tweetData.created_at, description: tweetData.text ? tweetData.text : tweetData.full_text, isMedia: tweetData.hasOwnProperty('extended_entities'), favorite_count: tweetData.favorite_count, retweet_count: tweetData.retweet_count, reply_count: tweetData.reply_count, quote_count: tweetData.quote_count, }; if (returnObject.isMedia) { returnObject = { ...returnObject, ...Mapper.mapMediaObject(tweetData.extended_entities.media) }; } return returnObject; } }