yutaapis 1.0.1 → 1.0.2

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,3 @@
1
+ import { DataTypeDefault, DefaultParamsFunc, OtherOpts } from "../../Types/types.js";
2
+ export default function defaultRequest(opts: DefaultParamsFunc, dataType?: DataTypeDefault, otherOpts?: OtherOpts): Promise<any>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Routes/default/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAErF,wBAA8B,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,GAAE,eAAwB,EAAE,SAAS,GAAE,SAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAQnJ"}
@@ -0,0 +1,10 @@
1
+ import { request } from "../../request.js";
2
+ export default async function defaultRequest(opts, dataType = 'JSON', otherOpts = null) {
3
+ return request(opts.url, {
4
+ requestOptions: {
5
+ method: 'GET',
6
+ ...(otherOpts ? { query: otherOpts } : {})
7
+ },
8
+ dataType
9
+ }, 0, opts);
10
+ }
@@ -0,0 +1,143 @@
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
+ */
9
+ /** Opções de HTTP adcionais */
10
+ export declare interface HttpOptions {
11
+ baseUrl?: string;
12
+ headers?: Record<string, string>;
13
+ /** Numero maximo de tentativas em caso de erro */
14
+ maxRetry?: number;
15
+ }
16
+ export declare interface ParamsQuery {
17
+ apitoken?: string;
18
+ /** Ok Nk,
19
+ * sofri por que achava que tudo era query kkkk
20
+ * 😡😡😡
21
+ */
22
+ query?: string;
23
+ url?: string;
24
+ text?: string;
25
+ username?: string;
26
+ /** Esse é exclusivo da rota de logos */
27
+ texto?: string;
28
+ }
29
+ /**
30
+ * O gemini voz retorna buffer
31
+ * Mas o resto retorna JSON
32
+ * cuidado
33
+ */
34
+ export declare type DataTypeDefault = 'JSON' | 'BUFFER';
35
+ export declare type OtherOpts = Record<string, string> | null;
36
+ export declare interface RequestOptions {
37
+ method: 'GET' | 'POST';
38
+ headers?: Record<string, string>;
39
+ /**
40
+ * Query params para url, exemplo: ?query= e etc
41
+ */
42
+ query?: ParamsQuery;
43
+ }
44
+ export declare interface RequestOptsConfig {
45
+ requestOptions: RequestOptions;
46
+ dataType: 'JSON' | 'BUFFER' | 'TEXT';
47
+ }
48
+ export declare interface DefaultParamsFunc {
49
+ query?: string;
50
+ /**
51
+ * Seria como https://yuta-apis.xyz/api
52
+ */
53
+ baseUrl: string;
54
+ /**
55
+ * Tipo: pesquisa
56
+ */
57
+ route: string;
58
+ /**
59
+ * Exemplo: yt-search
60
+ */
61
+ url: string;
62
+ /**
63
+ * Token do Yuta
64
+ */
65
+ apitoken: string;
66
+ headers?: Record<string, string>;
67
+ }
68
+ export declare interface DefaultResultJSON {
69
+ status?: boolean;
70
+ msg?: string;
71
+ resposta?: string;
72
+ total?: number;
73
+ fonte?: string;
74
+ criador?: '@NkPetrøv' | '@LmOnly';
75
+ creator?: '@NkPetrøv' | '@LmOnly';
76
+ resultado?: Array<any>;
77
+ result?: Array<any>;
78
+ }
79
+ export declare interface PesquisasRota {
80
+ ytsearch: (query: string) => Promise<DefaultResultJSON>;
81
+ gitstalk: (query: string) => Promise<DefaultResultJSON>;
82
+ wiki: (query: string) => Promise<DefaultResultJSON>;
83
+ }
84
+ export declare interface DownloadsRota {
85
+ play: (query: string) => Promise<ArrayBuffer>;
86
+ playvideo: (query: string) => Promise<ArrayBuffer>;
87
+ ytmp3: (url: string) => Promise<ArrayBuffer>;
88
+ ytmp4: (url: string) => Promise<ArrayBuffer>;
89
+ tiktokdl: (url: string) => Promise<DefaultResultJSON>;
90
+ tiktokMp3: (url: string) => Promise<ArrayBuffer>;
91
+ tiktokMp4: (url: string) => Promise<ArrayBuffer>;
92
+ instavideo: (url: string) => Promise<DefaultResultJSON>;
93
+ pinterest: (query: string) => Promise<ArrayBuffer>;
94
+ pinterestVideo: (url: string) => Promise<DefaultResultJSON>;
95
+ pinterestMp3: (url: string) => Promise<ArrayBuffer>;
96
+ pinterestMp4: (url: string) => Promise<ArrayBuffer>;
97
+ }
98
+ export declare interface IaRota {
99
+ gpt: (query: string) => Promise<DefaultResultJSON>;
100
+ gemini: (query: string) => Promise<DefaultResultJSON>;
101
+ gemini_pro: (query: string) => Promise<DefaultResultJSON>;
102
+ perplexity_ai: (query: string) => Promise<DefaultResultJSON>;
103
+ geminivoz: (query: string) => Promise<ArrayBuffer>;
104
+ }
105
+ export declare interface GeradoresRota {
106
+ nick: (query: string) => Promise<DefaultResultJSON>;
107
+ qrcode: (query: string) => Promise<any>;
108
+ }
109
+ export declare interface AnimesRota {
110
+ hentai_video: () => Promise<DefaultResultJSON>;
111
+ hentai_video2: () => Promise<DefaultResultJSON>;
112
+ metadinha: () => Promise<DefaultResultJSON>;
113
+ quotesanimes: () => Promise<DefaultResultJSON>;
114
+ }
115
+ export type LogosOptions = 'glitch' | 'write' | 'advancedglow' | 'typography' | 'pixelglitch' | 'neonglitch' | 'flag' | 'flag3d' | 'deleting' | 'glowing' | 'underwater' | 'logomaker' | 'cartoon' | 'papercut' | 'watercolor' | 'effectclouds' | 'blackpinklogo' | 'gradient' | 'summerbeach' | 'luxurygold' | 'multicoloredneon' | 'sandsummer' | 'galaxywallpaper' | '1917' | 'makingneon' | 'royal' | 'freecreate' | 'galaxy' | 'darkgreen' | 'lighteffects' | 'dragonball' | 'neondevil' | 'frozen' | 'wooden3d' | 'metal3d' | 'ligatures' | '3druby' | 'sunset' | 'cemetery' | 'halloween' | 'horror' | 'blood' | 'joker' | 'clouds';
116
+ export declare type PlaqParams = 'plaq1' | 'plaq2' | 'plaq3' | 'plaq4' | 'plaq5' | 'plaq6' | 'plaq7' | 'plaq8' | 'plaq9' | 'plaq10';
117
+ export declare type PlaqTextExample = 'Lm amor' | 'Nk Domina';
118
+ export declare interface LogosRota {
119
+ generate: (nomeDoEfeito: LogosOptions, textoPraLogo: string) => Promise<ArrayBuffer>;
120
+ }
121
+ export declare interface PlaqRoutes {
122
+ generate: (Plaq: PlaqParams, TextinhoRs: PlaqTextExample) => Promise<ArrayBuffer>;
123
+ }
124
+ export declare interface NoticiasRota {
125
+ cnn: () => Promise<DefaultResultJSON>;
126
+ esportes: () => Promise<DefaultResultJSON>;
127
+ g1: () => Promise<DefaultResultJSON>;
128
+ ibge: () => Promise<DefaultResultJSON>;
129
+ noticias_atuais: () => Promise<DefaultResultJSON>;
130
+ politica: () => Promise<DefaultResultJSON>;
131
+ uol: () => Promise<DefaultResultJSON>;
132
+ }
133
+ export declare interface RouteNames {
134
+ pesquisas: PesquisasRota;
135
+ downloads: DownloadsRota;
136
+ ias: IaRota;
137
+ geradores: GeradoresRota;
138
+ animes: AnimesRota;
139
+ logos: LogosRota;
140
+ noticias: NoticiasRota;
141
+ plaquinhas: PlaqRoutes;
142
+ }
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Types/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
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
+ */
9
+ ;
10
+ ;
11
+ ;
12
+ ;
13
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './validation.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function urlFormatString(...args: string[]): string;
2
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/Utils/url.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOzD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Analisa se o token tem as características da API token do yuta.
3
+ * Ele vai checar se a string tem o tamnho adequado
4
+ * Se o começo é previsto igual o do token e etc
5
+ *
6
+ * @param apiToken Suposta API Token do Yuta
7
+ */
8
+ export declare function isYutaApiToken(apiToken: string): boolean;
9
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/Utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,47 @@
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
+ */
9
+ import { AnimesRota, DownloadsRota, GeradoresRota, HttpOptions, IaRota, LogosOptions, NoticiasRota, PesquisasRota, PlaqParams, PlaqTextExample } from "./Types/types.js";
10
+ /**
11
+ * YutaApis opções de configuração
12
+ */
13
+ export interface YutaApisOptions {
14
+ /**
15
+ * API Token do Yuta APIS localizado na parte da
16
+ * sua conta
17
+ *
18
+ * É obrigatorio
19
+ */
20
+ apiToken: string;
21
+ /**
22
+ * Opções de HTTP adcionais
23
+ */
24
+ httpOptions?: HttpOptions;
25
+ }
26
+ export declare class YutaApis {
27
+ private readonly apiToken?;
28
+ private readonly url?;
29
+ private __routeCache;
30
+ readonly config: Readonly<{
31
+ headers: Record<string, string>;
32
+ apitoken: string;
33
+ baseUrl: string;
34
+ }>;
35
+ readonly httpOptions?: HttpOptions;
36
+ private getRoutes;
37
+ get ias(): IaRota;
38
+ get geradores(): GeradoresRota;
39
+ get plaquinhas(): (Plaq: PlaqParams, TextinhoRs: PlaqTextExample) => Promise<ArrayBuffer>;
40
+ get downloads(): DownloadsRota;
41
+ get pesquisas(): PesquisasRota;
42
+ get noticias(): NoticiasRota;
43
+ get logos(): (nomeDoEfeito: LogosOptions, textoPraLogo: string) => Promise<ArrayBuffer>;
44
+ get animes(): AnimesRota;
45
+ constructor(opts: YutaApisOptions);
46
+ }
47
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAa,YAAY,EAAE,aAAa,EAAE,UAAU,EAAc,eAAe,EAAc,MAAM,kBAAkB,CAAC;AAK5M;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B;AAED,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAA0C;IAE9D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC,CAAA;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,OAAO,CAAC,SAAS;IAajB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED,IAAI,UAAU,WAEI,UAAU,cAAc,eAAe,0BACxD;IAED,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,IAAI,KAAK,mBAEiB,YAAY,gBAAgB,MAAM,0BAC3D;IAED,IAAI,MAAM,IAAI,UAAU,CAEvB;gBAEW,IAAI,EAAE,eAAe;CAcpC"}
package/lib/client.js CHANGED
@@ -33,19 +33,27 @@ export class YutaApis {
33
33
  get geradores() {
34
34
  return this.getRoutes('geradores').geradores;
35
35
  }
36
+ get plaquinhas() {
37
+ const generate = this.getRoutes('plaquinhas').plaquinhas.generate;
38
+ return (Plaq, TextinhoRs) => generate(Plaq, TextinhoRs);
39
+ }
36
40
  get downloads() {
37
41
  return this.getRoutes('downloads').downloads;
38
42
  }
39
43
  get pesquisas() {
40
44
  return this.getRoutes('pesquisas').pesquisas;
41
45
  }
42
- async logos(nomeDoEfeito, textoPraLogo) {
43
- return await this.getRoutes('logos').logos.generate(nomeDoEfeito, textoPraLogo);
46
+ get noticias() {
47
+ return this.getRoutes('noticias').noticias;
48
+ }
49
+ get logos() {
50
+ const generate = this.getRoutes('logos').logos.generate;
51
+ return (nomeDoEfeito, textoPraLogo) => generate(nomeDoEfeito, textoPraLogo);
44
52
  }
45
53
  get animes() {
46
54
  return this.getRoutes('animes').animes;
47
55
  }
48
- constructor(opts = {}) {
56
+ constructor(opts) {
49
57
  if (!opts.apiToken || !isYutaApiToken(String(opts.apiToken))) {
50
58
  throw new Error('apiToken is not defined');
51
59
  }
@@ -0,0 +1,17 @@
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
+ */
9
+ export interface RequestErrorOpts {
10
+ message?: string;
11
+ statusCode: number;
12
+ }
13
+ export declare class RequestError extends Error {
14
+ statusCode: number;
15
+ constructor(opts: RequestErrorOpts);
16
+ }
17
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACnC,UAAU,EAAE,MAAM,CAAC;gBAEP,IAAI,EAAE,gBAAgB;CAMrC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,12 @@
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
+ */
9
+ import { YutaApis } from './client.js';
10
+ export type { YutaApisOptions } from './client.js';
11
+ export default YutaApis;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,12 @@
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
+ */
9
+ import { RequestOptsConfig } from './Types/types.js';
10
+ import { Opts } from './routes.js';
11
+ export declare function request<T = unknown>(url: string, opts: RequestOptsConfig, redirectCount: number | undefined, otherOpts: Opts): Promise<T>;
12
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAiBnC,wBAAsB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,oBAAY,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAoDvI"}
package/lib/request.js CHANGED
@@ -18,6 +18,9 @@ async function getBodyByType(body, dataType) {
18
18
  default: return (await body.text());
19
19
  }
20
20
  }
21
+ function errorJson(type, contentType) {
22
+ return type.toLowerCase() === 'buffer' && contentType.startsWith('application/json');
23
+ }
21
24
  export async function request(url, opts, redirectCount = 0, otherOpts) {
22
25
  if (redirectCount > 5) {
23
26
  throw new RequestError({ statusCode: 310, message: 'MAX_REDIRECTS' });
@@ -31,7 +34,9 @@ export async function request(url, opts, redirectCount = 0, otherOpts) {
31
34
  ...otherOpts.headers,
32
35
  };
33
36
  const { statusCode, headers, body } = await httpRequest(url, opts.requestOptions);
34
- if (statusCode >= 200 && statusCode < 300) {
37
+ const contentType = String(headers?.['content-type']).toLowerCase();
38
+ const isErrorJson = errorJson(opts.dataType, contentType);
39
+ if (statusCode >= 200 && statusCode < 300 && !isErrorJson) {
35
40
  return await getBodyByType(body, opts.dataType);
36
41
  }
37
42
  const locationHeader = headers.location;
@@ -47,7 +52,7 @@ export async function request(url, opts, redirectCount = 0, otherOpts) {
47
52
  * Segue pra erro desconhecido .
48
53
  */
49
54
  try {
50
- const responseError = await getBodyByType(body, opts.dataType);
55
+ const responseError = await getBodyByType(body, isErrorJson ? 'JSON' : 'TEXT');
51
56
  const hasResponseApi = Array.isArray(responseError) || typeof responseError !== 'undefined';
52
57
  if (hasResponseApi) {
53
58
  return responseError;
@@ -0,0 +1,25 @@
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
+ */
9
+ import { RouteNames } from "./Types/types.js";
10
+ export type Opts = {
11
+ baseUrl: string;
12
+ apitoken: string;
13
+ route: string;
14
+ query?: string;
15
+ headers?: Record<string, any>;
16
+ };
17
+ /**
18
+ * AVISO: Antes e adicionar um rota aqui
19
+ * é necessario registrar no types.js
20
+ *
21
+ * @param opts nothing-zero
22
+ * @returns Todas as rotas do Yuta APIS
23
+ */
24
+ export declare function routes(opts: Opts): RouteNames;
25
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA8E,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI1H,MAAM,MAAM,IAAI,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAmF7C"}
package/lib/routes.js CHANGED
@@ -6,95 +6,84 @@
6
6
  *
7
7
  * @author Lm Only and Nk Petrov
8
8
  */
9
- import gitstalk from "./Routes/pesquisa/github-search.js";
10
- import ytsearch from "./Routes/pesquisa/yt-search.js";
11
- import ytaudio2 from "./Routes/downloads/ytaudio2.js";
12
- import wiki from "./Routes/pesquisa/wikipedia.js";
13
9
  import { urlFormatString } from "./Utils/url.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";
10
+ import defaultRequest from "./Routes/default/index.js";
11
+ /**
12
+ * AVISO: Antes e adicionar um rota aqui
13
+ * é necessario registrar no types.js
14
+ *
15
+ * @param opts nothing-zero
16
+ * @returns Todas as rotas do Yuta APIS
17
+ */
18
18
  export function routes(opts) {
19
- async function executeAnimesRoute(endpoint) {
20
- return await animes({
19
+ async function executeDefaultMethod(endPoint, params = {}, dataType = 'JSON') {
20
+ return defaultRequest({
21
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
- });
22
+ url: urlFormatString(opts.baseUrl, opts.route, endPoint)
23
+ }, dataType, params);
36
24
  }
37
25
  return {
26
+ noticias: {
27
+ cnn: () => executeDefaultMethod('cnn'),
28
+ esportes: () => executeDefaultMethod('esportes'),
29
+ g1: () => executeDefaultMethod('g1'),
30
+ ibge: () => executeDefaultMethod('ibge'),
31
+ noticias_atuais: () => executeDefaultMethod('noticias-atuais'),
32
+ politica: () => executeDefaultMethod('politica'),
33
+ uol: () => executeDefaultMethod('uol'),
34
+ },
38
35
  pesquisas: {
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')
36
+ ytsearch: (query) => executeDefaultMethod('yt-search', { query }),
37
+ wiki: (query) => executeDefaultMethod('wiki-search', { query }),
38
+ gitstalk: (query) => executeDefaultMethod('github-stalker', { username: query }),
42
39
  },
43
40
  downloads: {
44
- ytaudio2: async (query) => await ytaudio2({
45
- ...opts, query,
46
- url: urlFormatString(opts.baseUrl, opts.route, 'ytaudio2')
47
- }),
41
+ play: (query) => executeDefaultMethod('play-audio2', { query }, 'BUFFER'),
42
+ playvideo: (query) => executeDefaultMethod('play-video2', { query }, 'BUFFER'),
43
+ ytmp3: (url) => executeDefaultMethod('ytaudio2', { url }, 'BUFFER'),
44
+ ytmp4: (url) => executeDefaultMethod('ytvideo2', { url }, 'BUFFER'),
45
+ tiktokdl: (url) => executeDefaultMethod('tiktok-dl', { url }),
46
+ tiktokMp3: (url) => executeDefaultMethod('tiktok-mp3', { url }, 'BUFFER'),
47
+ tiktokMp4: (url) => executeDefaultMethod('tiktok-mp4', { url }, 'BUFFER'),
48
+ instavideo: (url) => executeDefaultMethod('instagram-video', { url }),
49
+ pinterestVideo: (url) => executeDefaultMethod('pinterest-video', { url }),
50
+ pinterest: (query) => executeDefaultMethod('pinterest', { query }, 'BUFFER'),
51
+ pinterestMp3: (url) => executeDefaultMethod('pinterest-mp3', { url }, 'BUFFER'),
52
+ pinterestMp4: (url) => executeDefaultMethod('pinterest-mp4', { url }, 'BUFFER'),
48
53
  },
49
54
  ias: {
50
- gpt: async (query) => await ias({
51
- ...opts, query,
52
- url: urlFormatString(opts.baseUrl, opts.route, 'gpt')
53
- }),
54
- gemini: async (query) => await ias({
55
- ...opts, query,
56
- url: urlFormatString(opts.baseUrl, opts.route, 'gemini')
57
- }),
58
- gemini_pro: async (query) => await ias({
59
- ...opts, query,
60
- url: urlFormatString(opts.baseUrl, opts.route, 'gemini-pro')
61
- }),
62
- geminivoz: async (query) => await ias({
63
- ...opts, query,
64
- url: urlFormatString(opts.baseUrl, opts.route, 'geminivoz')
65
- }, 'BUFFER'),
66
- perplexity_ai: async (query) => await ias({
67
- ...opts, query,
68
- url: urlFormatString(opts.baseUrl, opts.route, 'perplexity-ai')
69
- })
55
+ gpt: (query) => executeDefaultMethod('gpt', { query }),
56
+ gemini: (query) => executeDefaultMethod('gemini', { query }),
57
+ gemini_pro: (query) => executeDefaultMethod('gemini-pro', { query }),
58
+ geminivoz: (query) => executeDefaultMethod('geminivoz', { query }, 'BUFFER'),
59
+ perplexity_ai: (query) => executeDefaultMethod('perplexity-ai', { query }),
70
60
  },
71
61
  geradores: {
72
- nick: async (query) => await geradores({
73
- ...opts, query,
74
- url: urlFormatString(opts.baseUrl, opts.route, 'gerar-nicks')
75
- }),
76
- qrcode: async (query) => await geradores({
77
- ...opts, query,
78
- url: urlFormatString(opts.baseUrl, opts.route, 'qrcode')
79
- }, 'BUFFER'),
62
+ nick: (query) => executeDefaultMethod('gerar-nicks', { text: query }),
63
+ qrcode: (query) => executeDefaultMethod('qrcode', { text: query }, 'BUFFER')
80
64
  },
81
65
  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')
66
+ hentai_video: () => executeDefaultMethod('hentai-video'),
67
+ hentai_video2: () => executeDefaultMethod('hentai-video2'),
68
+ metadinha: () => executeDefaultMethod('metadinha'),
69
+ quotesanimes: () => executeDefaultMethod('quotesanimes')
86
70
  },
87
71
  logos: {
88
- generate: async (nomeDoEfeito, textoPraLogo) => {
72
+ generate: (nomeDoEfeito, textoPraLogo) => {
89
73
  if (!textoPraLogo) {
90
74
  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
75
  throw new Error('Invalid params');
92
76
  }
93
- return await logos({
94
- ...opts,
95
- query: textoPraLogo,
96
- url: urlFormatString(opts.baseUrl, opts.route, nomeDoEfeito)
97
- });
77
+ return executeDefaultMethod(nomeDoEfeito, { texto: textoPraLogo }, 'BUFFER');
78
+ }
79
+ },
80
+ plaquinhas: {
81
+ generate: (Plaq, TextinhoRs) => {
82
+ if (!TextinhoRs) {
83
+ console.error('Ei você errou aí na função de plaquinha, você primeiro tem que passar o nome da plaq (tipo: plaq1) e depois o texto a ser gerado: (ex: Yuta APis)');
84
+ throw new Error('Invalid params');
85
+ }
86
+ return executeDefaultMethod(Plaq, { query: TextinhoRs }, 'BUFFER');
98
87
  }
99
88
  }
100
89
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yutaapis",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Módulo TS/JavaScript que se conecta com a API Oficial do Yuta",
5
5
  "keywords": [
6
6
  "api",
@@ -22,6 +22,7 @@
22
22
  "author": "Lm-Only",
23
23
  "type": "module",
24
24
  "main": "lib/index.js",
25
+ "types": "lib/Types/types.d.ts",
25
26
  "scripts": {
26
27
  "test": "echo \"Error: no test specified\" && exit 1"
27
28
  },
@@ -1,9 +0,0 @@
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,15 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function ytaudio2(opts) {
3
- if (!opts.query) {
4
- throw 'Parâmetro inválido - Está faltando';
5
- }
6
- return await request(opts.url, {
7
- requestOptions: {
8
- method: 'GET',
9
- query: {
10
- url: opts.query,
11
- }
12
- },
13
- dataType: 'JSON'
14
- }, 0, opts);
15
- }
@@ -1,12 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function geradores(opts, dataType = 'JSON') {
3
- return await request(opts.url, {
4
- requestOptions: {
5
- method: 'GET',
6
- query: {
7
- text: opts.query
8
- }
9
- },
10
- dataType: dataType
11
- }, 0, opts);
12
- }
@@ -1,12 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function ias(opts, dataType = 'JSON') {
3
- return await request(opts.url, {
4
- requestOptions: {
5
- method: 'GET',
6
- query: {
7
- query: opts.query,
8
- }
9
- },
10
- dataType: dataType
11
- }, 0, opts);
12
- }
@@ -1,12 +0,0 @@
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
- }
@@ -1,21 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function gitstalk(opts) {
3
- if (!opts.query) {
4
- throw 'Parâmetro inválido - Está faltando';
5
- }
6
- try {
7
- return await request(opts.url, {
8
- requestOptions: {
9
- method: 'GET',
10
- query: {
11
- username: opts.query,
12
- },
13
- },
14
- dataType: 'JSON'
15
- }, 0, opts);
16
- }
17
- catch (error) {
18
- throw new Error('API_ERROR: ' + error);
19
- }
20
- }
21
- ;
@@ -1,15 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function wiki(opts) {
3
- if (!opts.query) {
4
- throw 'Parâmetro inválido - Está faltando';
5
- }
6
- return await request(opts.url, {
7
- requestOptions: {
8
- method: 'GET',
9
- query: {
10
- query: opts.query,
11
- }
12
- },
13
- dataType: 'JSON'
14
- }, 0, opts);
15
- }
@@ -1,20 +0,0 @@
1
- import { request } from "../../request.js";
2
- export default async function ytsearch(opts) {
3
- if (!opts.query) {
4
- throw 'Parâmetro inválido - Está faltando';
5
- }
6
- try {
7
- return await request(opts.url, {
8
- requestOptions: {
9
- method: 'GET',
10
- query: {
11
- query: opts.query,
12
- },
13
- },
14
- dataType: 'JSON'
15
- }, 0, opts);
16
- }
17
- catch (error) {
18
- throw new Error('API_ERROR: ' + error);
19
- }
20
- }