UNPKG

@book000/pixivts

Version:

pixiv Unofficial API Library for TypeScript

292 lines 11.8 kB
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 PixivApiResponse<T> { data: T; status: number; headers: Record<string, string>; requestHeaders: Record<string, string>; requestBody: string | null; responseUrl: string | undefined; } export declare class PixivHttpClient { private readonly baseURL; private readonly defaultHeaders; constructor(baseURL: string, headers: Record<string, string>); get<U>(path: string, options?: { params?: Record<string, any>; }): Promise<PixivApiResponse<U>>; post<U>(path: string, body: string, options?: { headers?: Record<string, string>; }): Promise<PixivApiResponse<U>>; } 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 http: PixivHttpClient; /** * コンストラクタ。外部からインスタンス化できないので、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>; /** * 画像取得用の `Response` を返す。 * * 戻り値はストリームそのものではなく `Response` オブジェクトであり、 * ストリームとして読み取る場合は `response.body` を参照する。 * 必要に応じて `arrayBuffer()` などの `Response` の API も利用できる。 * * @param url 画像 URL * @returns 画像取得結果の `Response` */ static getImageStream(url: string): Promise<Response>; /** * イラストの詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ illustDetail(options: IllustDetailOptions): Promise<PixivApiResponse<GetV1IllustDetailResponse>>; /** * イラストの関連イラストを取得する。 * * @param options オプション * @returns レスポンス */ illustRelated(options: IllustRelatedOptions): Promise<PixivApiResponse<GetV2IllustRelatedResponse>>; /** * イラストを検索する。 * * @param options オプション * @returns レスポンス */ searchIllust(options: SearchIllustOptions): Promise<PixivApiResponse<GetV1SearchIllustResponse>>; /** * イラストランキングを取得する。 * * @param options オプション * @returns レスポンス */ illustRanking(options?: IllustRankingOptions): Promise<PixivApiResponse<GetV1IllustRankingResponse>>; /** * おすすめイラストを取得する。 * * @param options オプション * @returns レスポンス */ illustRecommended(options?: RecommendedIllustOptions): Promise<PixivApiResponse<GetV1IllustRecommendedResponse>>; /** * イラストシリーズの詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ illustSeries(options: IllustSeriesOptions): Promise<PixivApiResponse<GetV1IllustSeriesResponse>>; /** * イラストをブックマークする。 * * @param options オプション * @returns レスポンス */ illustBookmarkAdd(options: IllustBookmarkAddOptions): Promise<PixivApiResponse<PostV2IllustBookmarkAddResponse>>; /** * イラストのブックマークを削除する。 * * @param options オプション * @returns レスポンス */ illustBookmarkDelete(options: IllustBookmarkDeleteOptions): Promise<PixivApiResponse<PostV1IllustBookmarkDeleteResponse>>; mangaRecommended(options?: MangaRecommendedOptions): Promise<PixivApiResponse<GetV1MangaRecommendedResponse>>; /** * うごイラの詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ ugoiraMetadata(options: UgoiraDetailOptions): Promise<PixivApiResponse<GetV1IllustUgoiraMetadataResponse>>; /** * 小説の詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ novelDetail(options: NovelDetailOptions): Promise<PixivApiResponse<GetV2NovelDetailResponse>>; /** * 小説の本文を取得する。 * * @param options オプション * @returns レスポンス */ novelText(options: NovelTextOptions): Promise<PixivApiResponse<string>>; /** * 小説の関連小説を取得する。 * * @param options オプション * @returns レスポンス */ novelRelated(options: NovelRelatedOptions): Promise<PixivApiResponse<GetV1NovelRelatedResponse>>; /** * 小説を検索する。 * * @param options オプション * @returns レスポンス */ searchNovel(options: SearchNovelOptions): Promise<PixivApiResponse<GetV1SearchNovelResponse>>; /** * 小説ランキングを取得する。 */ novelRanking(options?: NovelRankingOptions): Promise<PixivApiResponse<GetV1NovelRankingResponse>>; /** * おすすめ小説を取得する。 * * @param options オプション * @returns レスポンス */ novelRecommended(options?: RecommendedNovelOptions): Promise<PixivApiResponse<GetV1NovelRecommendedResponse>>; /** * 小説シリーズの詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ novelSeries(options: NovelSeriesOptions): Promise<PixivApiResponse<GetV2NovelSeriesResponse>>; /** * 小説をブックマークする。 * * @param options オプション * @returns レスポンス */ novelBookmarkAdd(options: NovelBookmarkAddOptions): Promise<PixivApiResponse<PostV2NovelBookmarkAddResponse>>; /** * 小説のブックマークを削除する。 * * @param options オプション * @returns レスポンス */ novelBookmarkDelete(options: NovelBookmarkDeleteOptions): Promise<PixivApiResponse<PostV1NovelBookmarkDeleteResponse>>; /** * ユーザの詳細情報を取得する。 * * @param options オプション * @returns レスポンス */ userDetail(options: UserDetailOptions): Promise<PixivApiResponse<GetV1UserDetailResponse>>; /** * ユーザのイラストブックマークを取得する。 * * @param options オプション * @returns レスポンス */ userBookmarksIllust(options: UserBookmarksIllustOptions): Promise<PixivApiResponse<GetV1UserBookmarksIllustResponse>>; /** * ユーザの小説ブックマークを取得する。 * * @param options オプション * @returns レスポンス */ userBookmarksNovel(options: UserBookmarksNovelOptions): Promise<PixivApiResponse<GetV1UserBookmarksNovelResponse>>; /** * 接続を閉じる。 */ 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