@tcortega/twitter-scraper
Version:
Twitter Scraper & Media Downloader. Scrape info from any tweet.
40 lines (32 loc) • 1.38 kB
text/typescript
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;
}
}