xdl-node
Version:
A library for retrieving audio streams and other data from X Spaces, built on Node.js and TypeScript.
147 lines (146 loc) • 5.55 kB
TypeScript
import { AxiosResponse } from 'axios';
/**
* Интерфейс для cookies.
* Требуется наличие хотя бы ключа ct0.
*/
export interface ICookies {
ct0: string;
[key: string]: string;
}
/**
* HTTPClient – класс для выполнения GET-запросов с помощью axios с поддержкой retry-логики.
*/
export declare class HTTPClient {
private axiosInstance;
constructor();
/**
* Выполняет HTTP GET-запрос по указанному URL.
* @param url URL запроса.
* @param params Параметры запроса.
* @param headers Заголовки запроса.
* @param cookies Cookies для запроса.
* @returns Промис с AxiosResponse.
*/
get(url: string, params?: Record<string, any>, headers?: Record<string, any>, cookies?: Record<string, any>): Promise<AxiosResponse>;
}
/**
* APIClient – базовый класс для всех API.
*/
export declare class APIClient {
protected client: HTTPClient;
protected baseUrl: string;
protected cookies: ICookies;
protected headers: Record<string, any>;
/**
* @param client Экземпляр HTTPClient.
* @param path Путь, добавляемый к базовому URL.
* @param cookies Cookies для запросов.
*/
constructor(client: HTTPClient, path: string, cookies: ICookies);
/**
* Объединяет несколько частей URL.
* @param paths Части URL.
* @returns Собранный URL.
*/
joinUrl(...paths: string[]): string;
/**
* Выполняет GET-запрос к API по указанному пути.
* @param path Путь запроса.
* @param params Параметры запроса.
* @returns Распарсенный JSON-ответ.
*/
get(path: string, params?: Record<string, any>): Promise<any>;
}
/**
* GraphQLAPI – клиент для Twitter GraphQL API.
*/
export declare class GraphQLAPI extends APIClient {
constructor(client: HTTPClient, path: string, cookies: ICookies);
private _dumpJson;
/**
* Отправляет GraphQL-запрос.
* @param query_id Идентификатор запроса.
* @param operation_name Имя операции.
* @param variables Переменные запроса.
* @param features Дополнительные флаги (опционально).
* @returns Ответ API.
*/
query(query_id: string, operation_name: string, variables: any, features?: any): Promise<any>;
/**
* Запрашивает детали Twitter Space по его ID.
* @param space_id ID Space.
* @returns Ответ API.
*/
audioSpaceById(space_id: string): Promise<any>;
/**
* Запрашивает детали пользователя по его screen name.
* @param screen_name Имя пользователя.
* @returns Ответ API.
*/
userByScreenName(screen_name: string): Promise<any>;
/**
* Backup endpoint для запроса деталей пользователя по screen name.
* @param screen_name Имя пользователя.
* @returns Ответ API.
*/
profileSpotlightsQuery(screen_name: string): Promise<any>;
/**
* Получает numeric user ID (rest_id) по screen name.
* @param screen_name Имя пользователя.
* @returns Numeric user ID.
*/
userId(screen_name: string): Promise<string>;
/**
* Получает numeric user ID из URL профиля Twitter.
* @param user_url URL профиля.
* @returns Numeric user ID.
*/
userIdFromUrl(user_url: string): Promise<string>;
}
/**
* FleetsAPI – клиент для Twitter Fleets API.
*/
export declare class FleetsAPI extends APIClient {
constructor(client: HTTPClient, path: string, cookies: ICookies);
/**
* Выполняет GET-запрос к указанному endpoint Fleets API.
* @param version Версия API.
* @param endpoint Endpoint API.
* @param params Параметры запроса.
* @returns Ответ API.
*/
fetch(version: string, endpoint: string, params: Record<string, any>): Promise<any>;
/**
* Запрашивает информацию о аватаре для указанных user_ids.
* @param user_ids Список user_ids.
* @returns Ответ API.
*/
avatarContent(...user_ids: string[]): Promise<any>;
}
/**
* LiveVideoStreamAPI – клиент для Twitter Live Video Stream API.
*/
export declare class LiveVideoStreamAPI extends APIClient {
constructor(client: HTTPClient, path: string, cookies: ICookies);
/**
* Запрашивает детали плейлиста медиа по media_key.
* @param media_key Ключ медиа.
* @returns Ответ API.
*/
status(media_key: string): Promise<any>;
}
/**
* TwitterAPI – коллекция всех Twitter API.
*/
export declare class TwitterAPI {
client: HTTPClient;
graphql_api: GraphQLAPI | null;
fleets_api: FleetsAPI | null;
live_video_stream_api: LiveVideoStreamAPI | null;
constructor();
/**
* Инициализирует все API с использованием cookies.
* @param cookies Объект cookies.
*/
initApis(cookies: ICookies): void;
}