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,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ class StreamWish extends models_1.VideoExtractor {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.serverName = 'streamwish';
8
+ this.sources = [];
9
+ this.extract = async (videoUrl) => {
10
+ var _a, _b, _c, _d;
11
+ try {
12
+ let finalUrl = videoUrl.href;
13
+ if (videoUrl.hostname.includes('hglink.to')) {
14
+ finalUrl = finalUrl.replace('hglink.to', 'dumbalag.com');
15
+ }
16
+ const apiUrl = 'https://crawlr.cc/B6D2A9F1C?url=' + encodeURIComponent(finalUrl);
17
+ const { data } = await this.client.get(apiUrl);
18
+ if (!((_a = data.sources) === null || _a === void 0 ? void 0 : _a.length))
19
+ throw new Error('No sources returned');
20
+ for (const src of data.sources) {
21
+ this.sources.push({
22
+ url: src.url,
23
+ quality: (_b = src.quality) !== null && _b !== void 0 ? _b : 'auto',
24
+ isM3U8: src.url.includes('.m3u8'),
25
+ });
26
+ }
27
+ const subtitles = (_d = (_c = data.tracks) === null || _c === void 0 ? void 0 : _c.filter(t => t.kind === 'captions').map(t => {
28
+ var _a;
29
+ return ({
30
+ lang: (_a = t.label) !== null && _a !== void 0 ? _a : 'Unknown',
31
+ url: t.file,
32
+ });
33
+ })) !== null && _d !== void 0 ? _d : [];
34
+ return {
35
+ sources: this.sources,
36
+ subtitles,
37
+ };
38
+ }
39
+ catch (err) {
40
+ throw new Error(err.message);
41
+ }
42
+ };
43
+ }
44
+ }
45
+ exports.default = StreamWish;
46
+ //# sourceMappingURL=streamwish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamwish.js","sourceRoot":"","sources":["../../src/extractors/streamwish.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAsB9D,MAAM,UAAW,SAAQ,uBAAc;IAAvC;;QACqB,eAAU,GAAG,YAAY,CAAC;QAC1B,YAAO,GAAa,EAAE,CAAC;QAEjC,YAAO,GAAG,KAAK,EAAE,QAAa,EAA+D,EAAE;;YACtG,IAAI,CAAC;gBACH,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAE7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAC3D,CAAC;gBAED,MAAM,MAAM,GAAG,kCAAkC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAEjF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,MAAM,CAAC,CAAC;gBAE5D,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,CAAA;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBAElE,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,0CACP,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAClC,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACT,IAAI,EAAE,MAAA,CAAC,CAAC,KAAK,mCAAI,SAAS;wBAC1B,GAAG,EAAE,CAAC,CAAC,IAAI;qBACZ,CAAC,CAAA;iBAAA,CAAC,mCAAI,EAAE,CAAC;gBAEd,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,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { VideoExtractor, IVideo, ISubtitle } from '../models';
2
+ declare class VidCloud extends VideoExtractor {
3
+ protected serverName: string;
4
+ protected sources: IVideo[];
5
+ extract: (videoUrl: URL) => Promise<{
6
+ sources: IVideo[];
7
+ } & {
8
+ subtitles: ISubtitle[];
9
+ }>;
10
+ }
11
+ export default VidCloud;
@@ -0,0 +1,109 @@
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
+ const models_1 = require("../models");
7
+ const utils_1 = require("../utils");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ class VidCloud extends models_1.VideoExtractor {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.serverName = 'VidCloud';
13
+ this.sources = [];
14
+ this.extract = async (videoUrl) => {
15
+ var _a, _b, _c;
16
+ try {
17
+ const result = {
18
+ sources: [],
19
+ subtitles: [],
20
+ };
21
+ const decUrl = new URL('https://dec.eatmynerds.live');
22
+ decUrl.searchParams.set('url', videoUrl.href);
23
+ const { data: initialData } = await axios_1.default.get(decUrl.toString());
24
+ if (!((_a = initialData === null || initialData === void 0 ? void 0 : initialData.sources) === null || _a === void 0 ? void 0 : _a.length)) {
25
+ throw new Error('No sources found from the initial request.');
26
+ }
27
+ let masterPlaylistUrl = initialData.sources[0].file;
28
+ let masterPlaylist = null;
29
+ try {
30
+ const { data } = await axios_1.default.get(masterPlaylistUrl, {
31
+ headers: {
32
+ Referer: videoUrl.href,
33
+ 'User-Agent': utils_1.USER_AGENT,
34
+ },
35
+ timeout: 10000,
36
+ });
37
+ masterPlaylist = data;
38
+ }
39
+ catch (httpsError) {
40
+ const httpUrl = masterPlaylistUrl.replace('https://', 'http://');
41
+ try {
42
+ const { data } = await axios_1.default.get(httpUrl, {
43
+ headers: {
44
+ Referer: videoUrl.href,
45
+ 'User-Agent': utils_1.USER_AGENT,
46
+ },
47
+ timeout: 10000,
48
+ });
49
+ masterPlaylist = data;
50
+ masterPlaylistUrl = httpUrl;
51
+ }
52
+ catch (httpError) {
53
+ return {
54
+ sources: [
55
+ {
56
+ url: masterPlaylistUrl,
57
+ isM3U8: masterPlaylistUrl.includes('.m3u8'),
58
+ quality: 'auto',
59
+ },
60
+ ],
61
+ subtitles: ((_b = initialData.tracks) === null || _b === void 0 ? void 0 : _b.map((s) => {
62
+ var _a;
63
+ return ({
64
+ url: s.file,
65
+ lang: (_a = s.label) !== null && _a !== void 0 ? _a : 'Default',
66
+ });
67
+ })) || [],
68
+ };
69
+ }
70
+ }
71
+ const sources = [];
72
+ sources.push({
73
+ url: masterPlaylistUrl,
74
+ isM3U8: true,
75
+ quality: 'auto',
76
+ });
77
+ const playlistRegex = /#EXT-X-STREAM-INF:.*RESOLUTION=(\d+x(\d+)).*\n(.*)/g;
78
+ let match;
79
+ while ((match = playlistRegex.exec(masterPlaylist)) !== null) {
80
+ const quality = `${match[2]}p`;
81
+ let url = match[3];
82
+ if (!url.startsWith('http')) {
83
+ url = new URL(url, masterPlaylistUrl).toString();
84
+ }
85
+ sources.push({
86
+ url,
87
+ quality,
88
+ isM3U8: url.includes('.m3u8'),
89
+ });
90
+ }
91
+ result.sources = sources;
92
+ result.subtitles =
93
+ ((_c = initialData.tracks) === null || _c === void 0 ? void 0 : _c.map((s) => {
94
+ var _a;
95
+ return ({
96
+ url: s.file,
97
+ lang: (_a = s.label) !== null && _a !== void 0 ? _a : 'Default',
98
+ });
99
+ })) || [];
100
+ return result;
101
+ }
102
+ catch (err) {
103
+ throw err;
104
+ }
105
+ };
106
+ }
107
+ }
108
+ exports.default = VidCloud;
109
+ //# sourceMappingURL=vidcloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vidcloud.js","sourceRoot":"","sources":["../../src/extractors/vidcloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { VideoExtractor, IVideo, ISubtitle } from '../models';
2
+ declare class VideoStr 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 VideoStr;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ class VideoStr extends models_1.VideoExtractor {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.serverName = 'VideoStr';
8
+ this.sources = [];
9
+ this.extract = async (videoUrl) => {
10
+ var _a, _b, _c;
11
+ try {
12
+ const apiUrl = 'https://crawlr.cc/E2B9A6F4C?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 = VideoStr;
44
+ //# sourceMappingURL=videostr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videostr.js","sourceRoot":"","sources":["../../src/extractors/videostr.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAqB9D,MAAM,QAAS,SAAQ,uBAAc;IAArC;;QACqB,eAAU,GAAG,UAAU,CAAC;QACxB,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,CAAkB,MAAM,CAAC,CAAC;gBAEhE,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,QAAQ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { VideoExtractor, IVideo } from '../models';
2
+ declare class VidMoly extends VideoExtractor {
3
+ protected serverName: string;
4
+ protected sources: IVideo[];
5
+ extract: (videoUrl: URL) => Promise<IVideo[]>;
6
+ }
7
+ export default VidMoly;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ class VidMoly extends models_1.VideoExtractor {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.serverName = 'vidmoly';
8
+ this.sources = [];
9
+ this.extract = async (videoUrl) => {
10
+ var _a;
11
+ try {
12
+ const urlString = videoUrl.href.replace('vidmoly.to', 'vidmoly.net');
13
+ const { data } = await this.client.get(urlString, {
14
+ headers: {
15
+ Referer: videoUrl.origin,
16
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
17
+ },
18
+ });
19
+ const patterns = [
20
+ /file:\s*"([^"]+)"/,
21
+ /sources:\s*\[\s*{[^}]*file:\s*"([^"]+)"/,
22
+ /source\s*src="([^"]+\.m3u8[^"]*)"/,
23
+ ];
24
+ let masterUrl = null;
25
+ for (const pattern of patterns) {
26
+ const match = data.match(pattern);
27
+ if (match && match[1]) {
28
+ masterUrl = match[1];
29
+ break;
30
+ }
31
+ }
32
+ if (!masterUrl) {
33
+ console.warn(`Vidmoly: Could not find video source in ${urlString}`);
34
+ return [];
35
+ }
36
+ const m3u8Content = await this.client.get(masterUrl, {
37
+ headers: {
38
+ Referer: urlString,
39
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
40
+ },
41
+ });
42
+ this.sources.push({
43
+ quality: 'auto',
44
+ url: masterUrl,
45
+ isM3U8: masterUrl.includes('.m3u8'),
46
+ });
47
+ if (m3u8Content.data.includes('EXTM3U')) {
48
+ const videoList = m3u8Content.data.split('#EXT-X-STREAM-INF:');
49
+ for (const video of videoList) {
50
+ if (!video.includes('m3u8'))
51
+ continue;
52
+ const lines = video.split('\n');
53
+ const url = (_a = lines[1]) === null || _a === void 0 ? void 0 : _a.trim();
54
+ if (!url)
55
+ continue;
56
+ const resolutionMatch = video.match(/RESOLUTION=(\d+)x(\d+)/);
57
+ const quality = resolutionMatch ? resolutionMatch[2] : 'unknown';
58
+ this.sources.push({
59
+ url,
60
+ quality,
61
+ isM3U8: url.includes('.m3u8'),
62
+ });
63
+ }
64
+ }
65
+ return this.sources;
66
+ }
67
+ catch (err) {
68
+ console.error(`Vidmoly extraction error: ${err.message}`);
69
+ return [];
70
+ }
71
+ };
72
+ }
73
+ }
74
+ exports.default = VidMoly;
75
+ //# sourceMappingURL=vidmoly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vidmoly.js","sourceRoot":"","sources":["../../src/extractors/vidmoly.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { VideoExtractor, IVideo, ISubtitle } from '../models';
2
+ declare class Voe 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 Voe;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const models_1 = require("../models");
4
+ class Voe extends models_1.VideoExtractor {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.serverName = 'VideoStr';
8
+ this.sources = [];
9
+ this.extract = async (videoUrl) => {
10
+ var _a, _b, _c;
11
+ try {
12
+ const apiUrl = 'https://crawlr.cc/3F7A1C9D8?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 = Voe;
44
+ //# sourceMappingURL=voe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voe.js","sourceRoot":"","sources":["../../src/extractors/voe.ts"],"names":[],"mappings":";;AAAA,sCAA8D;AAqB9D,MAAM,GAAI,SAAQ,uBAAc;IAAhC;;QACqB,eAAU,GAAG,UAAU,CAAC;QACxB,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,CAAa,MAAM,CAAC,CAAC;gBAE3D,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,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ANIME, BOOKS, COMICS, LIGHT_NOVELS, MANGA, MOVIES, META, NEWS } from './providers';
2
+ import { PROVIDERS_LIST } from './utils/providers-list';
3
+ import { IProviderStats, ISearch, IAnimeEpisode, IAnimeInfo, IAnimeResult, IEpisodeServer, IVideo, LibgenBook, StreamingServers, MediaStatus, SubOrSub, IMangaResult, IMangaChapter, IMangaInfo, ILightNovelResult, ILightNovelInfo, ILightNovelChapter, ILightNovelChapterContent, GetComicsComics, ComicRes, IMangaChapterPage, TvType, IMovieEpisode, IMovieInfo, ISource, ISubtitle, IMovieResult, Intro, Genres, INewsFeed, Topics, INewsInfo, FuzzyDate, ITitle, MediaFormat, ProxyConfig } from './models';
4
+ export { ANIME, BOOKS, COMICS, MANGA, LIGHT_NOVELS, MOVIES, META, NEWS };
5
+ export { PROVIDERS_LIST };
6
+ export { Topics, Genres, SubOrSub, StreamingServers, MediaStatus, IProviderStats, IAnimeEpisode, IAnimeInfo, IAnimeResult, IEpisodeServer, IVideo, LibgenBook, IMangaResult, IMangaChapter, IMangaInfo, ILightNovelResult, ILightNovelInfo, ILightNovelChapter, ILightNovelChapterContent, GetComicsComics, ComicRes, ISearch, IMangaChapterPage, TvType, IMovieEpisode, IMovieInfo, ISource, ISubtitle, IMovieResult, Intro, INewsFeed, INewsInfo, FuzzyDate, ITitle, MediaFormat, ProxyConfig, };
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediaFormat = exports.TvType = exports.MediaStatus = exports.StreamingServers = exports.SubOrSub = exports.Genres = exports.Topics = exports.PROVIDERS_LIST = exports.NEWS = exports.META = exports.MOVIES = exports.LIGHT_NOVELS = exports.MANGA = exports.COMICS = exports.BOOKS = exports.ANIME = void 0;
4
+ const providers_1 = require("./providers");
5
+ Object.defineProperty(exports, "ANIME", { enumerable: true, get: function () { return providers_1.ANIME; } });
6
+ Object.defineProperty(exports, "BOOKS", { enumerable: true, get: function () { return providers_1.BOOKS; } });
7
+ Object.defineProperty(exports, "COMICS", { enumerable: true, get: function () { return providers_1.COMICS; } });
8
+ Object.defineProperty(exports, "LIGHT_NOVELS", { enumerable: true, get: function () { return providers_1.LIGHT_NOVELS; } });
9
+ Object.defineProperty(exports, "MANGA", { enumerable: true, get: function () { return providers_1.MANGA; } });
10
+ Object.defineProperty(exports, "MOVIES", { enumerable: true, get: function () { return providers_1.MOVIES; } });
11
+ Object.defineProperty(exports, "META", { enumerable: true, get: function () { return providers_1.META; } });
12
+ Object.defineProperty(exports, "NEWS", { enumerable: true, get: function () { return providers_1.NEWS; } });
13
+ const providers_list_1 = require("./utils/providers-list");
14
+ Object.defineProperty(exports, "PROVIDERS_LIST", { enumerable: true, get: function () { return providers_list_1.PROVIDERS_LIST; } });
15
+ const models_1 = require("./models");
16
+ Object.defineProperty(exports, "StreamingServers", { enumerable: true, get: function () { return models_1.StreamingServers; } });
17
+ Object.defineProperty(exports, "MediaStatus", { enumerable: true, get: function () { return models_1.MediaStatus; } });
18
+ Object.defineProperty(exports, "SubOrSub", { enumerable: true, get: function () { return models_1.SubOrSub; } });
19
+ Object.defineProperty(exports, "TvType", { enumerable: true, get: function () { return models_1.TvType; } });
20
+ Object.defineProperty(exports, "Genres", { enumerable: true, get: function () { return models_1.Genres; } });
21
+ Object.defineProperty(exports, "Topics", { enumerable: true, get: function () { return models_1.Topics; } });
22
+ Object.defineProperty(exports, "MediaFormat", { enumerable: true, get: function () { return models_1.MediaFormat; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAA4F;AAyCnF,sFAzCA,iBAAK,OAyCA;AAAE,sFAzCA,iBAAK,OAyCA;AAAE,uFAzCA,kBAAM,OAyCA;AAAS,6FAzCP,wBAAY,OAyCO;AAAnB,sFAzCc,iBAAK,OAyCd;AAAgB,uFAzCA,kBAAM,OAyCA;AAAE,qFAzCA,gBAAI,OAyCA;AAAE,qFAzCA,gBAAI,OAyCA;AAxCtE,2DAAwD;AAyC/C,+FAzCA,+BAAc,OAyCA;AAxCvB,qCAqCkB;AAQhB,iGApCA,yBAAgB,OAoCA;AAChB,4FApCA,oBAAW,OAoCA;AAFX,yFAjCA,iBAAQ,OAiCA;AAqBR,uFA3CA,eAAM,OA2CA;AAtBN,uFAdA,eAAM,OAcA;AADN,uFAXA,eAAM,OAWA;AAkCN,4FAzCA,oBAAW,OAyCA"}
@@ -0,0 +1,26 @@
1
+ import { BaseParser, IAnimeInfo, ISource, IEpisodeServer } from '.';
2
+ declare abstract class AnimeParser extends BaseParser {
3
+ /**
4
+ * if the provider has dub and it's avialable seperatly from sub set this to `true`
5
+ */
6
+ protected readonly isDubAvailableSeparately: boolean;
7
+ /**
8
+ * takes anime id
9
+ *
10
+ * returns anime info (including episodes)
11
+ */
12
+ abstract fetchAnimeInfo(animeId: string, ...args: any): Promise<IAnimeInfo>;
13
+ /**
14
+ * takes episode id
15
+ *
16
+ * returns episode sources (video links)
17
+ */
18
+ abstract fetchEpisodeSources(episodeId: string, ...args: any): Promise<ISource>;
19
+ /**
20
+ * takes episode id
21
+ *
22
+ * returns episode servers (video links) available
23
+ */
24
+ abstract fetchEpisodeServers(episodeId: string, ...args: any): Promise<IEpisodeServer[]>;
25
+ }
26
+ export default AnimeParser;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ class AnimeParser extends _1.BaseParser {
5
+ constructor() {
6
+ super(...arguments);
7
+ /**
8
+ * if the provider has dub and it's avialable seperatly from sub set this to `true`
9
+ */
10
+ this.isDubAvailableSeparately = false;
11
+ }
12
+ }
13
+ exports.default = AnimeParser;
14
+ //# sourceMappingURL=anime-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anime-parser.js","sourceRoot":"","sources":["../../src/models/anime-parser.ts"],"names":[],"mappings":";;AAAA,wBAAiF;AAGjF,MAAe,WAAY,SAAQ,aAAU;IAA7C;;QACE;;WAEG;QACgB,6BAAwB,GAAY,KAAK,CAAC;IAqB/D,CAAC;CAAA;AAED,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { BaseProvider } from '.';
2
+ declare abstract class BaseParser extends BaseProvider {
3
+ /**
4
+ * Search for books/anime/manga/etc using the given query
5
+ *
6
+ * returns a promise resolving to a data object
7
+ */
8
+ abstract search(query: string, ...args: any[]): Promise<unknown>;
9
+ }
10
+ export default BaseParser;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ class BaseParser extends _1.BaseProvider {
5
+ }
6
+ exports.default = BaseParser;
7
+ //# sourceMappingURL=base-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-parser.js","sourceRoot":"","sources":["../../src/models/base-parser.ts"],"names":[],"mappings":";;AAEA,wBAA8C;AAE9C,MAAe,UAAW,SAAQ,eAAY;CAO7C;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { IProviderStats } from '.';
2
+ import Proxy from './proxy';
3
+ declare abstract class BaseProvider extends Proxy {
4
+ /**
5
+ * Name of the provider
6
+ */
7
+ abstract readonly name: string;
8
+ /**
9
+ * The main URL of the provider
10
+ */
11
+ protected abstract readonly baseUrl: string;
12
+ /**
13
+ * Most providers are english based, but if the provider is not english based override this value.
14
+ * must be in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format
15
+ */
16
+ protected readonly languages: string[] | string;
17
+ /**
18
+ * override as `true` if the provider **only** supports NSFW content
19
+ */
20
+ readonly isNSFW: boolean;
21
+ /**
22
+ * Logo of the provider (used in the website) or `undefined` if not available. ***128x128px is preferred***\
23
+ * Must be a valid URL (not a data URL)
24
+ */
25
+ protected readonly logo: string;
26
+ /**
27
+ * The class's path is determined by the provider's directory structure for example:\
28
+ * MangaDex class path is `MANGA.MangaDex`. **(case sensitive)**
29
+ */
30
+ protected abstract readonly classPath: string;
31
+ /**
32
+ * override as `false` if the provider is **down** or **not working**
33
+ */
34
+ readonly isWorking: boolean;
35
+ /**
36
+ * returns provider stats
37
+ */
38
+ get toString(): IProviderStats;
39
+ }
40
+ export default BaseProvider;
@@ -0,0 +1,45 @@
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
+ const proxy_1 = __importDefault(require("./proxy"));
7
+ class BaseProvider extends proxy_1.default {
8
+ constructor() {
9
+ super(...arguments);
10
+ /**
11
+ * Most providers are english based, but if the provider is not english based override this value.
12
+ * must be in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format
13
+ */
14
+ this.languages = 'en';
15
+ /**
16
+ * override as `true` if the provider **only** supports NSFW content
17
+ */
18
+ this.isNSFW = false;
19
+ /**
20
+ * Logo of the provider (used in the website) or `undefined` if not available. ***128x128px is preferred***\
21
+ * Must be a valid URL (not a data URL)
22
+ */
23
+ this.logo = 'https://png.pngtree.com/png-vector/20210221/ourmid/pngtree-error-404-not-found-neon-effect-png-image_2928214.jpg';
24
+ /**
25
+ * override as `false` if the provider is **down** or **not working**
26
+ */
27
+ this.isWorking = true;
28
+ }
29
+ /**
30
+ * returns provider stats
31
+ */
32
+ get toString() {
33
+ return {
34
+ name: this.name,
35
+ baseUrl: this.baseUrl,
36
+ lang: this.languages,
37
+ isNSFW: this.isNSFW,
38
+ logo: this.logo,
39
+ classPath: this.classPath,
40
+ isWorking: this.isWorking,
41
+ };
42
+ }
43
+ }
44
+ exports.default = BaseProvider;
45
+ //# sourceMappingURL=base-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../src/models/base-provider.ts"],"names":[],"mappings":";;;;;AACA,oDAA4B;AAE5B,MAAe,YAAa,SAAQ,eAAK;IAAzC;;QAWE;;;WAGG;QACgB,cAAS,GAAsB,IAAI,CAAC;QAEvD;;WAEG;QACM,WAAM,GAAY,KAAK,CAAC;QAEjC;;;WAGG;QACgB,SAAI,GACrB,kHAAkH,CAAC;QAQrH;;WAEG;QACM,cAAS,GAAY,IAAI,CAAC;IAgBrC,CAAC;IAdC;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface Book {
2
+ title: string;
3
+ authors: string[];
4
+ publisher: string;
5
+ year: string;
6
+ edition: string;
7
+ volume: string;
8
+ series: string;
9
+ isbn: string[];
10
+ image: string;
11
+ description: string;
12
+ link: string;
13
+ }
14
+ export interface Hashes {
15
+ AICH: string;
16
+ CRC32: string;
17
+ eDonkey: string;
18
+ MD5: string;
19
+ SHA1: string;
20
+ SHA256: string[];
21
+ TTH: string;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-types.js","sourceRoot":"","sources":["../../src/models/base-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { BaseParser } from '.';
2
+ declare abstract class BookParser extends BaseParser {
3
+ }
4
+ export default BookParser;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ class BookParser extends _1.BaseParser {
5
+ }
6
+ exports.default = BookParser;
7
+ //# sourceMappingURL=book-parser.js.map