yutaapis 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import { request } from "../../request.js";
2
+ export default async function animes(opts) {
3
+ return await request(opts.url, {
4
+ requestOptions: {
5
+ method: 'GET',
6
+ },
7
+ dataType: 'JSON'
8
+ }, 0, opts);
9
+ }
@@ -1,5 +1,5 @@
1
1
  import { request } from "../../request.js";
2
- export default async function geradores(opts, dataType) {
2
+ export default async function geradores(opts, dataType = 'JSON') {
3
3
  return await request(opts.url, {
4
4
  requestOptions: {
5
5
  method: 'GET',
@@ -1,5 +1,5 @@
1
1
  import { request } from "../../request.js";
2
- export default async function ias(opts, dataType) {
2
+ export default async function ias(opts, dataType = 'JSON') {
3
3
  return await request(opts.url, {
4
4
  requestOptions: {
5
5
  method: 'GET',
@@ -0,0 +1,12 @@
1
+ import { request } from "../../request.js";
2
+ export default async function logos(opts) {
3
+ return await request(opts.url, {
4
+ requestOptions: {
5
+ method: 'GET',
6
+ query: {
7
+ texto: opts.query
8
+ }
9
+ },
10
+ dataType: 'BUFFER'
11
+ }, 0, opts);
12
+ }
package/lib/client.js CHANGED
@@ -12,47 +12,38 @@ const BASE_YUTA_API_URL = 'https://yuta-apis.xyz/api';
12
12
  export class YutaApis {
13
13
  apiToken;
14
14
  url;
15
+ __routeCache = null;
15
16
  config;
16
17
  httpOptions;
17
- get ias() {
18
- const baseUrl = this.url;
19
- if (!baseUrl) {
20
- throw new Error('baseUrl is not defined');
18
+ getRoutes(routeName) {
19
+ if (this.__routeCache)
20
+ return this.__routeCache;
21
+ if (!this.url) {
22
+ throw new Error('Base url is not defined');
21
23
  }
22
- return routes({
24
+ this.__routeCache = routes({
23
25
  ...this.config,
24
- route: 'ias'
25
- }).ias;
26
+ route: routeName
27
+ });
28
+ return this.__routeCache;
29
+ }
30
+ get ias() {
31
+ return this.getRoutes('ias').ias;
26
32
  }
27
33
  get geradores() {
28
- const baseUrl = this.url;
29
- if (!baseUrl) {
30
- throw new Error('baseUrl is not defined');
31
- }
32
- return routes({
33
- ...this.config,
34
- route: 'geradores'
35
- }).geradores;
34
+ return this.getRoutes('geradores').geradores;
36
35
  }
37
36
  get downloads() {
38
- const baseUrl = this.url;
39
- if (!baseUrl) {
40
- throw new Error('baseUrl is not defined');
41
- }
42
- return routes({
43
- ...this.config,
44
- route: 'downloads'
45
- }).downloads;
37
+ return this.getRoutes('downloads').downloads;
46
38
  }
47
39
  get pesquisas() {
48
- const baseUrl = this.url;
49
- if (!baseUrl) {
50
- throw new Error('baseUrl is not defined');
51
- }
52
- return routes({
53
- ...this.config,
54
- route: 'pesquisas'
55
- }).pesquisas;
40
+ return this.getRoutes('pesquisas').pesquisas;
41
+ }
42
+ async logos(nomeDoEfeito, textoPraLogo) {
43
+ return await this.getRoutes('logos').logos.generate(nomeDoEfeito, textoPraLogo);
44
+ }
45
+ get animes() {
46
+ return this.getRoutes('animes').animes;
56
47
  }
57
48
  constructor(opts = {}) {
58
49
  if (!opts.apiToken || !isYutaApiToken(String(opts.apiToken))) {
package/lib/index.js CHANGED
@@ -1,2 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright 2026 Yuta & Hutao bot community
5
+ * Yuta APIs - Em parceria com HutaoBot
6
+ *
7
+ * @author Lm Only and Nk Petrov
8
+ */
1
9
  import { YutaApis } from './client.js';
2
10
  export default YutaApis;
package/lib/request.js CHANGED
@@ -22,6 +22,9 @@ export async function request(url, opts, redirectCount = 0, otherOpts) {
22
22
  if (redirectCount > 5) {
23
23
  throw new RequestError({ statusCode: 310, message: 'MAX_REDIRECTS' });
24
24
  }
25
+ if (!opts.requestOptions.query) {
26
+ opts.requestOptions.query = {};
27
+ }
25
28
  opts.requestOptions.query.apitoken = otherOpts.apitoken;
26
29
  opts.requestOptions.headers = {
27
30
  ...opts.requestOptions.headers,
package/lib/routes.js CHANGED
@@ -11,23 +11,34 @@ import ytsearch from "./Routes/pesquisa/yt-search.js";
11
11
  import ytaudio2 from "./Routes/downloads/ytaudio2.js";
12
12
  import wiki from "./Routes/pesquisa/wikipedia.js";
13
13
  import { urlFormatString } from "./Utils/url.js";
14
- import ias from "./Routes/ias/ias.js";
15
- import geradores from "./Routes/geradores/geradores.js";
14
+ import ias from "./Routes/ias/index.js";
15
+ import geradores from "./Routes/geradores/index.js";
16
+ import animes from "./Routes/animes/index.js";
17
+ import logos from "./Routes/logos/index.js";
16
18
  export function routes(opts) {
19
+ async function executeAnimesRoute(endpoint) {
20
+ return await animes({
21
+ ...opts,
22
+ url: urlFormatString(opts.baseUrl, opts.route, endpoint)
23
+ });
24
+ }
25
+ const functionsMap = {
26
+ 'github-stalker': gitstalk,
27
+ 'wiki-search': wiki,
28
+ 'yt-search': ytsearch
29
+ };
30
+ async function executePesquisasRoute(query, functionName) {
31
+ const executeFunction = functionsMap[functionName];
32
+ return await executeFunction({
33
+ ...opts, query,
34
+ url: urlFormatString(opts.baseUrl, opts.route, functionName)
35
+ });
36
+ }
17
37
  return {
18
38
  pesquisas: {
19
- ytsearch: async (query) => await ytsearch({
20
- ...opts, query,
21
- url: urlFormatString(opts.baseUrl, opts.route, 'yt-search')
22
- }),
23
- gitstalk: async (query) => await gitstalk({
24
- ...opts, query,
25
- url: urlFormatString(opts.baseUrl, opts.route, 'github-stalker')
26
- }),
27
- wiki: async (query) => await wiki({
28
- ...opts, query,
29
- url: urlFormatString(opts.baseUrl, opts.route, 'wiki-search')
30
- })
39
+ ytsearch: async (query) => await executePesquisasRoute(query, 'yt-search'),
40
+ gitstalk: async (query) => await executePesquisasRoute(query, 'github-stalker'),
41
+ wiki: async (query) => await executePesquisasRoute(query, 'wiki-search')
31
42
  },
32
43
  downloads: {
33
44
  ytaudio2: async (query) => await ytaudio2({
@@ -39,15 +50,15 @@ export function routes(opts) {
39
50
  gpt: async (query) => await ias({
40
51
  ...opts, query,
41
52
  url: urlFormatString(opts.baseUrl, opts.route, 'gpt')
42
- }, 'JSON'),
53
+ }),
43
54
  gemini: async (query) => await ias({
44
55
  ...opts, query,
45
56
  url: urlFormatString(opts.baseUrl, opts.route, 'gemini')
46
- }, 'JSON'),
57
+ }),
47
58
  gemini_pro: async (query) => await ias({
48
59
  ...opts, query,
49
60
  url: urlFormatString(opts.baseUrl, opts.route, 'gemini-pro')
50
- }, 'JSON'),
61
+ }),
51
62
  geminivoz: async (query) => await ias({
52
63
  ...opts, query,
53
64
  url: urlFormatString(opts.baseUrl, opts.route, 'geminivoz')
@@ -55,17 +66,36 @@ export function routes(opts) {
55
66
  perplexity_ai: async (query) => await ias({
56
67
  ...opts, query,
57
68
  url: urlFormatString(opts.baseUrl, opts.route, 'perplexity-ai')
58
- }, 'JSON')
69
+ })
59
70
  },
60
71
  geradores: {
61
72
  nick: async (query) => await geradores({
62
73
  ...opts, query,
63
74
  url: urlFormatString(opts.baseUrl, opts.route, 'gerar-nicks')
64
- }, 'JSON'),
75
+ }),
65
76
  qrcode: async (query) => await geradores({
66
77
  ...opts, query,
67
78
  url: urlFormatString(opts.baseUrl, opts.route, 'qrcode')
68
79
  }, 'BUFFER'),
80
+ },
81
+ animes: {
82
+ hentai_video: async () => await executeAnimesRoute('hentai-video'),
83
+ hentai_video2: async () => await executeAnimesRoute('hentai-video2'),
84
+ metadinha: async () => await executeAnimesRoute('metadinha'),
85
+ quotesanimes: async () => await executeAnimesRoute('quotesanimes')
86
+ },
87
+ logos: {
88
+ generate: async (nomeDoEfeito, textoPraLogo) => {
89
+ if (!textoPraLogo) {
90
+ console.error('Ei você errou aí na função de logos, você primeiro tem que passar o nome do efeito (tipo: glitch) e depois o texto a ser gerado: (ex: Yuta APis)');
91
+ throw new Error('Invalid params');
92
+ }
93
+ return await logos({
94
+ ...opts,
95
+ query: textoPraLogo,
96
+ url: urlFormatString(opts.baseUrl, opts.route, nomeDoEfeito)
97
+ });
98
+ }
69
99
  }
70
100
  };
71
101
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yutaapis",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Módulo TS/JavaScript que se conecta com a API Oficial do Yuta",
5
5
  "keywords": [
6
6
  "api",
@@ -1 +0,0 @@
1
- export {};