@book000/pixivts
Version:
pixiv Unofficial API Library for TypeScript
268 lines • 11 kB
TypeScript
import { AxiosInstance, AxiosResponse } from 'axios';
import { ReadStream } from 'node:fs';
import qs from 'qs';
import { IllustDetailOptions, SearchIllustOptions, RecommendedIllustOptions, IllustBookmarkAddOptions, NovelDetailOptions, SearchNovelOptions, RecommendedNovelOptions, NovelSeriesOptions, UserDetailOptions, IllustSeriesOptions, NovelTextOptions, MangaRecommendedOptions, IllustBookmarkDeleteOptions, NovelBookmarkAddOptions, NovelBookmarkDeleteOptions, UserBookmarksIllustOptions, UserBookmarksNovelOptions, UgoiraDetailOptions, IllustRelatedOptions, NovelRelatedOptions, IllustRankingOptions, NovelRankingOptions } from './options';
import { PixivApiError } from './types/error-response';
import { GetV1IllustDetailResponse } from './types/endpoints/v1/illust/detail';
import { GetV1SearchIllustResponse } from './types/endpoints/v1/search/illust';
import { GetV1IllustRecommendedResponse } from './types/endpoints/v1/illust/recommended';
import { PostV2IllustBookmarkAddResponse } from './types/endpoints/v2/illust/bookmark/add';
import { GetV1IllustSeriesResponse } from './types/endpoints/v1/illust/series';
import { GetV2NovelDetailResponse } from './types/endpoints/v2/novel/detail';
import { GetV1SearchNovelResponse } from './types/endpoints/v1/search/novel';
import { GetV1NovelRecommendedResponse } from './types/endpoints/v1/novel/recommended';
import { GetV2NovelSeriesResponse } from './types/endpoints/v2/novel/series';
import { GetV1UserDetailResponse } from './types/endpoints/v1/user/detail';
import { GetV1MangaRecommendedResponse } from './types/endpoints/v1/manga/recommended';
import { PostV1IllustBookmarkDeleteResponse } from './types/endpoints/v1/illust/bookmark/delete';
import { PostV2NovelBookmarkAddResponse } from './types/endpoints/v2/novel/bookmark/add';
import { PostV1NovelBookmarkDeleteResponse } from './types/endpoints/v1/novel/bookmark/delete';
import { GetV1UserBookmarksNovelResponse } from './types/endpoints/v1/user/bookmarks/novel';
import { GetV1UserBookmarksIllustResponse } from './types/endpoints/v1/user/bookmarks/illust';
import { GetV1IllustUgoiraMetadataResponse } from './types/endpoints/v1/illust/ugoira/metadata';
import { ResponseDatabase, ResponseDatabaseOptions } from './saving-responses';
import { GetV2IllustRelatedResponse } from './types/endpoints/v2/illust/related';
import { GetV1NovelRelatedResponse } from './types/endpoints/v1/novel/related';
import { GetV1IllustRankingResponse } from './types/endpoints/v1/illust/ranking';
import { GetV1NovelRankingResponse } from './types/endpoints/v1/novel/ranking';
export interface PixivDebugOutputResponseOptions {
enable: boolean;
db?: ResponseDatabaseOptions;
}
export interface PixivDebugOptions {
outputResponse?: PixivDebugOutputResponseOptions;
}
export interface PixivTsOptions {
debugOptions?: PixivDebugOptions;
}
/**
* pixiv API
*/
export default class Pixiv {
private static clientId;
private static clientSecret;
private static hashSecret;
private hosts;
readonly userId: string;
readonly accessToken: string;
readonly refreshToken: string;
readonly responseDatabase: ResponseDatabase | null;
readonly axios: AxiosInstance;
/**
* コンストラクタ。外部からインスタンス化できないので、of メソッドを使うこと。
*
* @param userId ユーザー ID
* @param accessToken アクセストークン
* @param refreshToken リフレッシュトークン
* @param pixivTsOptions Pixivts オプション
*/
private constructor();
/**
* リフレッシュトークンからインスタンスを生成する。
*
* @param refreshToken リフレッシュトークン
* @returns Pixiv インスタンス
*/
static of(refreshToken: string, pixivTsOptions?: PixivTsOptions): Promise<Pixiv>;
/**
* 画像のaxiosストリームを取得する。
*/
static getAxiosImageStream(url: string): Promise<AxiosResponse<ReadStream, any>>;
/**
* イラストの詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
illustDetail(options: IllustDetailOptions): Promise<AxiosResponse<GetV1IllustDetailResponse, any>>;
/**
* イラストの関連イラストを取得する。
*
* @param options オプション
* @returns レスポンス
*/
illustRelated(options: IllustRelatedOptions): Promise<AxiosResponse<GetV2IllustRelatedResponse, any>>;
/**
* イラストを検索する。
*
* @param options オプション
* @returns レスポンス
*/
searchIllust(options: SearchIllustOptions): Promise<AxiosResponse<GetV1SearchIllustResponse, any>>;
/**
* イラストランキングを取得する。
*
* @param options オプション
* @returns レスポンス
*/
illustRanking(options?: IllustRankingOptions): Promise<AxiosResponse<GetV1IllustRankingResponse, any>>;
/**
* おすすめイラストを取得する。
*
* @param options オプション
* @returns レスポンス
*/
illustRecommended(options?: RecommendedIllustOptions): Promise<AxiosResponse<GetV1IllustRecommendedResponse, any>>;
/**
* イラストシリーズの詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
illustSeries(options: IllustSeriesOptions): Promise<AxiosResponse<GetV1IllustSeriesResponse, any>>;
/**
* イラストをブックマークする。
*
* @param options オプション
* @returns レスポンス
*/
illustBookmarkAdd(options: IllustBookmarkAddOptions): Promise<AxiosResponse<PostV2IllustBookmarkAddResponse, any>>;
/**
* イラストのブックマークを削除する。
*
* @param options オプション
* @returns レスポンス
*/
illustBookmarkDelete(options: IllustBookmarkDeleteOptions): Promise<AxiosResponse<PostV1IllustBookmarkDeleteResponse, any>>;
mangaRecommended(options?: MangaRecommendedOptions): Promise<AxiosResponse<GetV1MangaRecommendedResponse, any>>;
/**
* うごイラの詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
ugoiraMetadata(options: UgoiraDetailOptions): Promise<AxiosResponse<GetV1IllustUgoiraMetadataResponse, any>>;
/**
* 小説の詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
novelDetail(options: NovelDetailOptions): Promise<AxiosResponse<GetV2NovelDetailResponse, any>>;
/**
* 小説の本文を取得する。
*
* @param options オプション
* @returns レスポンス
*/
novelText(options: NovelTextOptions): Promise<AxiosResponse<string, any>>;
/**
* 小説の関連小説を取得する。
*
* @param options オプション
* @returns レスポンス
*/
novelRelated(options: NovelRelatedOptions): Promise<AxiosResponse<GetV1NovelRelatedResponse, any>>;
/**
* 小説を検索する。
*
* @param options オプション
* @returns レスポンス
*/
searchNovel(options: SearchNovelOptions): Promise<AxiosResponse<GetV1SearchNovelResponse, any>>;
/**
* 小説ランキングを取得する。
*/
novelRanking(options?: NovelRankingOptions): Promise<AxiosResponse<GetV1NovelRankingResponse, any>>;
/**
* おすすめ小説を取得する。
*
* @param options オプション
* @returns レスポンス
*/
novelRecommended(options?: RecommendedNovelOptions): Promise<AxiosResponse<GetV1NovelRecommendedResponse, any>>;
/**
* 小説シリーズの詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
novelSeries(options: NovelSeriesOptions): Promise<AxiosResponse<GetV2NovelSeriesResponse, any>>;
/**
* 小説をブックマークする。
*
* @param options オプション
* @returns レスポンス
*/
novelBookmarkAdd(options: NovelBookmarkAddOptions): Promise<AxiosResponse<PostV2NovelBookmarkAddResponse, any>>;
/**
* 小説のブックマークを削除する。
*
* @param options オプション
* @returns レスポンス
*/
novelBookmarkDelete(options: NovelBookmarkDeleteOptions): Promise<AxiosResponse<PostV1NovelBookmarkDeleteResponse, any>>;
/**
* ユーザの詳細情報を取得する。
*
* @param options オプション
* @returns レスポンス
*/
userDetail(options: UserDetailOptions): Promise<AxiosResponse<GetV1UserDetailResponse, any>>;
/**
* ユーザのイラストブックマークを取得する。
*
* @param options オプション
* @returns レスポンス
*/
userBookmarksIllust(options: UserBookmarksIllustOptions): Promise<AxiosResponse<GetV1UserBookmarksIllustResponse, any>>;
/**
* ユーザの小説ブックマークを取得する。
*
* @param options オプション
* @returns レスポンス
*/
userBookmarksNovel(options: UserBookmarksNovelOptions): Promise<AxiosResponse<GetV1UserBookmarksNovelResponse, any>>;
/**
* 接続を閉じる。
*/
close(): Promise<void>;
/**
* クエリストリングをパースする。
*
* @param url URL
* @returns パースしたクエリストリングオブジェクト
*/
static parseQueryString(url: string): qs.ParsedQs;
/**
* レスポンスがエラーかどうかを判定する。
*
* @param response Axios レスポンス
* @returns エラーかどうか
*/
static isError(response: any): response is PixivApiError;
/**
* MD5ハッシュを生成する。
*
* @param str 文字列
* @returns ハッシュ
*/
private static hash;
/**
* リクエストを送信する。
*
* ジェネリクスの順番は、T: リクエスト、U: レスポンス。
*
* @param options オプション
* @returns レスポンス
*/
private request;
private saveResponse;
private isJSON;
/**
* 必須のオプションが含まれているかどうかをチェックする。
*
* @param options オプション
* @param required 必須のオプションキー
* @throws 必須のオプションが含まれていない場合
*/
private checkRequiredOptions;
/**
* キャメルケースのオブジェクトキーをスネークケースなオブジェクトキーに変換する。
*
* @param object オブジェクト
* @returns 変換後のオブジェクト
*/
private convertCamelToSnake;
}
//# sourceMappingURL=pixiv.d.ts.map