UNPKG

apithreads

Version:

Unofficial, Reverse-Engineered Node.js/TypeScript client for Meta's [Threads](https://threads.net).

156 lines (155 loc) 5.14 kB
import { AxiosRequestConfig } from 'axios'; import { Extensions, Thread, ThreadsUser } from './threads-types'; export type AndroidDevice = { manufacturer: string; model: string; os_version: number; os_release: string; }; export type GetUserProfileResponse = { data: { userData: { user: ThreadsUser; }; }; extensions: Extensions; }; export type GetUserProfileThreadsResponse = { data: { mediaData?: { threads: Thread[]; }; }; extensions: Extensions; }; export type GetUserProfileRepliesResponse = { data: { mediaData?: { threads: Thread[]; }; }; extensions: Extensions; }; export type GetUserProfileThreadResponse = { data: { data: { containing_thread: Thread; reply_threads?: Thread[]; }; }; extensions: Extensions; }; export type GetThreadLikersResponse = { data: { likers: { users: ThreadsUser[]; }; }; extensions: Extensions; }; export type InstagramImageUploadResponse = { upload_id: string; xsharing_nonces: {}; status: 'ok'; }; export type FriendshipStatusResponse = { friendship_status: { following: boolean; followed_by: boolean; blocking: boolean; muting: boolean; is_private: boolean; incoming_request: boolean; outgoing_request: boolean; text_post_app_pre_following: boolean; is_bestie: boolean; is_restricted: boolean; is_feed_favorite: boolean; is_eligible_to_subscribe: boolean; }; status: 'ok'; }; export type ThreadsAPIOptions = { verbose?: boolean; token?: string; fbLSDToken?: string; noUpdateToken?: boolean; noUpdateLSD?: boolean; httpAgent?: AxiosRequestConfig['httpAgent']; httpsAgent?: AxiosRequestConfig['httpsAgent']; username?: string; password?: string; deviceID?: string; device?: AndroidDevice; }; export type ThreadsAPIPublishOptions = { text?: string; parentPostID?: string; } & ({ url?: string; } | { image?: string; }); export declare const DEFAULT_DEVICE: AndroidDevice; export declare class ThreadsAPI { verbose: boolean; token?: string; fbLSDToken: string; noUpdateToken: boolean; noUpdateLSD: boolean; httpAgent?: AxiosRequestConfig['httpAgent']; httpsAgent?: AxiosRequestConfig['httpsAgent']; username?: string; password?: string; deviceID: string; device?: AndroidDevice; userID: string | undefined; constructor(options?: ThreadsAPIOptions); _getAppHeaders: () => { Authorization?: string | undefined; 'User-Agent': string; 'Content-Type': string; }; _getDefaultHeaders: (username?: string) => { referer?: string | undefined; authority: string; accept: string; 'accept-language': string; 'cache-control': string; origin: string; pragma: string; 'Sec-Fetch-Site': string; 'x-asbd-id': string; 'x-fb-lsd': string; 'x-ig-app-id': string; Authorization?: string | undefined; 'User-Agent': string; 'Content-Type': string; }; getUserIDfromUsername: (username: string, options?: AxiosRequestConfig) => Promise<string | undefined>; getCurrentUserID: (options?: AxiosRequestConfig) => Promise<string | undefined>; getUserProfile: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<ThreadsUser>; getUserProfileThreads: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<Thread[]>; getUserProfileReplies: (username: string, userID: string, options?: AxiosRequestConfig) => Promise<Thread[]>; getPostIDfromThreadID: (threadID: string, options?: AxiosRequestConfig) => Promise<string | undefined>; getPostIDfromURL: (postURL: string, options?: AxiosRequestConfig) => Promise<string | undefined>; getThreads: (postID: string, options?: AxiosRequestConfig) => Promise<{ containing_thread: Thread; reply_threads?: Thread[] | undefined; }>; getThreadLikers: (postID: string, options?: AxiosRequestConfig) => Promise<{ users: ThreadsUser[]; }>; _toggleAuthPostRequest: <T extends unknown>(url: string, options?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<T, any>>; like: (postID: string, options?: AxiosRequestConfig) => Promise<boolean>; unlike: (postID: string, options?: AxiosRequestConfig) => Promise<boolean>; follow: (userID: string, options?: AxiosRequestConfig) => Promise<FriendshipStatusResponse>; unfollow: (userID: string, options?: AxiosRequestConfig) => Promise<FriendshipStatusResponse>; getToken: () => Promise<string | undefined>; publish: (rawOptions: ThreadsAPIPublishOptions | string) => Promise<boolean>; /** * @deprecated: use `publish` instead **/ publishWithImage: (caption: string, imagePath: string) => Promise<boolean>; uploadImage: (imagePath: string) => Promise<InstagramImageUploadResponse>; }