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
package/README.md ADDED
@@ -0,0 +1,245 @@
1
+ <p align="center">
2
+ <img src="./animb.png" alt="Animob Logo" width="200" style="border-radius: 50%;"/>
3
+ </p>
4
+
5
+ <h1 align="center">Animob</h1>
6
+
7
+ <p align="center">
8
+ A Node.js library for streaming anime, reading manga, and accessing anime/manga metadata through multiple providers.
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/animob">
13
+ <img src="https://img.shields.io/npm/v/animob" alt="npm version">
14
+ </a>
15
+ <a href="./LICENSE">
16
+ <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License">
17
+ </a>
18
+ </p>
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ npm install animob
24
+ ```
25
+
26
+ or
27
+
28
+ ```bash
29
+ yarn add animob
30
+ ```
31
+
32
+ ## Quick Start
33
+
34
+ ### Anime Streaming
35
+
36
+ ```typescript
37
+ import { ANIME } from 'animob';
38
+
39
+ // Search for anime
40
+ const animePahe = new ANIME.AnimePahe();
41
+ const results = await animePahe.search('Naruto');
42
+ console.log(results);
43
+
44
+ // Get anime details
45
+ const info = await animePahe.fetchAnimeInfo(results.results[0].id);
46
+ console.log(info);
47
+
48
+ // Get episode sources
49
+ const sources = await animePahe.fetchEpisodeSources(info.episodes[0].id);
50
+ console.log(sources);
51
+ ```
52
+
53
+ ### Manga Reading
54
+
55
+ ```typescript
56
+ import { MANGA } from 'animob';
57
+
58
+ // Search for manga
59
+ const mangadex = new MANGA.MangaDex();
60
+ const results = await mangadex.search('One Piece');
61
+ console.log(results);
62
+
63
+ // Get manga details
64
+ const info = await mangadex.fetchMangaInfo(results.results[0].id);
65
+ console.log(info);
66
+
67
+ // Get chapter pages
68
+ const pages = await mangadex.fetchChapterPages(info.chapters[0].id);
69
+ console.log(pages);
70
+ ```
71
+
72
+ ### Anime/Manga Metadata
73
+
74
+ ```typescript
75
+ import { META } from 'animob';
76
+
77
+ // Search anime/manga database
78
+ const anilist = new META.Anilist();
79
+ const results = await anilist.search('Demon Slayer');
80
+ console.log(results);
81
+
82
+ // Get detailed information
83
+ const info = await anilist.fetchAnimeInfo(results.results[0].id);
84
+ console.log(info);
85
+ ```
86
+
87
+ ## Available Providers
88
+
89
+ ### Anime
90
+ - `AnimePahe` - Anime streaming with multiple quality options
91
+ - `Hianime` - High-quality anime streaming (uses anizen.tr mirror)
92
+ - `AnimeSaturn` - Italian anime provider with global access
93
+ - `AnimeKai` - Anime streaming provider
94
+ - `KickAssAnime` - Anime streaming with various sources
95
+ - `AnimeUnity` - Italian anime streaming
96
+ - `AnimeSama` - French anime streaming
97
+
98
+ ### Manga
99
+ - `MangaDex` - Official manga reading platform
100
+ - `MangaKakalot` - Popular manga provider
101
+ - `MangaPill` - Manga reading with multiple sources
102
+ - `MangaReader` - Extensive manga library
103
+ - `Comick` - Comic and manga provider
104
+ - `AsuraScans` - Scanlation group provider
105
+ - `WeebCentral` - Manga aggregator
106
+ - `MangaHere` - Manga reading platform
107
+
108
+ ### Movies & TV
109
+ - `FlixHQ` - Movies and TV shows
110
+ - `DramaCool` - Asian dramas
111
+ - `Goku` - Movie streaming
112
+ - `SFlix` - Movies and series
113
+
114
+ ### Metadata
115
+ - `Anilist` - Comprehensive anime/manga database
116
+ - `MAL` - MyAnimeList integration
117
+ - `TMDB` - The Movie Database
118
+
119
+ ## Usage Examples
120
+
121
+ ### Get Trending Anime
122
+
123
+ ```typescript
124
+ import { META } from 'animob';
125
+
126
+ const anilist = new META.Anilist();
127
+ const trending = await anilist.fetchTrendingAnime();
128
+ console.log(trending);
129
+ ```
130
+
131
+ ### Stream Anime Episode
132
+
133
+ ```typescript
134
+ import { ANIME } from 'animob';
135
+
136
+ const hianime = new ANIME.Hianime();
137
+
138
+ // Search
139
+ const search = await hianime.search('One Piece');
140
+
141
+ // Get info
142
+ const info = await hianime.fetchAnimeInfo(search.results[0].id);
143
+
144
+ // Get episode sources
145
+ const episode = info.episodes[0];
146
+ const sources = await hianime.fetchEpisodeSources(episode.id);
147
+
148
+ console.log('Stream URL:', sources.sources[0].url);
149
+ ```
150
+
151
+ ### Read Manga Chapter
152
+
153
+ ```typescript
154
+ import { MANGA } from 'animob';
155
+
156
+ const mangadex = new MANGA.MangaDex();
157
+
158
+ // Search
159
+ const search = await mangadex.search('Solo Leveling');
160
+
161
+ // Get info
162
+ const info = await mangadex.fetchMangaInfo(search.results[0].id);
163
+
164
+ // Get chapter pages
165
+ const chapter = info.chapters[0];
166
+ const pages = await mangadex.fetchChapterPages(chapter.id);
167
+
168
+ console.log('Pages:', pages);
169
+ ```
170
+
171
+ ## Provider Status
172
+
173
+ ### Verified Working
174
+ - ✅ AnimePahe
175
+ - ✅ Hianime (anizen.tr)
176
+ - ✅ AnimeSaturn
177
+ - ✅ MangaDex
178
+ - ✅ Anilist
179
+
180
+ ### Other Providers
181
+ Other providers are included but may have varying reliability depending on your location and network.
182
+
183
+ ## Building from Source
184
+
185
+ ```bash
186
+ # Clone the repository
187
+ git clone https://github.com/yourusername/animob.git
188
+ cd animob
189
+
190
+ # Install dependencies
191
+ npm install
192
+
193
+ # Build
194
+ npm run build
195
+
196
+ # Run tests
197
+ npm test
198
+ ```
199
+
200
+ ## API Reference
201
+
202
+ ### Common Methods
203
+
204
+ All providers implement these base methods:
205
+
206
+ #### Anime Providers
207
+ - `search(query: string)` - Search for anime
208
+ - `fetchAnimeInfo(id: string)` - Get anime details
209
+ - `fetchEpisodeSources(episodeId: string)` - Get streaming sources
210
+
211
+ #### Manga Providers
212
+ - `search(query: string)` - Search for manga
213
+ - `fetchMangaInfo(id: string)` - Get manga details
214
+ - `fetchChapterPages(chapterId: string)` - Get chapter pages
215
+
216
+ #### Meta Providers
217
+ - `search(query: string)` - Search database
218
+ - `fetchAnimeInfo(id: string)` - Get anime information
219
+ - `fetchMangaInfo(id: string)` - Get manga information
220
+
221
+ ## TypeScript Support
222
+
223
+ Animob is written in TypeScript and includes type definitions out of the box.
224
+
225
+ ```typescript
226
+ import { ANIME, MANGA, META, IAnimeResult, IMangaResult } from 'animob';
227
+
228
+ const results: IAnimeResult[] = await new ANIME.AnimePahe().search('Naruto');
229
+ ```
230
+
231
+ ## Contributing
232
+
233
+ Contributions are welcome! Please feel free to submit issues or pull requests.
234
+
235
+ ## License
236
+
237
+ This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.
238
+
239
+ ## Credits
240
+
241
+ Built on top of [consumet.ts](https://github.com/consumet/consumet.ts) with improvements and verified providers.
242
+
243
+ ## Disclaimer
244
+
245
+ This library is for educational purposes only. Please support official releases and respect copyright laws in your country.
package/animb.png ADDED
Binary file
@@ -0,0 +1,11 @@
1
+ import Kwik from './kwik';
2
+ import MixDrop from './mixdrop';
3
+ import StreamSB from './streamsb';
4
+ import StreamTape from './streamtape';
5
+ import StreamWish from './streamwish';
6
+ import VidCloud from './vidcloud';
7
+ import VideoStr from './videostr';
8
+ import MegaCloud from './megacloud';
9
+ import Voe from './voe';
10
+ import { MegaUp } from './megaup';
11
+ export { Kwik, MixDrop, MegaCloud, StreamSB, StreamTape, StreamWish, VidCloud, VideoStr, Voe, MegaUp };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MegaUp = exports.Voe = exports.VideoStr = exports.VidCloud = exports.StreamWish = exports.StreamTape = exports.StreamSB = exports.MegaCloud = exports.MixDrop = exports.Kwik = void 0;
7
+ const kwik_1 = __importDefault(require("./kwik"));
8
+ exports.Kwik = kwik_1.default;
9
+ const mixdrop_1 = __importDefault(require("./mixdrop"));
10
+ exports.MixDrop = mixdrop_1.default;
11
+ const streamsb_1 = __importDefault(require("./streamsb"));
12
+ exports.StreamSB = streamsb_1.default;
13
+ const streamtape_1 = __importDefault(require("./streamtape"));
14
+ exports.StreamTape = streamtape_1.default;
15
+ const streamwish_1 = __importDefault(require("./streamwish"));
16
+ exports.StreamWish = streamwish_1.default;
17
+ const vidcloud_1 = __importDefault(require("./vidcloud"));
18
+ exports.VidCloud = vidcloud_1.default;
19
+ const videostr_1 = __importDefault(require("./videostr"));
20
+ exports.VideoStr = videostr_1.default;
21
+ const megacloud_1 = __importDefault(require("./megacloud"));
22
+ exports.MegaCloud = megacloud_1.default;
23
+ const voe_1 = __importDefault(require("./voe"));
24
+ exports.Voe = voe_1.default;
25
+ const megaup_1 = require("./megaup");
26
+ Object.defineProperty(exports, "MegaUp", { enumerable: true, get: function () { return megaup_1.MegaUp; } });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extractors/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAWjB,eAXF,cAAI,CAWE;AAVb,wDAAgC;AAUjB,kBAVR,iBAAO,CAUQ;AATtB,0DAAkC;AASC,mBAT5B,kBAAQ,CAS4B;AAR3C,8DAAsC;AAQO,qBARtC,oBAAU,CAQsC;AAPvD,8DAAsC;AAOmB,qBAPlD,oBAAU,CAOkD;AANnE,0DAAkC;AAMmC,mBAN9D,kBAAQ,CAM8D;AAL7E,0DAAkC;AAK6C,mBALxE,kBAAQ,CAKwE;AAJvF,4DAAoC;AAIZ,oBAJjB,mBAAS,CAIiB;AAHjC,gDAAwB;AAGiE,cAHlF,aAAG,CAGkF;AAF5F,qCAAkC;AAE4D,uFAFrF,eAAM,OAEqF"}
@@ -0,0 +1,18 @@
1
+ import { VideoExtractor, IVideo } from '../models';
2
+ declare class Kwik extends VideoExtractor {
3
+ protected serverName: string;
4
+ protected sources: IVideo[];
5
+ private readonly baseUrl;
6
+ private readonly safelinkBaseUrl;
7
+ extract: (videoUrl: URL) => Promise<IVideo[]>;
8
+ bypassShortlink(shortinkUrl: URL): Promise<any>;
9
+ getDirectDownloadLink(downloadUrl: URL): Promise<string | null>;
10
+ /**
11
+ * @param payload - The encrypted string containing delimiters
12
+ * @param key - The custom alphabet string (e.g., "dcnCbMvPQ")
13
+ * @param offset - The integer to subtract from the decoded value (e.g., 14)
14
+ * @param radix - The base of the number system (e.g., 5)
15
+ */
16
+ deobfuscate(payload: string, key: string, offset: number, radix: number): string;
17
+ }
18
+ export default Kwik;
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ const utils_1 = require("../utils/utils");
5
+ class Kwik extends models_1.VideoExtractor {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.serverName = 'kwik';
9
+ this.sources = [];
10
+ this.baseUrl = 'https://animepahe.si/';
11
+ this.safelinkBaseUrl = 'https://pahe.win/';
12
+ this.extract = async (videoUrl) => {
13
+ try {
14
+ const response = await fetch(`${videoUrl.href}`, {
15
+ headers: { Referer: this.baseUrl },
16
+ });
17
+ const data = await response.text();
18
+ const source = (0, utils_1.safeUnpack)(/;(eval)(\(f.*?)(\n<\/script>)/s.exec(data)[2]).match(/https.*?m3u8/);
19
+ this.sources.push({
20
+ url: source[0],
21
+ isM3U8: source[0].includes('.m3u8'),
22
+ });
23
+ return this.sources;
24
+ }
25
+ catch (err) {
26
+ throw new Error(err.message);
27
+ }
28
+ };
29
+ }
30
+ // not best Implementation, but it get MP4
31
+ async bypassShortlink(shortinkUrl) {
32
+ try {
33
+ const response = await fetch(`${shortinkUrl.href}`, {
34
+ headers: { Referer: this.baseUrl },
35
+ });
36
+ const data = await response.text();
37
+ // not the best, but assume the format always like this
38
+ const destination = data.match(`a\\\.redirect\\\"\\\)\\\.attr\\\(\\\"href","(https://[^"]+)`);
39
+ return destination[1];
40
+ }
41
+ catch (err) {
42
+ throw new Error(err.message);
43
+ }
44
+ }
45
+ async getDirectDownloadLink(downloadUrl) {
46
+ var _a;
47
+ try {
48
+ if (downloadUrl.href.match(this.safelinkBaseUrl)) {
49
+ const bypassedUrl = await this.bypassShortlink(downloadUrl);
50
+ downloadUrl = new URL(bypassedUrl);
51
+ }
52
+ const response = await fetch(`${downloadUrl.href}`, {
53
+ headers: { Referer: this.baseUrl },
54
+ });
55
+ const cookie = (_a = response.headers.get('set-cookie')) === null || _a === void 0 ? void 0 : _a.split(';')[0];
56
+ const data = await response.text();
57
+ const obfuscatedParams = data.match(`\\\}\\\("([^"]+)".*?"([^"]+)"\\\s*,\\\s*([^,]+)\\\s*,\\\s*([^,]+)`);
58
+ const formScript = this.deobfuscate(obfuscatedParams[1], obfuscatedParams[2], Number(obfuscatedParams[3]), Number(obfuscatedParams[4]));
59
+ const formActionUrl = formScript.match(/form action="([^"]+)/)[1];
60
+ const postToken = formScript.match(/name="_token" value="([^"]+)/)[1];
61
+ const formData = new URLSearchParams();
62
+ formData.append('_token', postToken);
63
+ const formResponse = await fetch(`${formActionUrl}`, {
64
+ method: 'POST',
65
+ headers: {
66
+ 'Content-Type': 'application/x-www-form-urlencoded',
67
+ Referer: `${downloadUrl.href}`,
68
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
69
+ Cookie: cookie,
70
+ },
71
+ body: formData,
72
+ redirect: 'manual',
73
+ });
74
+ if (formResponse.status === 302) {
75
+ return formResponse.headers.get('location');
76
+ }
77
+ // default to downloadUrl, overkill, but it try to get MP4
78
+ return downloadUrl.href;
79
+ }
80
+ catch (err) {
81
+ return downloadUrl.href;
82
+ }
83
+ }
84
+ /**
85
+ * @param payload - The encrypted string containing delimiters
86
+ * @param key - The custom alphabet string (e.g., "dcnCbMvPQ")
87
+ * @param offset - The integer to subtract from the decoded value (e.g., 14)
88
+ * @param radix - The base of the number system (e.g., 5)
89
+ */
90
+ deobfuscate(payload, key, offset, radix) {
91
+ let result = '';
92
+ const delimiter = key[radix];
93
+ const chunks = payload.split(delimiter);
94
+ const map = {};
95
+ for (let i = 0; i < key.length; i++) {
96
+ map[key[i]] = i;
97
+ }
98
+ for (const chunk of chunks) {
99
+ if (chunk.length === 0)
100
+ continue;
101
+ let val = 0;
102
+ for (let i = 0; i < chunk.length; i++) {
103
+ val = val * radix + map[chunk[i]];
104
+ }
105
+ // Formula application
106
+ result += String.fromCharCode(val - offset);
107
+ }
108
+ try {
109
+ return decodeURIComponent(escape(result));
110
+ }
111
+ catch (_a) {
112
+ return result;
113
+ }
114
+ }
115
+ }
116
+ exports.default = Kwik;
117
+ //# sourceMappingURL=kwik.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kwik.js","sourceRoot":"","sources":["../../src/extractors/kwik.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IVideo } from '../models';
2
+ import VideoExtractor from '../models/video-extractor';
3
+ declare class Lpayer extends VideoExtractor {
4
+ protected serverName: string;
5
+ protected sources: IVideo[];
6
+ private readonly AES_KEY;
7
+ private readonly AES_IV;
8
+ private decrypt;
9
+ extract: (videoUrl: URL) => Promise<IVideo[]>;
10
+ }
11
+ export default Lpayer;
@@ -0,0 +1,131 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const video_extractor_1 = __importDefault(require("../models/video-extractor"));
40
+ const crypto = __importStar(require("crypto"));
41
+ class Lpayer extends video_extractor_1.default {
42
+ constructor() {
43
+ super(...arguments);
44
+ this.serverName = 'lpayer';
45
+ this.sources = [];
46
+ this.AES_KEY = Buffer.from('kiemtienmua911ca', 'utf8');
47
+ this.AES_IV = Buffer.from('1234567890oiuytr', 'utf8');
48
+ this.extract = async (videoUrl) => {
49
+ var _a;
50
+ try {
51
+ const videoId = videoUrl.hash.substring(1);
52
+ if (!videoId)
53
+ return [];
54
+ const apiUrl = `${videoUrl.origin}/api/v1/video?id=${videoId}&w=1366&h=768&r=`;
55
+ const { data: encryptedData } = await this.client.get(apiUrl, {
56
+ headers: {
57
+ Referer: videoUrl.href,
58
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
59
+ },
60
+ });
61
+ const decryptedData = this.decrypt(encryptedData);
62
+ if (!decryptedData)
63
+ return [];
64
+ const videoData = JSON.parse(decryptedData);
65
+ let hlsUrl = videoData.hls || videoData.source || videoData.url || videoData.file || '';
66
+ if (!hlsUrl)
67
+ return [];
68
+ if (hlsUrl.startsWith('/')) {
69
+ hlsUrl = videoUrl.origin + hlsUrl;
70
+ }
71
+ this.sources.push({
72
+ quality: 'auto',
73
+ url: hlsUrl,
74
+ isM3U8: hlsUrl.includes('.m3u8'),
75
+ });
76
+ if (hlsUrl.includes('.m3u8')) {
77
+ try {
78
+ const { data } = await this.client.get(hlsUrl, {
79
+ headers: {
80
+ Referer: videoUrl.href,
81
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
82
+ },
83
+ timeout: 5000,
84
+ });
85
+ if (data.includes('EXT-X-STREAM-INF')) {
86
+ const lines = data.split('\n');
87
+ for (let i = 0; i < lines.length; i++) {
88
+ if (lines[i].startsWith('#EXT-X-STREAM-INF:')) {
89
+ const resolutionMatch = lines[i].match(/RESOLUTION=\d+x(\d+)/);
90
+ const quality = resolutionMatch ? `${resolutionMatch[1]}p` : 'unknown';
91
+ const urlLine = (_a = lines[i + 1]) === null || _a === void 0 ? void 0 : _a.trim();
92
+ if (urlLine && !urlLine.startsWith('#')) {
93
+ let variantUrl = urlLine;
94
+ if (!variantUrl.startsWith('http')) {
95
+ const baseUrl = hlsUrl.substring(0, hlsUrl.lastIndexOf('/') + 1);
96
+ variantUrl = baseUrl + variantUrl;
97
+ }
98
+ this.sources.push({
99
+ quality,
100
+ url: variantUrl,
101
+ isM3U8: true,
102
+ });
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ catch (_b) { }
109
+ }
110
+ return this.sources;
111
+ }
112
+ catch (_c) {
113
+ return [];
114
+ }
115
+ };
116
+ }
117
+ decrypt(encryptedHex) {
118
+ try {
119
+ const encryptedBuffer = Buffer.from(encryptedHex, 'hex');
120
+ const decipher = crypto.createDecipheriv('aes-128-cbc', this.AES_KEY, this.AES_IV);
121
+ let decrypted = decipher.update(encryptedBuffer);
122
+ decrypted = Buffer.concat([decrypted, decipher.final()]);
123
+ return decrypted.toString('utf8');
124
+ }
125
+ catch (_a) {
126
+ return '';
127
+ }
128
+ }
129
+ }
130
+ exports.default = Lpayer;
131
+ //# sourceMappingURL=lplayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lplayer.js","sourceRoot":"","sources":["../../src/extractors/lplayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { VideoExtractor, IVideo, ISubtitle } from '../models';
2
+ declare class MegaCloud extends VideoExtractor {
3
+ protected serverName: string;
4
+ protected sources: IVideo[];
5
+ extract: (videoUrl: URL) => Promise<{
6
+ sources: IVideo[];
7
+ subtitles: ISubtitle[];
8
+ }>;
9
+ }
10
+ export default MegaCloud;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ class MegaCloud extends models_1.VideoExtractor {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.serverName = 'MegaCloud';
8
+ this.sources = [];
9
+ this.extract = async (videoUrl) => {
10
+ var _a, _b, _c;
11
+ try {
12
+ const apiUrl = 'https://crawlr.cc/9D7F1B3E8?url=' + encodeURIComponent(videoUrl.href);
13
+ const { data } = await this.client.get(apiUrl);
14
+ if (!data.sources || data.sources.length === 0) {
15
+ throw new Error('No sources returned');
16
+ }
17
+ for (const src of data.sources) {
18
+ this.sources.push({
19
+ url: src.url,
20
+ quality: (_a = src.quality) !== null && _a !== void 0 ? _a : 'auto',
21
+ isM3U8: src.url.includes('.m3u8'),
22
+ });
23
+ }
24
+ const subtitles = (_c = (_b = data.tracks) === null || _b === void 0 ? void 0 : _b.map(t => {
25
+ var _a, _b;
26
+ return ({
27
+ lang: (_a = t.label) !== null && _a !== void 0 ? _a : 'Unknown',
28
+ url: t.file,
29
+ kind: (_b = t.kind) !== null && _b !== void 0 ? _b : 'captions',
30
+ });
31
+ })) !== null && _c !== void 0 ? _c : [];
32
+ return {
33
+ sources: this.sources,
34
+ subtitles,
35
+ };
36
+ }
37
+ catch (err) {
38
+ throw new Error(err.message);
39
+ }
40
+ };
41
+ }
42
+ }
43
+ exports.default = MegaCloud;
44
+ //# sourceMappingURL=megacloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"megacloud.js","sourceRoot":"","sources":["../../src/extractors/megacloud.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAqB9D,MAAM,SAAU,SAAQ,uBAAc;IAAtC;;QACqB,eAAU,GAAG,WAAW,CAAC;QACzB,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAA0D,EAAE;;YACjG,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,kCAAkC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEtF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmB,MAAM,CAAC,CAAC;gBAEjE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,OAAO,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,MAAM;wBAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,SAAS,GACb,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACrB,IAAI,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,SAAS;wBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI;wBACX,IAAI,EAAE,MAAA,CAAC,CAAC,IAAI,mCAAI,UAAU;qBAC3B,CAAC,CAAA;iBAAA,CAAC,mCAAI,EAAE,CAAC;gBAEZ,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AAED,kBAAe,SAAS,CAAC"}