UNPKG

@book000/pixivts

Version:

pixiv Unofficial API Library for TypeScript

268 lines 11.1 kB
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