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,529 @@
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 cheerio_1 = require("cheerio");
7
+ const models_1 = require("../../models");
8
+ const utils_1 = require("../../utils");
9
+ const hianime_1 = __importDefault(require("../anime/hianime"));
10
+ class Myanimelist extends models_1.AnimeParser {
11
+ /**
12
+ * This class maps myanimelist to kitsu with any other anime provider.
13
+ * kitsu is used for episode images, titles and description.
14
+ * @param provider anime provider (optional) default: Gogoanime
15
+ */
16
+ constructor(provider) {
17
+ super();
18
+ this.name = 'Myanimelist';
19
+ this.baseUrl = 'https://myanimelist.net/';
20
+ this.logo = 'https://en.wikipedia.org/wiki/MyAnimeList#/media/File:MyAnimeList.png';
21
+ this.classPath = 'META.Myanimelist';
22
+ this.anilistGraphqlUrl = 'https://graphql.anilist.co';
23
+ this.kitsuGraphqlUrl = 'https://kitsu.app/api/graphql';
24
+ this.malSyncUrl = 'https://api.malsync.moe';
25
+ this.anifyUrl = 'https://anify.eltik.cc';
26
+ this.search = async (query, page = 1) => {
27
+ const searchResults = {
28
+ currentPage: page,
29
+ results: [],
30
+ };
31
+ const { data } = await this.client.request({
32
+ method: 'get',
33
+ url: `https://myanimelist.net/anime.php?q=${query}&cat=anime&show=${50 * (page - 1)}`,
34
+ headers: {
35
+ 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35',
36
+ },
37
+ });
38
+ const $ = (0, cheerio_1.load)(data);
39
+ const pages = $('.normal_header').find('span').children();
40
+ const maxPage = parseInt(pages.last().text());
41
+ const hasNextPage = page < maxPage;
42
+ searchResults.hasNextPage = hasNextPage;
43
+ $('tr').each((i, item) => {
44
+ var _a;
45
+ const id = (_a = $(item).find('.hoverinfo_trigger').attr('href')) === null || _a === void 0 ? void 0 : _a.split('anime/')[1].split('/')[0];
46
+ const title = $(item).find('strong').text();
47
+ const description = $(item).find('.pt4').text().replace('...read more.', '...');
48
+ const type = $(item).children().eq(2).text().trim();
49
+ const episodeCount = $(item).children().eq(3).text().trim();
50
+ const score = (parseFloat($(item).children().eq(4).text()) * 10).toFixed(0);
51
+ const imageTmp = $(item).children().first().find('img').attr('data-src');
52
+ const imageUrl = `https://cdn.myanimelist.net/images/anime/${imageTmp === null || imageTmp === void 0 ? void 0 : imageTmp.split('anime/')[1]}`;
53
+ if (title != '') {
54
+ searchResults.results.push({
55
+ id: id !== null && id !== void 0 ? id : '',
56
+ title: title,
57
+ image: imageUrl,
58
+ rating: parseInt(score),
59
+ description: description,
60
+ totalEpisodes: parseInt(episodeCount),
61
+ type: type == 'TV'
62
+ ? models_1.MediaFormat.TV
63
+ : type == 'TV_SHORT'
64
+ ? models_1.MediaFormat.TV_SHORT
65
+ : type == 'MOVIE'
66
+ ? models_1.MediaFormat.MOVIE
67
+ : type == 'SPECIAL'
68
+ ? models_1.MediaFormat.SPECIAL
69
+ : type == 'OVA'
70
+ ? models_1.MediaFormat.OVA
71
+ : type == 'ONA'
72
+ ? models_1.MediaFormat.ONA
73
+ : type == 'MUSIC'
74
+ ? models_1.MediaFormat.MUSIC
75
+ : type == 'MANGA'
76
+ ? models_1.MediaFormat.MANGA
77
+ : type == 'NOVEL'
78
+ ? models_1.MediaFormat.NOVEL
79
+ : type == 'ONE_SHOT'
80
+ ? models_1.MediaFormat.ONE_SHOT
81
+ : undefined,
82
+ });
83
+ }
84
+ });
85
+ return searchResults;
86
+ };
87
+ /**
88
+ *
89
+ * @param animeId anime id
90
+ * @param fetchFiller fetch filler episodes
91
+ */
92
+ this.fetchAnimeInfo = async (animeId, dub = false, fetchFiller = false) => {
93
+ var _a, _b, _c, _d, _e;
94
+ try {
95
+ const animeInfo = await this.fetchMalInfoById(animeId);
96
+ const titleWithLanguages = animeInfo === null || animeInfo === void 0 ? void 0 : animeInfo.title;
97
+ let fillerEpisodes;
98
+ if (this.provider instanceof hianime_1.default &&
99
+ !dub &&
100
+ (animeInfo.status === models_1.MediaStatus.ONGOING ||
101
+ (0, utils_1.range)({ from: 2000, to: new Date().getFullYear() + 1 }).includes((_a = animeInfo.startDate) === null || _a === void 0 ? void 0 : _a.year))) {
102
+ try {
103
+ // NOTE: gotta fix in future
104
+ // animeInfo.episodes = (
105
+ // await new Anify(
106
+ // this.proxyConfig,
107
+ // this.adapter,
108
+ // this.provider.name.toLowerCase() as 'gogoanime' | 'Hianime' | '9anime' | 'animepahe'
109
+ // ).fetchAnimeInfo(animeId)
110
+ // ).episodes?.map((item: any) => ({
111
+ // id: item.slug,
112
+ // title: item.title,
113
+ // description: item.description,
114
+ // number: item.number,
115
+ // image: item.image,
116
+ // }));
117
+ // animeInfo.episodes?.reverse();
118
+ }
119
+ catch (err) {
120
+ animeInfo.episodes = await this.findAnimeSlug((titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.english) ||
121
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.romaji) ||
122
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.native) ||
123
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.userPreferred), animeInfo.season, (_b = animeInfo.startDate) === null || _b === void 0 ? void 0 : _b.year, animeId, dub);
124
+ animeInfo.episodes = (_c = animeInfo.episodes) === null || _c === void 0 ? void 0 : _c.map((episode) => {
125
+ if (!episode.image)
126
+ episode.image = animeInfo.image;
127
+ return episode;
128
+ });
129
+ return animeInfo;
130
+ }
131
+ }
132
+ else
133
+ animeInfo.episodes = await this.findAnimeSlug((titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.english) ||
134
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.romaji) ||
135
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.native) ||
136
+ (titleWithLanguages === null || titleWithLanguages === void 0 ? void 0 : titleWithLanguages.userPreferred), animeInfo.season, (_d = animeInfo.startDate) === null || _d === void 0 ? void 0 : _d.year, animeId, dub);
137
+ if (fetchFiller) {
138
+ const { data: fillerData } = await this.client({
139
+ baseURL: `https://raw.githubusercontent.com/saikou-app/mal-id-filler-list/main/fillers/${animeId}.json`,
140
+ method: 'GET',
141
+ validateStatus: () => true,
142
+ });
143
+ if (!fillerData.toString().startsWith('404')) {
144
+ fillerEpisodes = [];
145
+ fillerEpisodes === null || fillerEpisodes === void 0 ? void 0 : fillerEpisodes.push(...fillerData.episodes);
146
+ }
147
+ }
148
+ animeInfo.episodes = (_e = animeInfo.episodes) === null || _e === void 0 ? void 0 : _e.map((episode) => {
149
+ if (!episode.image)
150
+ episode.image = animeInfo.image;
151
+ if (fetchFiller &&
152
+ (fillerEpisodes === null || fillerEpisodes === void 0 ? void 0 : fillerEpisodes.length) > 0 &&
153
+ (fillerEpisodes === null || fillerEpisodes === void 0 ? void 0 : fillerEpisodes.length) >= animeInfo.episodes.length) {
154
+ if (fillerEpisodes[episode.number - 1])
155
+ episode.isFiller = new Boolean(fillerEpisodes[episode.number - 1]['filler-bool']).valueOf();
156
+ }
157
+ return episode;
158
+ });
159
+ return animeInfo;
160
+ }
161
+ catch (err) {
162
+ console.error(err);
163
+ throw err;
164
+ }
165
+ };
166
+ this.fetchEpisodeSources = async (episodeId, ...args) => {
167
+ try {
168
+ return this.provider.fetchEpisodeSources(episodeId, ...args);
169
+ }
170
+ catch (err) {
171
+ throw new Error(`Failed to fetch episode sources from ${this.provider.name}: ${err}`);
172
+ }
173
+ };
174
+ this.findAnimeRaw = async (slug, externalLinks) => {
175
+ const findAnime = (await this.provider.search(slug));
176
+ if (findAnime.results.length === 0)
177
+ return [];
178
+ // Sort the retrieved info for more accurate results.
179
+ findAnime.results.sort((a, b) => {
180
+ var _a, _b, _c, _d;
181
+ const targetTitle = slug.toLowerCase();
182
+ let firstTitle;
183
+ let secondTitle;
184
+ if (typeof a.title == 'string')
185
+ firstTitle = a.title;
186
+ else
187
+ firstTitle = (_b = (_a = a.title.english) !== null && _a !== void 0 ? _a : a.title.romaji) !== null && _b !== void 0 ? _b : '';
188
+ if (typeof b.title == 'string')
189
+ secondTitle = b.title;
190
+ else
191
+ secondTitle = (_d = (_c = b.title.english) !== null && _c !== void 0 ? _c : b.title.romaji) !== null && _d !== void 0 ? _d : '';
192
+ const firstRating = (0, utils_1.compareTwoStrings)(targetTitle, firstTitle.toLowerCase());
193
+ const secondRating = (0, utils_1.compareTwoStrings)(targetTitle, secondTitle.toLowerCase());
194
+ // Sort in descending order
195
+ return secondRating - firstRating;
196
+ });
197
+ // TODO: use much better way than this
198
+ return (await this.provider.fetchAnimeInfo(findAnime.results[0].id));
199
+ };
200
+ this.findAnimeSlug = async (title, season, startDate, malId, dub, externalLinks) => {
201
+ var _a, _b, _c;
202
+ // console.log({ title });
203
+ const slug = title === null || title === void 0 ? void 0 : title.replace(/[^0-9a-zA-Z]+/g, ' ');
204
+ let possibleAnime;
205
+ // To avoid a new request, lets match and see if the anime show found is in sub/dub
206
+ const expectedType = dub ? models_1.SubOrSub.DUB : models_1.SubOrSub.SUB;
207
+ if (possibleAnime.subOrDub != models_1.SubOrSub.BOTH && possibleAnime.subOrDub != expectedType) {
208
+ return [];
209
+ }
210
+ if (this.provider instanceof hianime_1.default) {
211
+ // Set the correct episode sub/dub request type
212
+ possibleAnime.episodes.forEach((_, index) => {
213
+ if (possibleAnime.subOrDub === models_1.SubOrSub.BOTH) {
214
+ possibleAnime.episodes[index].id = possibleAnime.episodes[index].id.replace(`$both`, dub ? '$dub' : '$sub');
215
+ }
216
+ });
217
+ }
218
+ const possibleProviderEpisodes = possibleAnime.episodes;
219
+ if (typeof ((_a = possibleProviderEpisodes[0]) === null || _a === void 0 ? void 0 : _a.image) !== 'undefined' &&
220
+ typeof ((_b = possibleProviderEpisodes[0]) === null || _b === void 0 ? void 0 : _b.title) !== 'undefined' &&
221
+ typeof ((_c = possibleProviderEpisodes[0]) === null || _c === void 0 ? void 0 : _c.description) !== 'undefined')
222
+ return possibleProviderEpisodes;
223
+ const options = {
224
+ headers: { 'Content-Type': 'application/json' },
225
+ query: (0, utils_1.kitsuSearchQuery)(slug),
226
+ };
227
+ const newEpisodeList = await this.findKitsuAnime(possibleProviderEpisodes, options, season, startDate);
228
+ return newEpisodeList;
229
+ };
230
+ this.findKitsuAnime = async (possibleProviderEpisodes, options, season, startDate) => {
231
+ const kitsuEpisodes = await this.client.post(this.kitsuGraphqlUrl, options);
232
+ const episodesList = new Map();
233
+ if (kitsuEpisodes === null || kitsuEpisodes === void 0 ? void 0 : kitsuEpisodes.data.data) {
234
+ const { nodes } = kitsuEpisodes.data.data.searchAnimeByTitle;
235
+ if (nodes) {
236
+ nodes.forEach((node) => {
237
+ var _a, _b;
238
+ if (node.season === season && node.startDate.trim().split('-')[0] === (startDate === null || startDate === void 0 ? void 0 : startDate.toString())) {
239
+ const episodes = node.episodes.nodes;
240
+ for (const episode of episodes) {
241
+ const i = episode === null || episode === void 0 ? void 0 : episode.number.toString().replace(/"/g, '');
242
+ let name = undefined;
243
+ let description = undefined;
244
+ let thumbnail = undefined;
245
+ if ((_a = episode === null || episode === void 0 ? void 0 : episode.description) === null || _a === void 0 ? void 0 : _a.en)
246
+ description = episode === null || episode === void 0 ? void 0 : episode.description.en.toString().replace(/"/g, '').replace('\\n', '\n');
247
+ if (episode === null || episode === void 0 ? void 0 : episode.thumbnail)
248
+ thumbnail = episode === null || episode === void 0 ? void 0 : episode.thumbnail.original.url.toString().replace(/"/g, '');
249
+ if (episode) {
250
+ if ((_b = episode.titles) === null || _b === void 0 ? void 0 : _b.canonical)
251
+ name = episode.titles.canonical.toString().replace(/"/g, '');
252
+ episodesList.set(i, {
253
+ episodeNum: episode === null || episode === void 0 ? void 0 : episode.number.toString().replace(/"/g, ''),
254
+ title: name,
255
+ description,
256
+ thumbnail,
257
+ });
258
+ continue;
259
+ }
260
+ episodesList.set(i, {
261
+ episodeNum: undefined,
262
+ title: undefined,
263
+ description: undefined,
264
+ thumbnail,
265
+ });
266
+ }
267
+ }
268
+ });
269
+ }
270
+ }
271
+ const newEpisodeList = [];
272
+ if ((possibleProviderEpisodes === null || possibleProviderEpisodes === void 0 ? void 0 : possibleProviderEpisodes.length) !== 0) {
273
+ possibleProviderEpisodes === null || possibleProviderEpisodes === void 0 ? void 0 : possibleProviderEpisodes.forEach((ep, i) => {
274
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
275
+ const j = (i + 1).toString();
276
+ newEpisodeList.push({
277
+ id: ep.id,
278
+ title: (_c = (_a = ep.title) !== null && _a !== void 0 ? _a : (_b = episodesList.get(j)) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : null,
279
+ image: (_f = (_d = ep.image) !== null && _d !== void 0 ? _d : (_e = episodesList.get(j)) === null || _e === void 0 ? void 0 : _e.thumbnail) !== null && _f !== void 0 ? _f : null,
280
+ number: ep.number,
281
+ description: (_j = (_g = ep.description) !== null && _g !== void 0 ? _g : (_h = episodesList.get(j)) === null || _h === void 0 ? void 0 : _h.description) !== null && _j !== void 0 ? _j : null,
282
+ url: (_k = ep.url) !== null && _k !== void 0 ? _k : null,
283
+ });
284
+ });
285
+ }
286
+ return newEpisodeList;
287
+ };
288
+ /**
289
+ *
290
+ * @param id anime id
291
+ * @returns anime info without streamable episodes
292
+ */
293
+ this.fetchMalInfoById = async (id) => {
294
+ const animeInfo = {
295
+ id: id,
296
+ title: '',
297
+ };
298
+ const { data } = await this.client.request({
299
+ method: 'GET',
300
+ url: `https://myanimelist.net/anime/${id}`,
301
+ headers: {
302
+ 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35',
303
+ },
304
+ });
305
+ const $ = (0, cheerio_1.load)(data);
306
+ const episodes = [];
307
+ const desc = $('[itemprop="description"]').first().text();
308
+ const imageElem = $('[itemprop="image"]').first();
309
+ const image = imageElem.attr('src') || imageElem.attr('data-image') || imageElem.attr('data-src');
310
+ const genres = [];
311
+ const genreDOM = $('[itemprop="genre"]').get();
312
+ genreDOM.forEach(elem => genres.push($(elem).text()));
313
+ animeInfo.genres = genres;
314
+ animeInfo.image = image;
315
+ animeInfo.description = desc;
316
+ animeInfo.title = {
317
+ english: $('.js-alternative-titles.hide').children().eq(0).text().replace('English: ', '').trim(),
318
+ romaji: $('.title-name').text(),
319
+ native: $('.js-alternative-titles.hide').parent().children().eq(9).text().trim(),
320
+ userPreferred: $('.js-alternative-titles.hide').children().eq(0).text().replace('English: ', '').trim(),
321
+ };
322
+ animeInfo.synonyms = $('.js-alternative-titles.hide')
323
+ .parent()
324
+ .children()
325
+ .eq(8)
326
+ .text()
327
+ .replace('Synonyms:', '')
328
+ .trim()
329
+ .split(',');
330
+ animeInfo.studios = [];
331
+ animeInfo.popularity = parseInt($('.numbers.popularity').text().trim().replace('Popularity #', '').trim());
332
+ const producers = [];
333
+ $('a').each(function (i, link) {
334
+ var _a;
335
+ if (((_a = $(link).attr('href')) === null || _a === void 0 ? void 0 : _a.includes('producer')) &&
336
+ $(link).parent().children().eq(0).text() == 'Producers:') {
337
+ producers.push($(link).text());
338
+ }
339
+ });
340
+ animeInfo.producers = producers;
341
+ // animeInfo.episodes = episodes;
342
+ const teaserDOM = $('.video-promotion > a');
343
+ if (teaserDOM.length > 0) {
344
+ const teaserURL = $(teaserDOM).attr('href');
345
+ const style = $(teaserDOM).attr('style');
346
+ if (teaserURL) {
347
+ animeInfo.trailer = {
348
+ id: (0, utils_1.substringAfter)(teaserURL, 'embed/').split('?')[0],
349
+ site: 'https://youtube.com/watch?v=',
350
+ thumbnail: style ? (0, utils_1.substringBefore)((0, utils_1.substringAfter)(style, "url('"), "'") : '',
351
+ };
352
+ }
353
+ }
354
+ const ops = $('.theme-songs.js-theme-songs.opnening').find('tr').get();
355
+ const ignoreList = ['Apple Music', 'Youtube Music', 'Amazon Music', 'Spotify'];
356
+ animeInfo.openings = ops.map((element) => {
357
+ //console.log($(element).text().trim());
358
+ const name = $(element).children().eq(1).children().first().text().trim();
359
+ if (!ignoreList.includes(name)) {
360
+ if ($(element).find('.theme-song-index').length != 0) {
361
+ const index = $(element).find('.theme-song-index').text().trim();
362
+ const band = $(element).find('.theme-song-artist').text().trim();
363
+ const episodes = $(element).find('.theme-song-episode').text().trim();
364
+ //console.log($(element).children().eq(1).text().trim().split(index)[1]);
365
+ return {
366
+ name: $(element).children().eq(1).text().trim().split(index)[1].split(band)[0].trim(),
367
+ band: band.replace('by ', ''),
368
+ episodes: episodes,
369
+ };
370
+ }
371
+ else {
372
+ const band = $(element).find('.theme-song-artist').text().trim();
373
+ const episodes = $(element).find('.theme-song-episode').text().trim();
374
+ return {
375
+ name: $(element).children().eq(1).text().trim().split(band)[0].trim(),
376
+ band: band.replace('by ', ''),
377
+ episodes: episodes,
378
+ };
379
+ }
380
+ }
381
+ });
382
+ animeInfo.openings = animeInfo.openings.filter(function (element) {
383
+ return element !== undefined;
384
+ });
385
+ const eds = $('.theme-songs.js-theme-songs.ending').find('tr').get();
386
+ animeInfo.endings = eds.map((element) => {
387
+ //console.log($(element).text().trim());
388
+ const name = $(element).children().eq(1).children().first().text().trim();
389
+ if (!ignoreList.includes(name)) {
390
+ if ($(element).find('.theme-song-index').length != 0) {
391
+ const index = $(element).find('.theme-song-index').text().trim();
392
+ const band = $(element).find('.theme-song-artist').text().trim();
393
+ const episodes = $(element).find('.theme-song-episode').text().trim();
394
+ //console.log($(element).children().eq(1).text().trim().split(index)[1]);
395
+ return {
396
+ name: $(element).children().eq(1).text().trim().split(index)[1].split(band)[0].trim(),
397
+ band: band.replace('by ', ''),
398
+ episodes: episodes,
399
+ };
400
+ }
401
+ else {
402
+ const band = $(element).find('.theme-song-artist').text().trim();
403
+ const episodes = $(element).find('.theme-song-episode').text().trim();
404
+ return {
405
+ name: $(element).children().eq(1).text().trim().split(band)[0].trim(),
406
+ band: band.replace('by ', ''),
407
+ episodes: episodes,
408
+ };
409
+ }
410
+ }
411
+ });
412
+ animeInfo.endings = animeInfo.endings.filter(function (element) {
413
+ return element !== undefined;
414
+ });
415
+ const description = $('.spaceit_pad').get();
416
+ description.forEach((elem) => {
417
+ var _a;
418
+ const text = $(elem).text().toLowerCase().trim();
419
+ const key = text.split(':')[0];
420
+ const value = (0, utils_1.substringAfter)(text, `${key}:`).trim();
421
+ switch (key) {
422
+ case 'status':
423
+ animeInfo.status = this.malStatusToMediaStatus(value);
424
+ break;
425
+ case 'episodes':
426
+ animeInfo.totalEpisodes = parseInt(value);
427
+ if (isNaN(animeInfo.totalEpisodes))
428
+ animeInfo.totalEpisodes = 0;
429
+ break;
430
+ case 'premiered':
431
+ animeInfo.season = value.split(' ')[0].toUpperCase();
432
+ break;
433
+ case 'aired':
434
+ const dates = value.split('to');
435
+ if (dates.length >= 2) {
436
+ const start = dates[0].trim();
437
+ const end = dates[1].trim();
438
+ const startDate = new Date(start);
439
+ const endDate = new Date(end);
440
+ if (startDate.toString() !== 'Invalid Date') {
441
+ animeInfo.startDate = {
442
+ day: startDate.getDate(),
443
+ month: startDate.getMonth(),
444
+ year: startDate.getFullYear(),
445
+ };
446
+ }
447
+ if (endDate.toString() != 'Invalid Date') {
448
+ animeInfo.endDate = {
449
+ day: endDate.getDate(),
450
+ month: endDate.getMonth(),
451
+ year: endDate.getFullYear(),
452
+ };
453
+ }
454
+ }
455
+ break;
456
+ case 'score':
457
+ animeInfo.rating = parseFloat(value);
458
+ break;
459
+ case 'studios':
460
+ for (const studio of $(elem).find('a'))
461
+ (_a = animeInfo.studios) === null || _a === void 0 ? void 0 : _a.push($(studio).text());
462
+ break;
463
+ case 'rating':
464
+ animeInfo.ageRating = value;
465
+ }
466
+ });
467
+ // Only works on certain animes, so it is unreliable
468
+ // let videoLink = $('.mt4.ar a').attr('href');
469
+ // if (videoLink) {
470
+ // await this.populateEpisodeList(episodes, videoLink);
471
+ // }
472
+ return animeInfo;
473
+ };
474
+ this.provider = provider || new hianime_1.default();
475
+ }
476
+ malStatusToMediaStatus(status) {
477
+ if (status == 'currently airing')
478
+ return models_1.MediaStatus.ONGOING;
479
+ else if (status == 'finished airing')
480
+ return models_1.MediaStatus.COMPLETED;
481
+ else if (status == 'not yet aired')
482
+ return models_1.MediaStatus.NOT_YET_AIRED;
483
+ return models_1.MediaStatus.UNKNOWN;
484
+ }
485
+ async populateEpisodeList(episodes, url, count = 1) {
486
+ try {
487
+ const { data } = await this.client.request({
488
+ method: 'get',
489
+ url: `${url}?p=${count}`,
490
+ headers: {
491
+ 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35',
492
+ },
493
+ });
494
+ let hasEpisodes = false;
495
+ const $ = (0, cheerio_1.load)(data);
496
+ for (const elem of $('.video-list').toArray()) {
497
+ const href = $(elem).attr('href');
498
+ const image = $(elem).find('img').attr('data-src');
499
+ const titleDOM = $(elem).find('.episode-title');
500
+ const title = titleDOM === null || titleDOM === void 0 ? void 0 : titleDOM.text();
501
+ titleDOM.remove();
502
+ const numberDOM = $(elem).find('.title').text().split(' ');
503
+ let number = 0;
504
+ if (numberDOM.length > 1) {
505
+ number = Number(numberDOM[1]);
506
+ }
507
+ if (href && href.indexOf('myanimelist.net/anime') > -1) {
508
+ hasEpisodes = true;
509
+ episodes.push({
510
+ id: '',
511
+ number,
512
+ title,
513
+ image,
514
+ });
515
+ }
516
+ }
517
+ if (hasEpisodes)
518
+ await this.populateEpisodeList(episodes, url, ++count);
519
+ }
520
+ catch (err) {
521
+ console.error(err);
522
+ }
523
+ }
524
+ fetchEpisodeServers(episodeId) {
525
+ return this.provider.fetchEpisodeServers(episodeId);
526
+ }
527
+ }
528
+ exports.default = Myanimelist;
529
+ //# sourceMappingURL=mal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mal.js","sourceRoot":"","sources":["../../../src/providers/meta/mal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { ISearch, IAnimeInfo, IAnimeResult, ISource, IEpisodeServer, MovieParser, TvType, IMovieResult, IMovieInfo, ProxyConfig } from '../../models';
2
+ import { IPeopleResult } from '../../models/types';
3
+ import { AxiosAdapter } from 'axios';
4
+ declare class TMDB extends MovieParser {
5
+ private apiKey;
6
+ readonly name = "TMDB";
7
+ protected baseUrl: string;
8
+ protected apiUrl: string;
9
+ protected logo: string;
10
+ protected classPath: string;
11
+ supportedTypes: Set<TvType>;
12
+ private provider;
13
+ constructor(apiKey?: string, provider?: MovieParser, proxyConfig?: ProxyConfig, adapter?: AxiosAdapter);
14
+ /**
15
+ * @param type trending type: tv series, movie, people or all
16
+ * @param timePeriod trending time period day or week
17
+ * @param page page number
18
+ */
19
+ fetchTrending: (type: string | "all", timePeriod?: "day" | "week", page?: number) => Promise<ISearch<IMovieResult | IAnimeResult | IPeopleResult>>;
20
+ /**
21
+ * @param query search query
22
+ * @param page page number
23
+ */
24
+ search: (query: string, page?: number) => Promise<ISearch<IMovieResult | IAnimeResult>>;
25
+ /**
26
+ * @param id media id (anime or movie/tv)
27
+ * @param type movie or tv
28
+ */
29
+ fetchMediaInfo: (mediaId: string, type: string) => Promise<IMovieInfo | IAnimeInfo>;
30
+ /**
31
+ * Find the id of a media from its title. and extra data. (year, totalSeasons, totalEpisodes)
32
+ * @param title
33
+ * @param extraData
34
+ * @returns id of the media
35
+ */
36
+ private findIdFromTitle;
37
+ /**
38
+ * @param id media id (anime or movie/tv)
39
+ * @param args optional arguments
40
+ */
41
+ fetchEpisodeSources: (id: string, ...args: any) => Promise<ISource>;
42
+ /**
43
+ * @param episodeId episode id
44
+ * @param args optional arguments
45
+ **/
46
+ fetchEpisodeServers: (episodeId: string, ...args: any) => Promise<IEpisodeServer[]>;
47
+ }
48
+ export default TMDB;