{"id":20569636,"url":"https://github.com/mrgriefs/furry-wrapper","last_synced_at":"2025-04-14T16:35:38.270Z","repository":{"id":43893381,"uuid":"351252556","full_name":"MrGriefs/furry-wrapper","owner":"MrGriefs","description":"A rewrite of hokkqi's furry API wrapper","archived":false,"fork":false,"pushed_at":"2023-07-19T01:54:01.000Z","size":14991,"stargazers_count":5,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T19:44:21.185Z","etag":null,"topics":["api","api-wrapper","axios","fox","furry","javascript","sheri","typescript","wrapper","yiff"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MrGriefs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"patreon":"yeen","ko_fi":"hagen","custom":"https://www.paypal.me/HagenHyena"}},"created_at":"2021-03-24T23:34:35.000Z","updated_at":"2025-01-20T15:34:35.000Z","dependencies_parsed_at":"2022-08-28T03:21:07.203Z","dependency_job_id":null,"html_url":"https://github.com/MrGriefs/furry-wrapper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrGriefs%2Ffurry-wrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrGriefs%2Ffurry-wrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrGriefs%2Ffurry-wrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrGriefs%2Ffurry-wrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrGriefs","download_url":"https://codeload.github.com/MrGriefs/furry-wrapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248917232,"owners_count":21182956,"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":["api","api-wrapper","axios","fox","furry","javascript","sheri","typescript","wrapper","yiff"],"created_at":"2024-11-16T05:09:04.447Z","updated_at":"2025-04-14T16:35:38.248Z","avatar_url":"https://github.com/MrGriefs.png","language":"TypeScript","funding_links":["https://patreon.com/yeen","https://ko-fi.com/hagen","https://www.paypal.me/HagenHyena"],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003e\u003ca href=\"https://npmjs.com/package/yiff\"\u003eYiff\u003c/a\u003e Rewrite\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://patreon.com/yeen\"\u003e\u003cimg alt=\"Patreon\" src=\"https://img.shields.io/badge/patreon-donate?color=F77F6F\u0026labelColor=F96854\u0026logo=patreon\u0026logoColor=ffffff\"\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/eazpsZNrRk\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/368557500884189186?color=7389D8\u0026labelColor=6A7EC2\u0026logo=discord\u0026logoColor=ffffff\"\u003e\u003c/a\u003e\n\u003cimg alt=\"Travis (.org)\" src=\"https://img.shields.io/travis/MrGriefs/furry-wrapper\"\u003e\n\u003cimg alt=\"David\" src=\"https://img.shields.io/david/MrGriefs/furry-wrapper\"\u003e\n\u003cimg alt=\"node-current\" src=\"https://img.shields.io/node/v/furry-wrapper\"\u003e\n\u003cimg alt=\"GitHub package.json version\" src=\"https://img.shields.io/github/package-json/v/MrGriefs/furry-wrapper\"\u003e\n\u003ca href=\"https://npm.runkit.com/furry-wrapper\"\u003e\u003cimg alt=\"RunKit\" src=\"https://img.shields.io/badge/Run-Kit-red\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003eAn extended wrapper based on \u003ca href=\"https://github.com/hokkqi/yiff\"\u003eHokkqi's furry API wrapper\u003c/a\u003e.\u003c/p\u003e\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Included APIs](#included-apis)\n  - [e621/e926](#e621-and-e926)\n  - [FurryBot](#furrybot)\n  - [Fox](#fox)\n  - [Shibe](#shibe)\n  - [Sheri Blossom](#sheri)\n  - [API Options](#api-options)\n\n## Introduction\n\nFurry Wrapper allows you to easily interact with an abundance of web APIs with the aid of [axios](https://npmjs.org/package/axios) and ECMAScript 2017's [async/await](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await).\n\n## Installation\n\nWith npm:  \n\n```bash\n$ npm install furry-wrapper\n```\n\nWith yarn:  \n\n```bash\n$ yarn add furry-wrapper\n```\n\n## Usage\n\nTry me on [RunKit](https://npm.runkit.com/furry-wrapper)  \n\u003ca href=\"https://discord.gg/eazpsZNrRk\" target=\"_blank\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/368557500884189186?color=7389D8\u0026labelColor=6A7EC2\u0026logo=discord\u0026logoColor=ffffff\"\u003e\u003c/a\u003e  \n\nSimply import the library and use whatever API directly:\n\n```javascript\nconst wrapper = require('furry-wrapper') // CommonJS\nimport * as wrapper from \"furry-wrapper\" // ES6\n\nwrapper.E6([query][, options]).then(r =\u003e /* do something */)\n```\n\n## Included APIs\n\n| API                                    |   |\n|----------------------------------------|---|\n| [e621](https://e621.net)               | ✔️ |\n| [e926](https://e926.net)               | ✔️ |\n| [Furry Bot](https://yiff.rest)         | ✔️ |\n| [Sheri Blossom](https://sheri.bot/api) | ✔️ |\n| Extras                                 | ✔️ |\n\n### e621 and e926\n\nTo make a request to e621.net:\n\n```javascript\nconst { E6 } = require('furry-wrapper') // CommonJS\nimport E6 from \"furry-wrapper\"          // ES6\n\nvar query = ['score:\u003e100', 'fox'] // Query can be a\nvar query = 'sunset rating:safe'  // string or array\n// Check out the below link for valid query parameters\n// https://e926.net/help/cheatsheet\n\nvar options // Optional library options\n\n// Request e621 for a post abiding to our query\nE6(query, options).then(post =\u003e console.log(post))\n\nE6.nsfw(query, options) // The same as E6(query, options)\nE6.sfw(query, options)  // Uses e926. Will only respond with SFW posts\n```\n\nThe E6 module has its own custom options, allowing you to pass in `noCub` and `overrideTags` in the API options.\n\n```javascript\nE6.nsfw(query, {\n    // Filters out underage characters\n    noCub: true,\n    // Appends additional tags which overide previos tag\n    overrideTags: 'moon'\n})\n```\n\n### FurryBot\n\nRequest the [Furry Bot API](https://yiff.rest) for images:\n\n```javascript\nconst { FurryBot } = require('furry-wrapper') // CommonJS\nimport FurryBot from \"furry-wrapper\"          // ES6\n\nvar options\n\n// Returns any random SFW image\nFurryBot(options).then(r =\u003e console.log(r))\n\n/*          Animals          */\n// Returns any random animal image\nFurryBot.animals(options).then(r =\u003e console.log(r))\n// Returns a random image of a bird\nFurryBot.animals.bird(options).then(r =\u003e console.log(r))\n// Returns a random image of a \"blep\"\nFurryBot.animals.blep(options).then(r =\u003e console.log(r))\n// Returns a random image of a cheeta\nFurryBot.animals.cheeta(options).then(r =\u003e console.log(r))\n// Returns a random image of a fox\nFurryBot.animals.fox(options).then(r =\u003e console.log(r))\n// Returns a random image of a lynx\nFurryBot.animals.lynx(options).then(r =\u003e console.log(r))\n// Returns a random image of a tiger\nFurryBot.animals.wolf(options).then(r =\u003e console.log(r))\n\n/*          Furry          */\n// Returns any random furry image\nFurryBot.furry(options).then(r =\u003e console.log(r))\n// Returns any random furry yiff image\nFurryBot.furry.yiff(options).then(r =\u003e console.log(r))\n// Returns a random image of a boop\nFurryBot.furry.boop(options).then(r =\u003e console.log(r))\n// Returns a random image of a cudd;e\nFurryBot.furry.cuddle(options).then(r =\u003e console.log(r))\n// Returns a random image of a flop\nFurryBot.furry.flop(options).then(r =\u003e console.log(r))\n// Returns a random image of a fursuit\nFurryBot.furry.fursuit(options).then(r =\u003e console.log(r))\n// Returns a random image of a hold\nFurryBot.furry.hold(options).then(r =\u003e console.log(r))\n// Returns a random image of a howl\nFurryBot.furry.howl(options).then(r =\u003e console.log(r))\n// Returns a random image of a hug\nFurryBot.furry.hug(options).then(r =\u003e console.log(r))\n// Returns a random image of a kiss\nFurryBot.furry.kiss(options).then(r =\u003e console.log(r))\n// Returns a random image of a lick\nFurryBot.furry.lick(options).then(r =\u003e console.log(r))\n// Returns a random image of a proposal\nFurryBot.furry.propose(options).then(r =\u003e console.log(r))\n// Returns a random image of a bulge\nFurryBot.furry.bulge(options).then(r =\u003e console.log(r))\n\n/*          Yiff          */\n// Returns any random furry yiff image\nFurryBot.yiff(options).then(r =\u003e console.log(r))\n// Returns a random image of gay yiff\nFurryBot.yiff.gay(options).then(r =\u003e console.log(r))\n// Returns a random image of straight yiff\nFurryBot.yiff.straight(options).then(r =\u003e console.log(r))\n// Returns a random image of lesbian yiff\nFurryBot.yiff.lesbian(options).then(r =\u003e console.log(r))\n// Returns a random image of gynomorph yiff\nFurryBot.yiff.gynomorph(options).then(r =\u003e console.log(r))\n```\n\n### Fox\n\nGives a random image of a fox\n\n```javascript\nconst { Fox } = require('furry-wrapper') // CommonJS\nimport Fox from \"furry-wrapper\"          // ES6\n\nFox(options).then(r =\u003e console.log(r)) // Link to the image\n```\n\n### Shibe\n\nEven more cute animal pictures:\n\n```javascript\nconst { Shibe } = require('furry-wrapper') // CommonJS\nimport Shibe from \"furry-wrapper\"          // ES6\n\n// A picture of a shibe\nShibe(options).then(r =\u003e console.log(r))\n// The exact same\nShibe.shibe(options).then(r =\u003e console.log(r))\n// A picture of a cat\nShibe.cat(options).then(r =\u003e console.log(r))\n// A picture of a bird\nShibe.bird(options).then(r =\u003e console.log(r))\n```\n\n### Sheri\n\nAllows you to easily interact with the [Sheri API](https://sheri.bot/api).\nSheri has too many endpoints to interact with in an optimised profession, so you will have the use the name of the endpoint.\nYou can find all endpoints [here](https://sheri.bot/api/urls)\n\n```javascript\nconst { Sheri } = require('furry-wrapper') // CommonJS\nimport Sheri from \"furry-wrapper\"          // ES6\n\nvar endpoint = 'husky' // You can view all endpoints at https://sheri.bot/api/urls\n\nSheri(endpoint, options).then(r =\u003e console.log(r)) // Returns the response\n```\n\n### API Options\n\nAdditionally, each module allows you to pass in API options to customise your experience a tad more.\n\n```javascript\nvar options = {\n    // Allows you to pass in a token through the authorization header\n    token: \"OGhZVFNVRms6OGhZVFNVRms=\",\n    // The exact same as `token`\n    auth,\n    // Use your own custom user agent. User agent will always default to your Node.js version and OS name if no agent is provided\n    agent: 'My Progamme, contact@example.com',\n    // Allows you to apply your own axios options whenever axios is used.\n    axiosOptions: {\n        // Sets a specific amount of time in milliseconds that axios will wait until the requested server responds.\n        timeout: 1000 \n        // You can find other axios options at https://github.com/axios/axios#request-config\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrgriefs%2Ffurry-wrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrgriefs%2Ffurry-wrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrgriefs%2Ffurry-wrapper/lists"}