{"id":21013318,"url":"https://github.com/akameco/pixiv-app-api","last_synced_at":"2025-04-05T20:06:15.864Z","repository":{"id":10436705,"uuid":"65738561","full_name":"akameco/pixiv-app-api","owner":"akameco","description":"Promise base pixiv API client","archived":false,"fork":false,"pushed_at":"2023-01-05T16:15:48.000Z","size":2012,"stargazers_count":217,"open_issues_count":22,"forks_count":29,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-04-14T05:29:44.308Z","etag":null,"topics":["pixiv","pixiv-api","pixiv-client"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/pixiv-app-api","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akameco.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-15T14:29:48.000Z","updated_at":"2024-02-19T06:41:26.000Z","dependencies_parsed_at":"2023-01-13T15:56:40.365Z","dependency_job_id":null,"html_url":"https://github.com/akameco/pixiv-app-api","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akameco%2Fpixiv-app-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akameco%2Fpixiv-app-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akameco%2Fpixiv-app-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akameco%2Fpixiv-app-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akameco","download_url":"https://codeload.github.com/akameco/pixiv-app-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393569,"owners_count":20931812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pixiv","pixiv-api","pixiv-client"],"created_at":"2024-11-19T09:41:39.786Z","updated_at":"2025-04-05T20:06:15.843Z","avatar_url":"https://github.com/akameco.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pixiv-app-api\n\n[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n[![All Contributors](https://img.shields.io/badge/all_contributors-11-orange.svg?style=flat-square)](#contributors-)\n\n\u003e Promise based pixiv API client\n\n\u003cimg src=\"media/image.jpg\" width=200\u003e\n\nInspired by [upbit/pixivpy: Pixiv API for Python](https://github.com/upbit/pixivpy).\n\n## Features\n\n- Promise based\n- Converts the output json keys to camelCase\n- Converts the parameters to snakeCase\n- Supports API without login\n\n## Install\n\n```\n$ npm install --save pixiv-app-api\n```\n\n## Usage\n\n```js\nimport PixivAppApi from 'pixiv-app-api' //const PixivAppApi = require(\"pixiv-app-api\")\nimport pixivImg from 'pixiv-img' //const pixivImg = require(\"pixiv-img\")\nconst pixiv = new PixivAppApi(process.env.NAME, process.env.PASSWORD, {\n  camelcaseKeys: true,\n})\n\n;(async () =\u003e {\n  await pixiv.login()\n  const json = await pixiv.searchIllust('艦これ10000users入り')\n  await pixivImg(json.illusts[0].imageUrls.large)\n  console.log('finish')\n})()\n```\n\n## Typescript\n\nAll functions will return either a camelCaseType or a snake_case_type depending on the value of `camelcaseKeys`.\nFor example:\n\n```ts\n//const pixiv = new PixivAppApi(process.env.NAME, process.env.PASSWORD, {camelcaseKeys: true})\ninterface PixivClient = {\n  accessToken: string\n  expiresIn: number\n  tokenType: string\n  scope: string\n  refreshToken: string\n  user: PixivClientUser\n  deviceToken: string\n}\n\n//const pixiv = new PixivAppApi(process.env.NAME, process.env.PASSWORD, {camelcaseKeys: false})\ninterface Pixiv_Client = {\n  access_token: string\n  expires_in: number\n  token_type: string\n  scope: string\n  refresh_token: string\n  user: Pixiv_Client_User\n  device_token: string\n}\n```\n\n## API\n\n#### `constructor(username?: string, password?: string, options? {camelcaseKeys?: boolean})`\n\nCreates a new PixivAppApi object. `camelcaseKeys` defaults to `true` if it is omitted.\n\n#### `login(username?: string, password?: string): Promise\u003cPixivClient\u003e`\n\nLogs into the API.\n\n\u003cdetails\u003e\n\n```json\n{\n  \"accessToken\": \"abcdefgabcdefgabcdefgabcdefg\",\n  \"expiresIn\": 3600,\n  \"tokenType\": \"bearer\",\n  \"scope\": \"unlimited\",\n  \"refreshToken\": \"abcdefgabcdefgabcdefgabcdefg\",\n  \"user\": {\n    \"profileImageUrls\": {\n      \"px16x16\": \"https://i.pximg.net/user-profile/img/2016/12/07/18/45/34/11842543_d51209fed2b2566336b1296e07f49b81_16.png\",\n      \"px50x50\": \"https://i.pximg.net/user-profile/img/2016/12/07/18/45/34/11842543_d51209fed2b2566336b1296e07f49b81_50.png\",\n      \"px170x170\": \"https://i.pximg.net/user-profile/img/2016/12/07/18/45/34/11842543_d51209fed2b2566336b1296e07f49b81_170.png\"\n    },\n    \"id\": \"19785907\",\n    \"name\": \"akameco\",\n    \"account\": \"akameco\",\n    \"mailAddress\": \"abcdefgabcdefgabcdefgabcdefg\",\n    \"isPremium\": true,\n    \"xRestrict\": 2,\n    \"isMailAuthorized\": true\n  }\n}\n```\n\n\u003c/details\u003e\n\n#### `authInfo(): PixivClient`\n\nGets your authInfo.\n\n```ts\ninterface PixivClient {\n  accessToken: string\n  expiresIn: number\n  tokenType: string\n  scope: string\n  refreshToken: string\n  user: PixivClientUser\n  deviceToken: string\n}\n```\n\n#### `makeIterable(resp: Object): AsyncIterable\u003cObject\u003e`\n\n\u003cdetails\u003e\n\n```js\nconst json = await pixiv.searchIllust('艦これ10000users入り')\nlet ar = []\nfor await (const r of pixiv.makeIterable(json)) {\n  ar = ar.concat(r.illusts)\n  await sleep(1000) // if the request rate is too high, pixiv might ban you\n}\nconsole.log(ar.length)\n```\n\n\u003c/details\u003e\n\n#### `userDetail(id: ID, params?: PixivParams): Promise\u003cPixivUserDetail\u003e.`\n\nGet a user's profile.\n\n\u003cdetails\u003e\n\n```ts\nexport interface PixivUserDetail {\n  user: PixivUser\n  profile: {\n    webpage: string\n    gender: string\n    birth: string\n    birthDay: string\n    birthYear: number\n    region: string\n    addressId: number\n    countryCode: string\n    job: string\n    jobId: number\n    totalFollowUsers: number\n    totalMypixivUsers: number\n    totalIllusts: number\n    totalManga: number\n    totalNovels: number\n    totalIllustBookmarksPublic: number\n    totalIllustSeries: number\n    backgroundImageUrl: string\n    twitterAccount: string\n    twitterUrl: string\n    pawooUrl: string\n    isPremium: boolean\n    isUsingCustomProfileImage: boolean\n  }\n  profilePublicity: {\n    gender: string\n    region: string\n    birthDay: string\n    birthYear: string\n    job: string\n    pawoo: boolean\n  }\n  workspace: {\n    pc: string\n    monitor: string\n    tool: string\n    scanner: string\n    tablet: string\n    mouse: string\n    printer: string\n    desktop: string\n    music: string\n    desk: string\n    chair: string\n    comment: string\n    workspaceImageUrl: string | null\n  }\n}\n```\n\n\u003c/details\u003e\n\nThe type PixivParams is defined as follows:\n\n```ts\nexport interface PixivParams {\n  userId?: number\n  type?: string\n  filter?: string\n  restrict?: 'public' | 'private'\n  illustId?: number\n  contentType?: string\n  includeTotalComments?: boolean\n  includeRankingLabel?: boolean\n  includeRankingIllusts?: boolean\n  includeRankingNovels?: boolean\n  mode?:\n    | 'day'\n    | 'week'\n    | 'month'\n    | 'day_male'\n    | 'day_female'\n    | 'week_original'\n    | 'week_rookie'\n    | 'day_r18'\n    | 'day_male_r18'\n    | 'day_female_r18'\n    | 'week_r18'\n    | 'week_r18g'\n    | 'day_manga'\n    | 'week_manga'\n    | 'month_manga'\n    | 'week_rookie_manga'\n    | 'day_r18_manga'\n    | 'week_r18_manga'\n    | 'week_r18g_manga'\n  word?: string\n  searchTarget?:\n    | 'partial_match_for_tags'\n    | 'exact_match_for_tags'\n    | 'title_and_caption'\n  sort?: 'date_desc' | 'date_asc' | 'popular_desc'\n  startDate?: string\n  endDate?: string\n  offset?: number\n}\n```\n\n#### `userIllusts(id: ID, params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nRetrieves all of a users illusts.\n\n```ts\nexport interface PixivIllustSearch {\n  illusts: PixivIllust[]\n  nextUrl: string | null\n  searchSpanLimit?: number\n}\n```\n\n\u003cdetails\u003e\n\n```json\n{\n  \"illusts\": [\n    {\n      \"id\": 64124918,\n      \"title\": \"Noise Pollution Vol.3\",\n      \"type\": \"illust\",\n      \"imageUrls\": {\n        \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p0_square1200.jpg\",\n        \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p0_master1200.jpg\",\n        \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p0_master1200.jpg\"\n      },\n      \"caption\": \"夏コミ新刊の②\u003cbr /\u003e\u003cbr /\u003e東レ54b-CREAYUS\u003cbr /\u003eNoise Pollution Vol.3には会場限定A5サイズのクリアファイルがつきます。１冊につき１枚（先着）、なくなり次第終了です。\u003cbr /\u003e\u003cbr /\u003eとらのあな予約(フルカラー全年齢)\u003cbr /\u003e\u003ca href=\\\"http://www.toranoana.jp/mailorder/article/04/0030/54/88/040030548805.html?rec=circle\\\" target=\\\"_blank\\\"\u003ehttp://www.toranoana.jp/mailorder/article/04/0030/54/88/040030548805.html?rec=circle\u003c/a\u003e\",\n      \"restrict\": 0,\n      \"user\": {\n        \"id\": 471355,\n        \"name\": \"嵐月\",\n        \"account\": \"creayus\",\n        \"profileImageUrls\": {\n          \"medium\": \"https://i3.pixiv.net/user-profile/img/2014/02/02/00/05/39/7393018_f1ce44676a8c0d902cc49aad2828e510_170.jpg\"\n        },\n        \"isFollowed\": true\n      },\n      \"tags\": [\n        {\n          \"name\": \"C.C.\"\n        },\n        {\n          \"name\": \"ルルーシュ\"\n        },\n        {\n          \"name\": \"ルルC\"\n        },\n        {\n          \"name\": \"コードギアス\"\n        },\n        {\n          \"name\": \"コードギアス1000users入り\"\n        },\n        {\n          \"name\": \"ルルーシュ・ランペルージ\"\n        }\n      ],\n      \"tools\": [\"Photoshop\", \"SAI\"],\n      \"createDate\": \"2017-07-30T12:20:55+09:00\",\n      \"pageCount\": 5,\n      \"width\": 900,\n      \"height\": 633,\n      \"sanityLevel\": 4,\n      \"metaSinglePage\": {},\n      \"metaPages\": [\n        {\n          \"imageUrls\": {\n            \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p0_square1200.jpg\",\n            \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p0_master1200.jpg\",\n            \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p0_master1200.jpg\",\n            \"original\": \"https://i.pximg.net/img-original/img/2017/07/30/12/20/55/64124918_p0.png\"\n          }\n        },\n        {\n          \"imageUrls\": {\n            \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p1_square1200.jpg\",\n            \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p1_master1200.jpg\",\n            \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p1_master1200.jpg\",\n            \"original\": \"https://i.pximg.net/img-original/img/2017/07/30/12/20/55/64124918_p1.png\"\n          }\n        },\n        {\n          \"imageUrls\": {\n            \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p2_square1200.jpg\",\n            \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p2_master1200.jpg\",\n            \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p2_master1200.jpg\",\n            \"original\": \"https://i.pximg.net/img-original/img/2017/07/30/12/20/55/64124918_p2.png\"\n          }\n        },\n        {\n          \"imageUrls\": {\n            \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p3_square1200.jpg\",\n            \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p3_master1200.jpg\",\n            \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p3_master1200.jpg\",\n            \"original\": \"https://i.pximg.net/img-original/img/2017/07/30/12/20/55/64124918_p3.png\"\n          }\n        },\n        {\n          \"imageUrls\": {\n            \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/07/30/12/20/55/64124918_p4_square1200.jpg\",\n            \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/07/30/12/20/55/64124918_p4_master1200.jpg\",\n            \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/07/30/12/20/55/64124918_p4_master1200.jpg\",\n            \"original\": \"https://i.pximg.net/img-original/img/2017/07/30/12/20/55/64124918_p4.png\"\n          }\n        }\n      ],\n      \"totalView\": 45180,\n      \"totalBookmarks\": 2358,\n      \"isBookmarked\": false,\n      \"visible\": true,\n      \"isMuted\": false,\n      \"totalComments\": 33\n    }\n  ],\n  \"nextUrl\": \"https://app-api.pixiv.net/v1/user/illusts?user_id=471355\u0026type=illust\u0026filter=for_ios\u0026offset=40\"\n}\n```\n\n\u003c/details\u003e\n\n#### `userFollowAdd(id: ID, data?: Object): Promise\u003cunknown\u003e`\n\nFollows a user.\n\n#### `userFollowDelete(id: ID, data?: Object): Promise\u003cunknown\u003e`\n\nUnfollows a user.\n\n#### `userBookmarksIllust(id: ID, params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nGets a user's bookmarked illusts.\n\n#### `userFollowing(id: ID, params?: PixivParams): Promise\u003cPixivUserSearch\u003e`\n\nGets the users that a user is following.\n\n```ts\nexport interface PixivUserSearch {\n  userPreviews: {\n    user: PixivUser\n    illusts: PixivIllust[]\n    novels: PixivNovel[]\n    isMuted: boolean\n  }[]\n  nextUrl: string | null\n}\n```\n\n#### `userFollower(id: ID, params?: PixivParams): Promise\u003cPixivUserSearch\u003e`\n\nGets the users who follow a user.\n\n#### `userMypixiv(id: ID, params?: PixivParams): Promise\u003cPixivUserSearch\u003e`\n\nGets your friends on Mypixiv.\n\n#### `userList(id: ID, params?: PixivParams): Promise\u003cunknown\u003e`\n\nGets a user list.\n\n#### `illustDetail(id: ID, params?: PixivParams): Promise\u003cPixivIllustDetail\u003e`\n\nReturns detailed info for a pixiv illust.\n\n```ts\nexport interface PixivIllustDetail {\n  illust: PixivIllust\n}\n\nexport interface PixivIllust {\n  id: number\n  title: string\n  interface: string\n  imageUrls: {\n    squareMedium: string\n    medium: string\n    large?: string\n  }\n  caption: string\n  restrict: number\n  user: PixivUser\n  tags: PixivTag[]\n  tools: string[]\n  createDate: string\n  pageCount: number\n  width: number\n  height: number\n  sanityLevel: number\n  metaSinglePage: {\n    originalImageUrl?: string\n  }\n  metaPages: PixivMetaPage[]\n  totalView: number\n  totalBookmarks: number\n  isBookmarked: boolean\n  visible: boolean\n  isMuted: boolean\n  totalComments: number\n}\n```\n\n\u003cdetails\u003e\n\n```json\n{\n  \"illust\": {\n    \"id\": 57907953,\n    \"title\": \"ロングヘアレムりん\",\n    \"type\": \"illust\",\n    \"imageUrls\": {\n      \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2016/07/15/00/08/24/57907953_p0_square1200.jpg\",\n      \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2016/07/15/00/08/24/57907953_p0_master1200.jpg\",\n      \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2016/07/15/00/08/24/57907953_p0_master1200.jpg\"\n    },\n    \"caption\": \"デイリー32→5 ありがとうございます！\",\n    \"restrict\": 0,\n    \"user\": {\n      \"id\": 3424578,\n      \"name\": \"こーやふ@三日目東に26b\",\n      \"account\": \"burittohiroba\",\n      \"profileImageUrls\": {\n        \"medium\": \"https://i2.pixiv.net/user-profile/img/2017/02/07/16/03/00/12115481_03cc0ec0f2580ac4a12a3682929b485a_170.jpg\"\n      },\n      \"isFollowed\": false\n    },\n    \"tags\": [\n      {\n        \"name\": \"Re:ゼロから始める異世界生活\"\n      },\n      {\n        \"name\": \"レム\"\n      },\n      {\n        \"name\": \"リゼロ\"\n      },\n      {\n        \"name\": \"レム(リゼロ)\"\n      },\n      {\n        \"name\": \"ナツキ・レム\"\n      },\n      {\n        \"name\": \"リゼロ10000users入り\"\n      },\n      {\n        \"name\": \"スバレム\"\n      },\n      {\n        \"name\": \"メイド\"\n      },\n      {\n        \"name\": \"ロング化\"\n      }\n    ],\n    \"tools\": [],\n    \"createDate\": \"2016-07-15T00:08:24+09:00\",\n    \"pageCount\": 1,\n    \"width\": 1000,\n    \"height\": 1412,\n    \"sanityLevel\": 2,\n    \"metaSinglePage\": {\n      \"originalImageUrl\": \"https://i.pximg.net/img-original/img/2016/07/15/00/08/24/57907953_p0.jpg\"\n    },\n    \"metaPages\": [],\n    \"totalView\": 191059,\n    \"totalBookmarks\": 28918,\n    \"isBookmarked\": false,\n    \"visible\": true,\n    \"isMuted\": false,\n    \"totalComments\": 181\n  }\n}\n```\n\n\u003c/details\u003e\n\n#### `illustNew(params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nSearches new illusts.\n\n#### `illustFollow(params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nSearches new illusts from users you follow.\n\n\u003cdetails\u003e\n\n```json\n{\n  \"illusts\": [\n    {\n      \"id\": 64419500,\n      \"title\": \"【PFRD】Chapter.6\",\n      \"type\": \"illust\",\n      \"imageUrls\": {\n        \"squareMedium\": \"https://i.pximg.net/c/360x360_70/img-master/img/2017/08/15/00/16/32/64419500_p0_square1200.jpg\",\n        \"medium\": \"https://i.pximg.net/c/540x540_70/img-master/img/2017/08/15/00/16/32/64419500_p0_master1200.jpg\",\n        \"large\": \"https://i.pximg.net/c/600x1200_90/img-master/img/2017/08/15/00/16/32/64419500_p0_master1200.jpg\"\n      },\n      \"caption\": \"法尔卡岛.缇拉密林带 \u003cbr /\u003e挡在阿尔卡娜面前的数个复活者每个个体都带着伤，从摆起的架势来看也似乎毫无章法，但天生的直觉依然如同警铃般急促的敲打着阿尔卡娜的心。\u003cbr /\u003e“我这是在...害怕么？“感受到握剑的右手微微颤抖，阿尔卡娜自嘲的轻笑”呵..我还以为我已经忘了害怕是什么了呢”。\u003cbr /\u003e\u003cbr /\u003e来吧，不管【你们】是什么，堂堂正正的一决胜负吧！\",\n      \"restrict\": 0,\n      \"user\": {\n        \"id\": 22124330,\n        \"name\": \"超凶の狄璐卡\",\n        \"account\": \"swd3e22\",\n        \"profileImageUrls\": {\n          \"medium\": \"https://i4.pixiv.net/user-profile/img/2017/01/10/13/28/42/11988991_bae951a38d31d217fa1eceedc0aafdbe_170.jpg\"\n        },\n        \"isFollowed\": true\n      },\n      \"tags\": [\n        {\n          \"name\": \"女の子\"\n        },\n        {\n          \"name\": \"落書\"\n        },\n        {\n          \"name\": \"オリジナル\"\n        },\n        {\n          \"name\": \"グランメイル\"\n        },\n        {\n          \"name\": \"pixivファンタジアRD\"\n        },\n        {\n          \"name\": \"不敗王の復活\"\n        },\n        {\n          \"name\": \"復活者討伐戦【青】\"\n        }\n      ],\n      \"tools\": [],\n      \"createDate\": \"2017-08-15T00:16:32+09:00\",\n      \"pageCount\": 1,\n      \"width\": 2126,\n      \"height\": 1150,\n      \"sanityLevel\": 4,\n      \"metaSinglePage\": {\n        \"originalImageUrl\": \"https://i.pximg.net/img-original/img/2017/08/15/00/16/32/64419500_p0.jpg\"\n      },\n      \"metaPages\": [],\n      \"totalView\": 228,\n      \"totalBookmarks\": 63,\n      \"isBookmarked\": false,\n      \"visible\": true,\n      \"isMuted\": false\n    }\n  ],\n  \"nextUrl\": \"https://app-api.pixiv.net/v2/illust/follow?restrict=public\u0026offset=30\"\n}\n```\n\n\u003c/details\u003e\n\n#### `illustComments(id: ID, params?: PixivParams): Promise\u003cPixivCommentSearch\u003e`\n\nReturns the comments on an illust.\n\n```ts\nexport interface PixivCommentSearch {\n  totalComments: number\n  comments: PixivComment[]\n  nextUrl: string | null\n}\n```\n\n#### `illustRelated(id: ID, params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nSearches for illusts related to the one provided.\n\n#### `illustRecommended(params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nReturns recommended illusts.\n\n#### `illustRecommendedNologin(params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nReturns recommended illusts (logged out).\n\n#### `illustRanking(params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nReturns top daily illusts by default.\n\n#### `trendingTagsIllust(params?: PixivParams): Promise\u003cPixivTrendTags\u003e`\n\nReturns an array of trending tags.\n\n```ts\nexport interface PixivTrendTags {\n  trend_tags: PixivTag[]\n}\n```\n\n#### `searchIllust(word: Word, params?: PixivParams): Promise\u003cPixivIllustSearch\u003e`\n\nSearches for illusts with the provided query.\n\n#### `searchNovel(word: Word, params?: PixivParams): Promise\u003cPixivNovelSearch\u003e`\n\nSearches for novels with the provided query.\n\n```ts\nexport interface PixivNovelSearch {\n  novels: PixivNovel[]\n  nextUrl: string | null\n  privacyPolicy?: {}\n  searchSpanLimit?: number\n}\n```\n\n#### `searchUser(word: Word, params?: PixivParams): Promise\u003cPixivUserSearch\u003e`\n\nSearches for users with the provided query.\n\n#### `searchAutoComplete(word: Word): Promise\u003cPixivAutoComplete\u003e`\n\nReturns an array of auto-completed words from the input.\n\n```ts\nexport interface PixivAutoComplete {\n  searchAutoCompleteKeywords: string[]\n}\n```\n\n#### `illustBookmarkDetail(id: ID, params?: PixivParams): Promise\u003cPixivBookmarkDetail\u003e`\n\nReturns detailed info on a bookmark.\n\n```ts\nexport interface PixivBookmarkDetail {\n  isBookmarked: boolean\n  tags: PixivTag[]\n  restrict: string\n}\n```\n\n\u003cdetails\u003e\n\n```json\n{\n  \"bookmarkDetail\": {\n    \"isBookmarked\": false,\n    \"tags\": [\n      {\n        \"name\": \"Re:ゼロから始める異世界生活\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"レム\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"リゼロ\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"レム(リゼロ)\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"ナツキ・レム\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"リゼロ10000users入り\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"スバレム\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"メイド\",\n        \"isRegistered\": false\n      },\n      {\n        \"name\": \"ロング化\",\n        \"isRegistered\": false\n      }\n    ],\n    \"restrict\": \"public\"\n  }\n}\n```\n\n\u003c/details\u003e\n\n#### `illustBookmarkAdd(id: ID, data?: Object): Promise\u003cunknown\u003e`\n\nAdds a new bookmark.\n\n#### `illustBookmarkDelete(id: ID, data?: Object): Promise\u003cunknown\u003e`\n\nDeletes a bookmark.\n\n#### `userBookmarkTagsIllust(params?: PixivParams): Promise\u003cPixivBookmarkSearch\u003e`\n\nSearches your bookmark tags.\n\n```ts\nexport interface PixivBookmarkSearch {\n  bookmarkTags: PixivTag[]\n  nextUrl: string | null\n}\n```\n\n\u003cdetails\u003e\n\n```json\n{\n  \"bookmarkTags\": [],\n  \"nextUrl\": null\n}\n```\n\n\u003c/details\u003e\n\n#### `novelRecommended(params?: PixivParams): Promise\u003cPixivNovelSearch\u003e`\n\nSearches recommended novels.\n\n#### `mangaNew(params?: PixivParams): Promise\u003cunknown\u003e`\n\nSearches new manga.\n\n#### `mangaRecommended(params?: PixivParams): Promise\u003cPixivMangaSearch\u003e`\n\nSearches recommended manga.\n\n```ts\nexport interface PixivMangaSearch {\n  illusts: PixivManga[]\n  rankingIllusts: PixivManga[] | []\n  privacyPolicy: {}\n  nextUrl: string | null\n}\n```\n\n#### `novelRecommendedNologin(params?: PixivParams): Promise\u003cPixivNovelSearch\u003e`\n\nSearches recommended novels (logged out).\n\n#### `novelNew(params?: PixivParams): Promise\u003cPixivNovelSearch\u003e`\n\nSearches new novels.\n\n#### `ugoiraMetaData(id: number, params?: PixivParams): Promise\u003cUgoiraMetaData\u003e`\n\nRetrieves the zip url and frames for a Pixiv Ugoira.\n\n```ts\nexport interface UgoiraMetaData {\n  ugoiraMetadata: {\n    zipUrls: {\n      medium: string\n    }\n    frames: {\n      file: string\n      delay: number\n    }[]\n  }\n}\n```\n\n#### `fetch(target: string, opts?: PixivFetchOptions): Promise\u003cany\u003e`\n\nFetches a route in the Pixiv API and returns the result.\n\nSee [Sniffer for iOS 6.x Common API · upbit/pixivpy Wiki](https://github.com/upbit/pixivpy/wiki/Sniffer-for-iOS-6.x---Common-API)\n\n#### `pixiv.next(): Promise\u003cany\u003e`\n\nReturn next request result.\n\n##### usage\n\n```js\npixiv\n  .searchIllust(word)\n  .then(() =\u003e pixiv.next())\n  .then(() =\u003e pixiv.next())\n  .then((json) =\u003e {\n    console.log(json)\n  })\n```\n\n#### `pixiv.hasNext(): boolean`\n\nReturn `true` if `pixiv.next()` is able to run.\n\n##### usage\n\n```js\nif (pixiv.hasNext()) {\n  pixiv.next().then()\n}\n```\n\n#### `pixiv.nextQuery(): Promise\u003cstring | undefined\u003e`\n\nReturn next params parameter.\n\n## Tests\n\nExport your pixiv username and password before running Tests.\n\n```\n$ export USERNAME=your pixiv username...\n$ export PASSWORD=your pixiv password...\n```\n\n```\n$ npm test\n```\n\n## Related\n\n- [PixivDeck](https://github.com/akameco/PixivDeck) - pixiv client for Desktop like TweetDeck\n- [pixiv-img](https://github.com/akameco/pixiv-img) - save the image of pixiv\n- [pixiv-dl](https://github.com/akameco/pixiv-dl) - pixiv image downloader\n- [pixiv-dl-preview](https://github.com/akameco/pixiv-dl-preview) - electron pixiv downloader\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://akameco.github.io\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/4002137?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eakameco\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=akameco\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=akameco\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=akameco\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#infra-akameco\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://austinhuang.me\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/16656689?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAustin Huang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=austinhuang0131\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=austinhuang0131\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/najimi\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2237174?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCake\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=najimi\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=najimi\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/adefirmanf/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/23324722?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAde Firman Fauzi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=adefirmanf\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/jiefenghe/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/4796423?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyeti2018\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=yeti2018\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://blog.maple3142.net/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/9370547?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emaple\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=maple3142\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.youtube.com/tenpi\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/37512637?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTenpi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=Tenpi\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=Tenpi\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://yanagiragi.wordpress.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/7404517?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyanagiragi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=yanagiragi\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/NigridsVa\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/4570860?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNigridsVa\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=NigridsVa\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Antosik\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/4852791?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAnton Grigoryev\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=Antosik\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://kokororin.github.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/10093992?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eそら\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/akameco/pixiv-app-api/commits?author=kokororin\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!\n\n## License\n\nMIT © [akameco](http://akameco.github.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakameco%2Fpixiv-app-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakameco%2Fpixiv-app-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakameco%2Fpixiv-app-api/lists"}