animob 1.0.0

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.
Files changed (229) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +245 -0
  3. package/animb.png +0 -0
  4. package/dist/extractors/index.d.ts +11 -0
  5. package/dist/extractors/index.js +27 -0
  6. package/dist/extractors/index.js.map +1 -0
  7. package/dist/extractors/kwik.d.ts +18 -0
  8. package/dist/extractors/kwik.js +117 -0
  9. package/dist/extractors/kwik.js.map +1 -0
  10. package/dist/extractors/lplayer.d.ts +11 -0
  11. package/dist/extractors/lplayer.js +131 -0
  12. package/dist/extractors/lplayer.js.map +1 -0
  13. package/dist/extractors/megacloud.d.ts +10 -0
  14. package/dist/extractors/megacloud.js +44 -0
  15. package/dist/extractors/megacloud.js.map +1 -0
  16. package/dist/extractors/megaup.d.ts +31 -0
  17. package/dist/extractors/megaup.js +79 -0
  18. package/dist/extractors/megaup.js.map +1 -0
  19. package/dist/extractors/mixdrop.d.ts +7 -0
  20. package/dist/extractors/mixdrop.js +32 -0
  21. package/dist/extractors/mixdrop.js.map +1 -0
  22. package/dist/extractors/movearnpre.d.ts +9 -0
  23. package/dist/extractors/movearnpre.js +154 -0
  24. package/dist/extractors/movearnpre.js.map +1 -0
  25. package/dist/extractors/sendvid.d.ts +8 -0
  26. package/dist/extractors/sendvid.js +76 -0
  27. package/dist/extractors/sendvid.js.map +1 -0
  28. package/dist/extractors/sibnet.d.ts +8 -0
  29. package/dist/extractors/sibnet.js +44 -0
  30. package/dist/extractors/sibnet.js.map +1 -0
  31. package/dist/extractors/streamsb.d.ts +11 -0
  32. package/dist/extractors/streamsb.js +65 -0
  33. package/dist/extractors/streamsb.js.map +1 -0
  34. package/dist/extractors/streamtape.d.ts +7 -0
  35. package/dist/extractors/streamtape.js +32 -0
  36. package/dist/extractors/streamtape.js.map +1 -0
  37. package/dist/extractors/streamwish.d.ts +11 -0
  38. package/dist/extractors/streamwish.js +46 -0
  39. package/dist/extractors/streamwish.js.map +1 -0
  40. package/dist/extractors/vidcloud.d.ts +11 -0
  41. package/dist/extractors/vidcloud.js +109 -0
  42. package/dist/extractors/vidcloud.js.map +1 -0
  43. package/dist/extractors/videostr.d.ts +10 -0
  44. package/dist/extractors/videostr.js +44 -0
  45. package/dist/extractors/videostr.js.map +1 -0
  46. package/dist/extractors/vidmoly.d.ts +7 -0
  47. package/dist/extractors/vidmoly.js +75 -0
  48. package/dist/extractors/vidmoly.js.map +1 -0
  49. package/dist/extractors/voe.d.ts +10 -0
  50. package/dist/extractors/voe.js +44 -0
  51. package/dist/extractors/voe.js.map +1 -0
  52. package/dist/index.d.ts +6 -0
  53. package/dist/index.js +23 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/models/anime-parser.d.ts +26 -0
  56. package/dist/models/anime-parser.js +14 -0
  57. package/dist/models/anime-parser.js.map +1 -0
  58. package/dist/models/base-parser.d.ts +10 -0
  59. package/dist/models/base-parser.js +7 -0
  60. package/dist/models/base-parser.js.map +1 -0
  61. package/dist/models/base-provider.d.ts +40 -0
  62. package/dist/models/base-provider.js +45 -0
  63. package/dist/models/base-provider.js.map +1 -0
  64. package/dist/models/base-types.d.ts +22 -0
  65. package/dist/models/base-types.js +3 -0
  66. package/dist/models/base-types.js.map +1 -0
  67. package/dist/models/book-parser.d.ts +4 -0
  68. package/dist/models/book-parser.js +7 -0
  69. package/dist/models/book-parser.js.map +1 -0
  70. package/dist/models/comic-parser.d.ts +4 -0
  71. package/dist/models/comic-parser.js +7 -0
  72. package/dist/models/comic-parser.js.map +1 -0
  73. package/dist/models/index.d.ts +13 -0
  74. package/dist/models/index.js +39 -0
  75. package/dist/models/index.js.map +1 -0
  76. package/dist/models/lightnovel-parser.d.ts +16 -0
  77. package/dist/models/lightnovel-parser.js +7 -0
  78. package/dist/models/lightnovel-parser.js.map +1 -0
  79. package/dist/models/manga-parser.d.ts +17 -0
  80. package/dist/models/manga-parser.js +10 -0
  81. package/dist/models/manga-parser.js.map +1 -0
  82. package/dist/models/movie-parser.d.ts +26 -0
  83. package/dist/models/movie-parser.js +7 -0
  84. package/dist/models/movie-parser.js.map +1 -0
  85. package/dist/models/news-parser.d.ts +4 -0
  86. package/dist/models/news-parser.js +7 -0
  87. package/dist/models/news-parser.js.map +1 -0
  88. package/dist/models/proxy.d.ts +25 -0
  89. package/dist/models/proxy.js +83 -0
  90. package/dist/models/proxy.js.map +1 -0
  91. package/dist/models/type-objects.d.ts +48 -0
  92. package/dist/models/type-objects.js +57 -0
  93. package/dist/models/type-objects.js.map +1 -0
  94. package/dist/models/types.d.ts +515 -0
  95. package/dist/models/types.js +118 -0
  96. package/dist/models/types.js.map +1 -0
  97. package/dist/models/video-extractor.d.ts +19 -0
  98. package/dist/models/video-extractor.js +10 -0
  99. package/dist/models/video-extractor.js.map +1 -0
  100. package/dist/providers/anime/animekai.d.ts +94 -0
  101. package/dist/providers/anime/animekai.js +661 -0
  102. package/dist/providers/anime/animekai.js.map +1 -0
  103. package/dist/providers/anime/animepahe.d.ts +41 -0
  104. package/dist/providers/anime/animepahe.js +270 -0
  105. package/dist/providers/anime/animepahe.js.map +1 -0
  106. package/dist/providers/anime/animesama.d.ts +25 -0
  107. package/dist/providers/anime/animesama.js +504 -0
  108. package/dist/providers/anime/animesama.js.map +1 -0
  109. package/dist/providers/anime/animesaturn.d.ts +32 -0
  110. package/dist/providers/anime/animesaturn.js +298 -0
  111. package/dist/providers/anime/animesaturn.js.map +1 -0
  112. package/dist/providers/anime/animeunity.d.ts +27 -0
  113. package/dist/providers/anime/animeunity.js +157 -0
  114. package/dist/providers/anime/animeunity.js.map +1 -0
  115. package/dist/providers/anime/hianime.d.ts +150 -0
  116. package/dist/providers/anime/hianime.js +825 -0
  117. package/dist/providers/anime/hianime.js.map +1 -0
  118. package/dist/providers/anime/index.d.ts +17 -0
  119. package/dist/providers/anime/index.js +22 -0
  120. package/dist/providers/anime/index.js.map +1 -0
  121. package/dist/providers/anime/kickassanime.d.ts +65 -0
  122. package/dist/providers/anime/kickassanime.js +582 -0
  123. package/dist/providers/anime/kickassanime.js.map +1 -0
  124. package/dist/providers/books/index.d.ts +2 -0
  125. package/dist/providers/books/index.js +4 -0
  126. package/dist/providers/books/index.js.map +1 -0
  127. package/dist/providers/comics/getComics.d.ts +9 -0
  128. package/dist/providers/comics/getComics.js +54 -0
  129. package/dist/providers/comics/getComics.js.map +1 -0
  130. package/dist/providers/comics/index.d.ts +5 -0
  131. package/dist/providers/comics/index.js +8 -0
  132. package/dist/providers/comics/index.js.map +1 -0
  133. package/dist/providers/index.d.ts +9 -0
  134. package/dist/providers/index.js +23 -0
  135. package/dist/providers/index.js.map +1 -0
  136. package/dist/providers/light-novels/index.d.ts +5 -0
  137. package/dist/providers/light-novels/index.js +8 -0
  138. package/dist/providers/light-novels/index.js.map +1 -0
  139. package/dist/providers/light-novels/novelupdates.d.ts +26 -0
  140. package/dist/providers/light-novels/novelupdates.js +155 -0
  141. package/dist/providers/light-novels/novelupdates.js.map +1 -0
  142. package/dist/providers/manga/asurascans.d.ts +16 -0
  143. package/dist/providers/manga/asurascans.js +143 -0
  144. package/dist/providers/manga/asurascans.js.map +1 -0
  145. package/dist/providers/manga/comick.d.ts +36 -0
  146. package/dist/providers/manga/comick.js +141 -0
  147. package/dist/providers/manga/comick.js.map +1 -0
  148. package/dist/providers/manga/comix.d.ts +36 -0
  149. package/dist/providers/manga/comix.js +265 -0
  150. package/dist/providers/manga/comix.js.map +1 -0
  151. package/dist/providers/manga/index.d.ts +21 -0
  152. package/dist/providers/manga/index.js +26 -0
  153. package/dist/providers/manga/index.js.map +1 -0
  154. package/dist/providers/manga/mangadex.d.ts +26 -0
  155. package/dist/providers/manga/mangadex.js +301 -0
  156. package/dist/providers/manga/mangadex.js.map +1 -0
  157. package/dist/providers/manga/mangahere.d.ts +29 -0
  158. package/dist/providers/manga/mangahere.js +376 -0
  159. package/dist/providers/manga/mangahere.js.map +1 -0
  160. package/dist/providers/manga/mangakakalot.d.ts +56 -0
  161. package/dist/providers/manga/mangakakalot.js +461 -0
  162. package/dist/providers/manga/mangakakalot.js.map +1 -0
  163. package/dist/providers/manga/mangapill.d.ts +15 -0
  164. package/dist/providers/manga/mangapill.js +104 -0
  165. package/dist/providers/manga/mangapill.js.map +1 -0
  166. package/dist/providers/manga/mangareader.d.ts +15 -0
  167. package/dist/providers/manga/mangareader.js +110 -0
  168. package/dist/providers/manga/mangareader.js.map +1 -0
  169. package/dist/providers/manga/weebcentral.d.ts +12 -0
  170. package/dist/providers/manga/weebcentral.js +169 -0
  171. package/dist/providers/manga/weebcentral.js.map +1 -0
  172. package/dist/providers/meta/anilist.d.ts +206 -0
  173. package/dist/providers/meta/anilist.js +2025 -0
  174. package/dist/providers/meta/anilist.js.map +1 -0
  175. package/dist/providers/meta/index.d.ts +9 -0
  176. package/dist/providers/meta/index.js +10 -0
  177. package/dist/providers/meta/index.js.map +1 -0
  178. package/dist/providers/meta/mal.d.ts +39 -0
  179. package/dist/providers/meta/mal.js +529 -0
  180. package/dist/providers/meta/mal.js.map +1 -0
  181. package/dist/providers/meta/tmdb.d.ts +48 -0
  182. package/dist/providers/meta/tmdb.js +364 -0
  183. package/dist/providers/meta/tmdb.js.map +1 -0
  184. package/dist/providers/movies/dramacool.d.ts +98 -0
  185. package/dist/providers/movies/dramacool.js +367 -0
  186. package/dist/providers/movies/dramacool.js.map +1 -0
  187. package/dist/providers/movies/flixhq.d.ts +90 -0
  188. package/dist/providers/movies/flixhq.js +438 -0
  189. package/dist/providers/movies/flixhq.js.map +1 -0
  190. package/dist/providers/movies/goku.d.ts +80 -0
  191. package/dist/providers/movies/goku.js +369 -0
  192. package/dist/providers/movies/goku.js.map +1 -0
  193. package/dist/providers/movies/himovies.d.ts +102 -0
  194. package/dist/providers/movies/himovies.js +445 -0
  195. package/dist/providers/movies/himovies.js.map +1 -0
  196. package/dist/providers/movies/index.d.ts +17 -0
  197. package/dist/providers/movies/index.js +22 -0
  198. package/dist/providers/movies/index.js.map +1 -0
  199. package/dist/providers/movies/netmirror.d.ts +27 -0
  200. package/dist/providers/movies/netmirror.js +259 -0
  201. package/dist/providers/movies/netmirror.js.map +1 -0
  202. package/dist/providers/movies/sflix.d.ts +106 -0
  203. package/dist/providers/movies/sflix.js +490 -0
  204. package/dist/providers/movies/sflix.js.map +1 -0
  205. package/dist/providers/movies/turkish123.d.ts +32 -0
  206. package/dist/providers/movies/turkish123.js +141 -0
  207. package/dist/providers/movies/turkish123.js.map +1 -0
  208. package/dist/providers/news/animenewsnetwork.d.ts +30 -0
  209. package/dist/providers/news/animenewsnetwork.js +105 -0
  210. package/dist/providers/news/animenewsnetwork.js.map +1 -0
  211. package/dist/providers/news/index.d.ts +5 -0
  212. package/dist/providers/news/index.js +8 -0
  213. package/dist/providers/news/index.js.map +1 -0
  214. package/dist/providers/others/index.d.ts +0 -0
  215. package/dist/providers/others/index.js +2 -0
  216. package/dist/providers/others/index.js.map +1 -0
  217. package/dist/utils/index.d.ts +3 -0
  218. package/dist/utils/index.js +33 -0
  219. package/dist/utils/index.js.map +1 -0
  220. package/dist/utils/providers-list.d.ts +11 -0
  221. package/dist/utils/providers-list.js +40 -0
  222. package/dist/utils/providers-list.js.map +1 -0
  223. package/dist/utils/queries.d.ts +13 -0
  224. package/dist/utils/queries.js +31 -0
  225. package/dist/utils/queries.js.map +1 -0
  226. package/dist/utils/utils.d.ts +32 -0
  227. package/dist/utils/utils.js +324 -0
  228. package/dist/utils/utils.js.map +1 -0
  229. package/package.json +107 -0
@@ -0,0 +1,582 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const models_1 = require("../../models");
37
+ const crypto = __importStar(require("crypto"));
38
+ class KickAssAnime extends models_1.AnimeParser {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.name = 'KickAssAnime';
42
+ this.baseUrl = 'https://kickass-anime.ro';
43
+ this.logo = 'https://kickass-anime.ro/img/logo.png';
44
+ this.classPath = 'ANIME.KickAssAnime';
45
+ /**
46
+ * Search for anime
47
+ * @param query Search query string
48
+ * @param page Page number (default: 1)
49
+ * @returns Promise<ISearch<IAnimeResult>>
50
+ */
51
+ this.search = async (query, page = 1) => {
52
+ try {
53
+ const searchUrl = `${this.baseUrl}/api/fsearch`;
54
+ const headers = this.getHeaders(this.baseUrl, 'search');
55
+ const response = await this.client.post(searchUrl, {
56
+ page: page,
57
+ query: query,
58
+ }, {
59
+ headers,
60
+ timeout: 10000,
61
+ });
62
+ const searchResults = response.data.result.map((anime) => {
63
+ var _a, _b;
64
+ return ({
65
+ id: anime.slug,
66
+ title: anime.title,
67
+ url: anime.watch_uri ? `${this.baseUrl}${anime.watch_uri}` : `${this.baseUrl}/${anime.slug}`,
68
+ image: anime.poster
69
+ ? `${this.baseUrl}/image/${anime.poster.hq}.${anime.poster.formats[0]}`
70
+ : undefined,
71
+ releaseDate: (_a = anime.year) === null || _a === void 0 ? void 0 : _a.toString(),
72
+ subOrDub: ((_b = anime.locales) === null || _b === void 0 ? void 0 : _b.includes('en-US')) ? models_1.SubOrSub.DUB : models_1.SubOrSub.SUB,
73
+ status: this.mapStatus(anime.status),
74
+ otherName: anime.title_en,
75
+ totalEpisodes: anime.episode_count,
76
+ });
77
+ });
78
+ return {
79
+ currentPage: page,
80
+ hasNextPage: page < response.data.maxPage,
81
+ totalPages: response.data.maxPage,
82
+ results: searchResults,
83
+ };
84
+ }
85
+ catch (err) {
86
+ throw new Error(err.message);
87
+ }
88
+ };
89
+ /**
90
+ * Fetch detailed anime information
91
+ * @param id Anime slug/id (e.g., 'naruto-f3cf')
92
+ * @returns Promise<IAnimeInfo>
93
+ */
94
+ this.fetchAnimeInfo = async (id) => {
95
+ var _a, _b, _c;
96
+ try {
97
+ const headers = this.getHeaders(this.baseUrl);
98
+ // Get anime info
99
+ const infoResponse = await this.client.get(`${this.baseUrl}/api/show/${id}`, {
100
+ headers,
101
+ timeout: 10000,
102
+ });
103
+ const animeData = infoResponse.data;
104
+ // Get episodes
105
+ const episodesResponse = await this.client.get(`${this.baseUrl}/api/show/${id}/episodes?page=1&lang=ja-JP`, {
106
+ headers,
107
+ timeout: 10000,
108
+ });
109
+ const episodes = episodesResponse.data.result.map((ep) => ({
110
+ id: `${id}/episode/ep-${Math.floor(ep.episode_number)}-${ep.slug}`,
111
+ title: ep.title,
112
+ number: Math.floor(ep.episode_number),
113
+ image: ep.thumbnail
114
+ ? `${this.baseUrl}/image/${ep.thumbnail.hq}.${ep.thumbnail.formats[0]}`
115
+ : undefined,
116
+ url: `${this.baseUrl}/api/show/${id}/episode/ep-${Math.floor(ep.episode_number)}-${ep.slug}`,
117
+ }));
118
+ return {
119
+ id: animeData.slug,
120
+ title: animeData.title_en || animeData.title,
121
+ url: `${this.baseUrl}/${animeData.slug}`,
122
+ genres: animeData.genres || [],
123
+ totalEpisodes: episodes.length,
124
+ image: animeData.poster
125
+ ? `${this.baseUrl}/image/${animeData.poster.hq}.${animeData.poster.formats[0]}`
126
+ : undefined,
127
+ cover: animeData.banner
128
+ ? `${this.baseUrl}/image/${animeData.banner.hq}.${animeData.banner.formats[0]}`
129
+ : undefined,
130
+ description: animeData.synopsis,
131
+ episodes: episodes,
132
+ subOrDub: ((_a = animeData.locales) === null || _a === void 0 ? void 0 : _a.includes('en-US')) ? models_1.SubOrSub.DUB : models_1.SubOrSub.SUB,
133
+ type: (_b = animeData.type) === null || _b === void 0 ? void 0 : _b.toUpperCase(),
134
+ status: this.mapStatus(animeData.status),
135
+ otherName: animeData.title_original,
136
+ releaseDate: (_c = animeData.year) === null || _c === void 0 ? void 0 : _c.toString(),
137
+ };
138
+ }
139
+ catch (err) {
140
+ throw new Error(err.message);
141
+ }
142
+ };
143
+ /**
144
+ * Fetch episode video sources and subtitles
145
+ * @param episodeId Episode path (e.g., 'naruto-f3cf/episode/ep-1-12cd96')
146
+ * @param server Optional server name to filter (e.g., StreamingServers.VidStreaming, StreamingServers.BirdStream)
147
+ * @returns Promise<ISource>
148
+ */
149
+ this.fetchEpisodeSources = async (episodeId, server) => {
150
+ try {
151
+ const headers = this.getHeaders(this.baseUrl);
152
+ const episodeUrl = `${this.baseUrl}/api/show/${episodeId}`;
153
+ const response = await this.client.get(episodeUrl, {
154
+ headers,
155
+ timeout: 10000,
156
+ });
157
+ const servers = response.data.servers || [];
158
+ const sources = [];
159
+ const subtitles = [];
160
+ // Filter servers if specific server requested
161
+ const targetServers = server
162
+ ? servers.filter((s) => s.name.toLowerCase().includes(server.toLowerCase()))
163
+ : servers;
164
+ if (server && targetServers.length === 0) {
165
+ throw new Error(`Server "${server}" not found`);
166
+ }
167
+ for (const serverData of targetServers) {
168
+ try {
169
+ const serverSources = await this.extractFromServer(serverData.src, serverData.name, headers);
170
+ sources.push(...serverSources.sources);
171
+ subtitles.push(...serverSources.subtitles);
172
+ }
173
+ catch (error) {
174
+ // Silent fail, continue with other servers
175
+ }
176
+ }
177
+ return {
178
+ sources: sources,
179
+ subtitles: subtitles,
180
+ headers: {
181
+ Referer: episodeUrl,
182
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0',
183
+ },
184
+ };
185
+ }
186
+ catch (err) {
187
+ throw new Error(err.message);
188
+ }
189
+ };
190
+ /**
191
+ * Fetch available servers for an episode
192
+ * @param episodeId Episode path (e.g., 'naruto-f3cf/episode/ep-1-12cd96')
193
+ * @returns Promise<IEpisodeServer[]>
194
+ */
195
+ this.fetchEpisodeServers = async (episodeId) => {
196
+ try {
197
+ const headers = this.getHeaders(this.baseUrl);
198
+ const episodeUrl = `${this.baseUrl}/api/show/${episodeId}`;
199
+ const response = await this.client.get(episodeUrl, {
200
+ headers,
201
+ timeout: 10000,
202
+ });
203
+ const servers = response.data.servers || [];
204
+ return servers.map((server) => ({
205
+ name: server.name,
206
+ url: server.src,
207
+ }));
208
+ }
209
+ catch (err) {
210
+ throw new Error(err.message);
211
+ }
212
+ };
213
+ }
214
+ /**
215
+ * Get HTTP headers for requests
216
+ * @param host The host URL
217
+ * @param endpoint The endpoint type (optional)
218
+ * @returns Object containing HTTP headers
219
+ */
220
+ getHeaders(host, endpoint = '') {
221
+ const baseHeaders = {
222
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
223
+ Accept: 'application/json, text/plain, */*',
224
+ Host: new URL(host).host,
225
+ };
226
+ if (endpoint === 'search') {
227
+ return {
228
+ ...baseHeaders,
229
+ 'Content-Type': 'application/json',
230
+ Referer: `${host}/anime`,
231
+ };
232
+ }
233
+ return baseHeaders;
234
+ }
235
+ /**
236
+ * Map anime status string to MediaStatus enum
237
+ * @param status The status string from API
238
+ * @returns MediaStatus enum value
239
+ */
240
+ mapStatus(status) {
241
+ switch (status) {
242
+ case 'finished_airing':
243
+ return models_1.MediaStatus.COMPLETED;
244
+ case 'currently_airing':
245
+ return models_1.MediaStatus.ONGOING;
246
+ case 'not_yet_aired':
247
+ return models_1.MediaStatus.NOT_YET_AIRED;
248
+ default:
249
+ return models_1.MediaStatus.UNKNOWN;
250
+ }
251
+ }
252
+ // Decryption shi is here
253
+ async extractFromServer(url, serverName, requestHeaders) {
254
+ const sources = [];
255
+ const subtitles = [];
256
+ // Check if it's a cat-player URL (new format)
257
+ if (url.includes('/cat-player/')) {
258
+ return await this.extractCatBirdStream(url, serverName, requestHeaders);
259
+ }
260
+ // Legacy vidstreaming URLs
261
+ if (serverName.includes(models_1.StreamingServers.VidStreaming) ||
262
+ serverName.includes(models_1.StreamingServers.DuckStream)) {
263
+ return await this.extractEncryptedServer(url, serverName, requestHeaders);
264
+ }
265
+ if (serverName.includes(models_1.StreamingServers.BirdStream) || serverName.includes('CatStream')) {
266
+ return await this.extractCatBirdStream(url, serverName, requestHeaders);
267
+ }
268
+ // Fallback for other servers
269
+ sources.push({
270
+ url: url,
271
+ quality: '1080p',
272
+ isM3U8: true,
273
+ });
274
+ return { sources, subtitles };
275
+ }
276
+ async extractCatBirdStream(url, serverName, requestHeaders) {
277
+ const headers = {
278
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0',
279
+ Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
280
+ 'Accept-Language': 'en-US,en;q=0.5',
281
+ Referer: 'https://kaa.mx/',
282
+ DNT: '1',
283
+ 'Sec-GPC': '1',
284
+ Connection: 'keep-alive',
285
+ 'Upgrade-Insecure-Requests': '1',
286
+ 'Sec-Fetch-Dest': 'document',
287
+ 'Sec-Fetch-Mode': 'navigate',
288
+ 'Sec-Fetch-Site': 'cross-site',
289
+ Host: new URL(url).host,
290
+ };
291
+ try {
292
+ const response = await this.client.get(url, { headers, timeout: 15000 });
293
+ const html = response.data;
294
+ // Extract props JSON from HTML
295
+ const propsMatch = html.match(/props="([^"]+)"/);
296
+ if (!propsMatch)
297
+ throw new Error('Could not find props in HTML');
298
+ // Decode HTML entities
299
+ const encodedJson = propsMatch[1];
300
+ const unescapedJson = this.decodeHtmlEntities(encodedJson);
301
+ const jsonData = JSON.parse(unescapedJson);
302
+ const sources = [];
303
+ const subtitles = [];
304
+ // Extract video URL
305
+ if (jsonData.manifest && jsonData.manifest[1]) {
306
+ let videoUrl = jsonData.manifest[1];
307
+ // Fix URL formatting
308
+ if (videoUrl.startsWith('//')) {
309
+ videoUrl = 'https:' + videoUrl;
310
+ }
311
+ else if (!videoUrl.startsWith('http')) {
312
+ videoUrl = 'https://' + videoUrl;
313
+ }
314
+ // Determine quality from video data if available
315
+ let quality = '1080p';
316
+ if (jsonData.quality) {
317
+ quality = jsonData.quality;
318
+ }
319
+ else if (videoUrl.includes('1080')) {
320
+ quality = '1080p';
321
+ }
322
+ else if (videoUrl.includes('720')) {
323
+ quality = '720p';
324
+ }
325
+ else if (videoUrl.includes('480')) {
326
+ quality = '480p';
327
+ }
328
+ sources.push({
329
+ url: videoUrl,
330
+ quality: quality,
331
+ isM3U8: videoUrl.includes('.m3u8') || jsonData.hls,
332
+ });
333
+ // Extract additional qualities if available
334
+ if (jsonData.qualities && Array.isArray(jsonData.qualities)) {
335
+ for (const qualityData of jsonData.qualities) {
336
+ if (qualityData.url && qualityData.quality) {
337
+ let qualityUrl = qualityData.url;
338
+ if (qualityUrl.startsWith('//')) {
339
+ qualityUrl = 'https:' + qualityUrl;
340
+ }
341
+ sources.push({
342
+ url: qualityUrl,
343
+ quality: qualityData.quality,
344
+ isM3U8: qualityUrl.includes('.m3u8'),
345
+ });
346
+ }
347
+ }
348
+ }
349
+ }
350
+ // Extract subtitles
351
+ if (jsonData.subtitles && jsonData.subtitles[1]) {
352
+ const subtitleArray = jsonData.subtitles[1];
353
+ for (let i = 0; i < subtitleArray.length; i++) {
354
+ const sub = subtitleArray[i][1];
355
+ if (sub && sub.src && sub.src[1] && sub.name && sub.name[1]) {
356
+ subtitles.push({
357
+ url: sub.src[1],
358
+ lang: sub.name[1],
359
+ });
360
+ }
361
+ }
362
+ }
363
+ return { sources, subtitles };
364
+ }
365
+ catch (error) {
366
+ throw error;
367
+ }
368
+ }
369
+ decodeHtmlEntities(text) {
370
+ const entities = {
371
+ '&amp;': '&',
372
+ '&lt;': '<',
373
+ '&gt;': '>',
374
+ '&quot;': '"',
375
+ '&#39;': "'",
376
+ '&#x27;': "'",
377
+ '&#x2F;': '/',
378
+ '&#x60;': '`',
379
+ '&#x3D;': '=',
380
+ };
381
+ return text.replace(/&[#\w]+;/g, entity => {
382
+ return entities[entity] || entity;
383
+ });
384
+ }
385
+ async extractEncryptedServer(url, serverName, requestHeaders) {
386
+ const host = new URL(url).hostname;
387
+ const mid = serverName === 'DuckStream' ? 'mid' : 'id';
388
+ const isBird = serverName === 'BirdStream';
389
+ const query = new URL(url).searchParams.get(mid);
390
+ if (!query)
391
+ throw new Error('No query parameter found');
392
+ // Special headers for krussdomi.com
393
+ const specialHeaders = {
394
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0',
395
+ Accept: 'application/json, text/plain, */*',
396
+ 'Accept-Language': 'en-US,en;q=0.5',
397
+ 'Accept-Encoding': 'gzip, deflate, br, zstd',
398
+ Referer: url,
399
+ DNT: '1',
400
+ 'Sec-GPC': '1',
401
+ Connection: 'keep-alive',
402
+ 'Sec-Fetch-Dest': 'empty',
403
+ 'Sec-Fetch-Mode': 'cors',
404
+ 'Sec-Fetch-Site': 'same-origin',
405
+ TE: 'trailers',
406
+ Host: host,
407
+ 'X-Origin': 'kaa.mx',
408
+ 'x-timezone': '-330',
409
+ 'x-client-ts': Date.now().toString(),
410
+ };
411
+ // Get the HTML page
412
+ const htmlResponse = await this.client.get(url, { headers: specialHeaders });
413
+ const html = htmlResponse.data;
414
+ // Get encryption key based on server
415
+ const key = this.getServerKey(serverName);
416
+ if (!key)
417
+ throw new Error('Unknown server type');
418
+ // Extract CID from HTML
419
+ const cidMatch = html.match(/cid:\s*'([^']+)'/);
420
+ if (!cidMatch)
421
+ throw new Error('Could not find CID in HTML');
422
+ const cidHex = cidMatch[1];
423
+ const cidBytes = this.hexToBytes(cidHex);
424
+ const cidString = new TextDecoder().decode(cidBytes);
425
+ const cid = cidString.split('|');
426
+ const timestamp = Math.floor(Date.now() / 1000) + 60;
427
+ const route = cid[1].replace('player.php', 'source.php');
428
+ // Build signature string exactly like your approach
429
+ const signatureData = [
430
+ cid[0], // IP
431
+ specialHeaders['User-Agent'],
432
+ route,
433
+ query,
434
+ timestamp,
435
+ new TextDecoder().decode(key),
436
+ ].join('');
437
+ const signature = this.sha1(signatureData);
438
+ // Build source URL
439
+ const sourceUrl = `https://${host}${route}?${mid}=${query}&e=${timestamp}&s=${signature}`;
440
+ // Get encrypted response
441
+ const sourceResponse = await this.client.get(sourceUrl, {
442
+ headers: specialHeaders,
443
+ });
444
+ // Parse encrypted data
445
+ const encryptedMatch = sourceResponse.data.match(/:"([^"]+)"/);
446
+ if (!encryptedMatch)
447
+ throw new Error('Could not find encrypted data');
448
+ const [encryptedData, ivHex] = encryptedMatch[1].replace(/\\/g, '').split(':');
449
+ const iv = this.hexToBytes(ivHex);
450
+ // Decrypt using your approach
451
+ try {
452
+ const decryptedData = this.decryptAES(encryptedData, new TextDecoder().decode(key), iv);
453
+ const videoData = JSON.parse(decryptedData);
454
+ const sources = [];
455
+ const subtitles = [];
456
+ // Extract video URLs with multiple Qualities if available
457
+ const videoUrls = [];
458
+ if (videoData.playlistUrl) {
459
+ let cleanUrl = videoData.playlistUrl;
460
+ // Fix double https: issue
461
+ if (cleanUrl.startsWith('https:https://')) {
462
+ cleanUrl = cleanUrl.replace('https:https://', 'https://');
463
+ }
464
+ else if (cleanUrl.startsWith('https:////')) {
465
+ cleanUrl = cleanUrl.replace('https:////', 'https://');
466
+ }
467
+ else if (cleanUrl.startsWith('https://')) {
468
+ // Already correct
469
+ }
470
+ else if (cleanUrl.startsWith('//')) {
471
+ cleanUrl = 'https:' + cleanUrl;
472
+ }
473
+ videoUrls.push({
474
+ url: cleanUrl,
475
+ quality: videoData.quality || '1080p',
476
+ isM3U8: videoData.hls ? true : false,
477
+ });
478
+ }
479
+ if (videoData.hls) {
480
+ let cleanUrl = videoData.hls;
481
+ // Fix double https: issue
482
+ if (cleanUrl.startsWith('https:https://')) {
483
+ cleanUrl = cleanUrl.replace('https:https://', 'https://');
484
+ }
485
+ videoUrls.push({
486
+ url: cleanUrl,
487
+ quality: videoData.quality || '1080p',
488
+ isM3U8: true,
489
+ });
490
+ }
491
+ // Extract multiple quality sources if available
492
+ if (videoData.sources && Array.isArray(videoData.sources)) {
493
+ for (const source of videoData.sources) {
494
+ if (source.file || source.url) {
495
+ let sourceUrl = source.file || source.url;
496
+ if (sourceUrl.startsWith('//')) {
497
+ sourceUrl = 'https:' + sourceUrl;
498
+ }
499
+ videoUrls.push({
500
+ url: sourceUrl,
501
+ quality: source.label || source.quality || 'auto',
502
+ isM3U8: sourceUrl.includes('.m3u8'),
503
+ });
504
+ }
505
+ }
506
+ }
507
+ sources.push(...videoUrls);
508
+ // Extract subtitles
509
+ if (videoData.subtitles) {
510
+ for (const sub of videoData.subtitles) {
511
+ let subUrl = sub.src;
512
+ if (subUrl.startsWith('//')) {
513
+ subUrl = 'https:' + subUrl;
514
+ }
515
+ else if (subUrl.startsWith('/')) {
516
+ subUrl = `https://${host}${subUrl}`;
517
+ }
518
+ subtitles.push({
519
+ url: subUrl,
520
+ lang: `${sub.name} (${sub.language})`,
521
+ });
522
+ }
523
+ }
524
+ return { sources, subtitles };
525
+ }
526
+ catch (error) {
527
+ throw new Error(`Failed to decrypt video data: ${error}`);
528
+ }
529
+ }
530
+ /**
531
+ * Get decryption key for specific server
532
+ * @param serverName Name of the server
533
+ * @returns Uint8Array key or null if not found
534
+ */
535
+ getServerKey(serverName) {
536
+ switch (serverName) {
537
+ case models_1.StreamingServers.VidStreaming:
538
+ case 'VidStreaming':
539
+ return new TextEncoder().encode('e13d38099bf562e8b9851a652d2043d3');
540
+ case models_1.StreamingServers.DuckStream:
541
+ case 'DuckStream':
542
+ return new TextEncoder().encode('4504447b74641ad972980a6b8ffd7631');
543
+ case models_1.StreamingServers.BirdStream:
544
+ case 'BirdStream':
545
+ return new TextEncoder().encode('4b14d0ff625163e3c9c7a47926484bf2');
546
+ default:
547
+ return null;
548
+ }
549
+ }
550
+ /**
551
+ * Convert hexadecimal string to Uint8Array
552
+ * @param hex Hexadecimal string
553
+ * @returns Uint8Array representation
554
+ */
555
+ hexToBytes(hex) {
556
+ const bytes = new Uint8Array(hex.length / 2);
557
+ for (let i = 0; i < hex.length; i += 2) {
558
+ bytes[i / 2] = parseInt(hex.substr(i, 2), 16);
559
+ }
560
+ return bytes;
561
+ }
562
+ sha1(str) {
563
+ return crypto.createHash('sha1').update(str).digest('hex');
564
+ }
565
+ decryptAES(encryptedData, key, iv) {
566
+ try {
567
+ const keyBuffer = Buffer.from(key, 'utf8');
568
+ const ivBuffer = Buffer.from(iv);
569
+ const encryptedBuffer = Buffer.from(encryptedData, 'base64');
570
+ const decipher = crypto.createDecipheriv('aes-256-cbc', keyBuffer, ivBuffer);
571
+ decipher.setAutoPadding(true);
572
+ let decrypted = decipher.update(encryptedBuffer);
573
+ decrypted = Buffer.concat([decrypted, decipher.final()]);
574
+ return decrypted.toString('utf8');
575
+ }
576
+ catch (error) {
577
+ throw new Error(`AES decryption failed: ${error}`);
578
+ }
579
+ }
580
+ }
581
+ exports.default = KickAssAnime;
582
+ //# sourceMappingURL=kickassanime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kickassanime.js","sourceRoot":"","sources":["../../../src/providers/anime/kickassanime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: {};
2
+ export default _default;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {};
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/books/index.ts"],"names":[],"mappings":";;AAAA,kBAAe,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ComicParser, ComicRes } from '../../models';
2
+ declare class getComics extends ComicParser {
3
+ readonly baseUrl = "https://getcomics.info/";
4
+ readonly name = "GetComics";
5
+ readonly logo = "https://i0.wp.com/getcomics.info/share/uploads/2020/04/cropped-GetComics-Favicon.png?fit=192%2C192&ssl=1";
6
+ readonly classPath = "COMICS.GetComics";
7
+ search: (query: string, page?: number | undefined) => Promise<ComicRes>;
8
+ }
9
+ export default getComics;