@media-engine/providers 0.1.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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +295 -0
  3. package/dist/anilist/index.d.ts +9 -0
  4. package/dist/anilist/index.js +279 -0
  5. package/dist/anilist/index.js.map +1 -0
  6. package/dist/cinemeta/index.d.ts +12 -0
  7. package/dist/cinemeta/index.js +379 -0
  8. package/dist/cinemeta/index.js.map +1 -0
  9. package/dist/experimental-streaming/index.d.ts +24 -0
  10. package/dist/experimental-streaming/index.js +199 -0
  11. package/dist/experimental-streaming/index.js.map +1 -0
  12. package/dist/flixhq-streaming/index.d.ts +30 -0
  13. package/dist/flixhq-streaming/index.js +625 -0
  14. package/dist/flixhq-streaming/index.js.map +1 -0
  15. package/dist/imdb-dataset/index.d.ts +9 -0
  16. package/dist/imdb-dataset/index.js +307 -0
  17. package/dist/imdb-dataset/index.js.map +1 -0
  18. package/dist/index.d.ts +10 -0
  19. package/dist/index.js +11 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/kinobd/index.d.ts +11 -0
  22. package/dist/kinobd/index.js +405 -0
  23. package/dist/kinobd/index.js.map +1 -0
  24. package/dist/kinobd-streaming/index.d.ts +31 -0
  25. package/dist/kinobd-streaming/index.js +919 -0
  26. package/dist/kinobd-streaming/index.js.map +1 -0
  27. package/dist/shared/http.d.ts +17 -0
  28. package/dist/shared/http.js +264 -0
  29. package/dist/shared/http.js.map +1 -0
  30. package/dist/shared/index.d.ts +1 -0
  31. package/dist/shared/index.js +2 -0
  32. package/dist/shared/index.js.map +1 -0
  33. package/dist/shikimori/index.d.ts +12 -0
  34. package/dist/shikimori/index.js +457 -0
  35. package/dist/shikimori/index.js.map +1 -0
  36. package/dist/wikidata/index.d.ts +12 -0
  37. package/dist/wikidata/index.js +356 -0
  38. package/dist/wikidata/index.js.map +1 -0
  39. package/package.json +62 -0
@@ -0,0 +1,9 @@
1
+ import { type MediaProvider } from "@media-engine/core";
2
+ export interface ImdbDatasetProviderOptions {
3
+ titleBasicsTsv: string;
4
+ titleRatingsTsv?: string;
5
+ includeAdult?: boolean;
6
+ version?: string;
7
+ searchLimit?: number;
8
+ }
9
+ export declare function imdbDatasetProvider(options: ImdbDatasetProviderOptions): MediaProvider;
@@ -0,0 +1,307 @@
1
+ const PROVIDER_NAME = "imdb-dataset";
2
+ const DEFAULT_SEARCH_LIMIT = 20;
3
+ // Creates a local IMDb dataset provider without live scraping or unofficial APIs.
4
+ // Создает локальный IMDb dataset provider без live scraping и неофициальных API.
5
+ export function imdbDatasetProvider(options) {
6
+ const config = createImdbDatasetConfig(options);
7
+ return {
8
+ name: PROVIDER_NAME,
9
+ version: options.version,
10
+ kind: "metadata",
11
+ capabilities: {
12
+ mediaTypes: ["movie", "series"],
13
+ search: {
14
+ byTitle: true,
15
+ byExternalIds: ["imdb"],
16
+ },
17
+ details: {
18
+ byExternalIds: ["imdb"],
19
+ },
20
+ features: ["ratings", "genres"],
21
+ },
22
+ async search(query, context) {
23
+ return searchImdbDataset(config, query, context.debug);
24
+ },
25
+ async getDetails(query, context) {
26
+ return getImdbDatasetDetails(config, query, context.debug);
27
+ },
28
+ };
29
+ }
30
+ // Parses TSV content and builds lookup maps once at provider creation time.
31
+ // Парсит TSV content и строит lookup maps один раз при создании provider.
32
+ function createImdbDatasetConfig(options) {
33
+ const recordsById = new Map();
34
+ for (const row of parseTsv(options.titleBasicsTsv)) {
35
+ const record = mapTitleBasicsRow(row, options.includeAdult ?? false);
36
+ if (record) {
37
+ recordsById.set(record.tconst, record);
38
+ }
39
+ }
40
+ return {
41
+ recordsById,
42
+ ratingsById: parseRatings(options.titleRatingsTsv),
43
+ searchLimit: options.searchLimit ?? DEFAULT_SEARCH_LIMIT,
44
+ };
45
+ }
46
+ // Runs local title or IMDb ID search over parsed IMDb title records.
47
+ // Выполняет локальный поиск по названию или IMDb ID по распарсенным title records.
48
+ function searchImdbDataset(config, query, debug) {
49
+ if (query.type === "anime") {
50
+ return [];
51
+ }
52
+ if (query.ids?.imdb) {
53
+ const record = config.recordsById.get(query.ids.imdb);
54
+ return record && matchesType(record, query.type)
55
+ ? [createSearchResult(config, record, debug, 1)]
56
+ : [];
57
+ }
58
+ const normalizedTitle = normalizeSearchText(query.title ?? "");
59
+ if (!normalizedTitle) {
60
+ return [];
61
+ }
62
+ const limit = query.limit ?? config.searchLimit;
63
+ const matches = [];
64
+ for (const record of config.recordsById.values()) {
65
+ if (!matchesType(record, query.type) ||
66
+ (query.year !== undefined && record.startYear !== query.year)) {
67
+ continue;
68
+ }
69
+ const score = scoreTitle(record, normalizedTitle);
70
+ if (score <= 0) {
71
+ continue;
72
+ }
73
+ const candidate = { record, score };
74
+ const worstMatch = matches.at(-1);
75
+ if (matches.length >= limit && worstMatch && compareSearchMatches(candidate, worstMatch) >= 0) {
76
+ continue;
77
+ }
78
+ matches.push(candidate);
79
+ matches.sort(compareSearchMatches);
80
+ if (matches.length > limit) {
81
+ matches.pop();
82
+ }
83
+ }
84
+ return matches.map((entry) => createSearchResult(config, entry.record, debug, entry.score));
85
+ }
86
+ // Loads local details by IMDb title ID.
87
+ // Загружает локальные details по IMDb title ID.
88
+ function getImdbDatasetDetails(config, query, debug) {
89
+ const imdbId = query.ids?.imdb;
90
+ if (!imdbId || query.type === "anime") {
91
+ return null;
92
+ }
93
+ const record = config.recordsById.get(imdbId);
94
+ if (!record || !matchesType(record, query.type)) {
95
+ return null;
96
+ }
97
+ const details = recordToDetails(config, record);
98
+ return {
99
+ provider: PROVIDER_NAME,
100
+ details,
101
+ source: createProviderSource(record),
102
+ raw: debug ? record : undefined,
103
+ confidence: 1,
104
+ };
105
+ }
106
+ // Converts one IMDb title row into a provider search result.
107
+ // Преобразует одну IMDb title row в provider search result.
108
+ function createSearchResult(config, record, debug, confidence) {
109
+ return {
110
+ provider: PROVIDER_NAME,
111
+ item: recordToItem(config, record),
112
+ source: createProviderSource(record),
113
+ raw: debug ? record : undefined,
114
+ confidence,
115
+ };
116
+ }
117
+ // Converts an IMDb title record into a compact MediaItem.
118
+ // Преобразует IMDb title record в compact MediaItem.
119
+ function recordToItem(config, record) {
120
+ return {
121
+ id: `${PROVIDER_NAME}-${record.tconst}`,
122
+ type: record.type,
123
+ title: record.primaryTitle,
124
+ originalTitle: record.originalTitle,
125
+ year: record.startYear,
126
+ genres: mapGenres(record.genres),
127
+ ratings: mapRating(config.ratingsById.get(record.tconst)),
128
+ ids: createIds(record),
129
+ };
130
+ }
131
+ // Converts an IMDb title record into basic movie or series details.
132
+ // Преобразует IMDb title record в базовые details фильма или сериала.
133
+ function recordToDetails(config, record) {
134
+ const item = recordToItem(config, record);
135
+ const sourceProviders = [createProviderSource(record)];
136
+ if (record.type === "series") {
137
+ const details = {
138
+ ...item,
139
+ type: "series",
140
+ runtimeMinutes: record.runtimeMinutes,
141
+ sourceProviders,
142
+ };
143
+ return details;
144
+ }
145
+ const details = {
146
+ ...item,
147
+ type: "movie",
148
+ runtimeMinutes: record.runtimeMinutes,
149
+ sourceProviders,
150
+ };
151
+ return details;
152
+ }
153
+ // Maps IMDb TSV title.basics rows into normalized title records.
154
+ // Мапит IMDb TSV title.basics rows в нормализованные title records.
155
+ function mapTitleBasicsRow(row, includeAdult) {
156
+ const type = mapTitleType(row.titleType);
157
+ if (!type || (!includeAdult && row.isAdult === "1")) {
158
+ return undefined;
159
+ }
160
+ const originalTitle = emptyToUndefined(row.originalTitle);
161
+ return {
162
+ tconst: row.tconst,
163
+ type,
164
+ primaryTitle: row.primaryTitle,
165
+ originalTitle,
166
+ startYear: parseNumber(row.startYear),
167
+ endYear: parseNumber(row.endYear),
168
+ runtimeMinutes: parseNumber(row.runtimeMinutes),
169
+ genres: parseList(row.genres),
170
+ normalizedPrimaryTitle: normalizeSearchText(row.primaryTitle),
171
+ normalizedOriginalTitle: normalizeSearchText(originalTitle ?? ""),
172
+ };
173
+ }
174
+ // Parses optional IMDb title.ratings TSV content.
175
+ // Парсит опциональный IMDb title.ratings TSV content.
176
+ function parseRatings(tsv) {
177
+ const ratings = new Map();
178
+ if (!tsv) {
179
+ return ratings;
180
+ }
181
+ for (const row of parseTsv(tsv)) {
182
+ const rating = parseNumber(row.averageRating);
183
+ if (row.tconst && rating !== undefined) {
184
+ ratings.set(row.tconst, {
185
+ averageRating: rating,
186
+ numVotes: parseNumber(row.numVotes),
187
+ });
188
+ }
189
+ }
190
+ return ratings;
191
+ }
192
+ // Parses TSV content into rows keyed by header names.
193
+ // Парсит TSV content в rows с ключами из header names.
194
+ function* parseTsv(content) {
195
+ const firstLineEnd = content.indexOf("\n");
196
+ const headerLine = (firstLineEnd < 0 ? content : content.slice(0, firstLineEnd)).replace(/\r$/, "");
197
+ const headers = headerLine.split("\t");
198
+ let offset = firstLineEnd < 0 ? content.length : firstLineEnd + 1;
199
+ while (offset < content.length) {
200
+ const nextLineEnd = content.indexOf("\n", offset);
201
+ const lineEnd = nextLineEnd < 0 ? content.length : nextLineEnd;
202
+ const line = content.slice(offset, lineEnd).replace(/\r$/, "");
203
+ offset = nextLineEnd < 0 ? content.length : nextLineEnd + 1;
204
+ if (!line) {
205
+ continue;
206
+ }
207
+ const values = line.split("\t");
208
+ const row = {};
209
+ headers.forEach((header, index) => {
210
+ row[header] = values[index] ?? "";
211
+ });
212
+ yield row;
213
+ }
214
+ }
215
+ // Maps IMDb titleType into Media Engine type.
216
+ // Мапит IMDb titleType в тип Media Engine.
217
+ function mapTitleType(titleType) {
218
+ if (titleType === "movie") {
219
+ return "movie";
220
+ }
221
+ if (titleType === "tvSeries") {
222
+ return "series";
223
+ }
224
+ return undefined;
225
+ }
226
+ // Creates normalized IMDb external IDs.
227
+ // Создает нормализованные IMDb external IDs.
228
+ function createIds(record) {
229
+ return {
230
+ imdb: record.tconst,
231
+ };
232
+ }
233
+ // Creates source attribution for IMDb dataset records.
234
+ // Создает source attribution для IMDb dataset records.
235
+ function createProviderSource(record) {
236
+ return {
237
+ provider: PROVIDER_NAME,
238
+ ids: createIds(record),
239
+ url: `https://www.imdb.com/title/${record.tconst}/`,
240
+ };
241
+ }
242
+ // Maps IMDb genres into normalized genre labels.
243
+ // Мапит IMDb genres в нормализованные genre labels.
244
+ function mapGenres(genres) {
245
+ return genres?.map((genre) => ({
246
+ name: genre,
247
+ source: PROVIDER_NAME,
248
+ }));
249
+ }
250
+ // Maps IMDb rating row into normalized rating.
251
+ // Мапит IMDb rating row в нормализованный rating.
252
+ function mapRating(rating) {
253
+ return rating
254
+ ? [
255
+ {
256
+ source: "imdb",
257
+ value: rating.averageRating,
258
+ max: 10,
259
+ votes: rating.numVotes,
260
+ },
261
+ ]
262
+ : undefined;
263
+ }
264
+ // Scores a record title against a normalized search query.
265
+ // Оценивает record title относительно нормализованного search query.
266
+ function scoreTitle(record, normalizedQuery) {
267
+ const primary = record.normalizedPrimaryTitle;
268
+ const original = record.normalizedOriginalTitle;
269
+ if (primary === normalizedQuery || original === normalizedQuery) {
270
+ return 1;
271
+ }
272
+ if (primary.includes(normalizedQuery) || original.includes(normalizedQuery)) {
273
+ return 0.75;
274
+ }
275
+ return 0;
276
+ }
277
+ function matchesType(record, type) {
278
+ return type === undefined || type === record.type;
279
+ }
280
+ function normalizeSearchText(value) {
281
+ return value
282
+ .toLocaleLowerCase()
283
+ .replaceAll(/[^\p{L}\p{N}]+/gu, " ")
284
+ .trim();
285
+ }
286
+ function parseList(value) {
287
+ const normalized = emptyToUndefined(value);
288
+ return normalized ? normalized.split(",").filter(Boolean) : undefined;
289
+ }
290
+ function parseNumber(value) {
291
+ const normalized = emptyToUndefined(value);
292
+ if (!normalized) {
293
+ return undefined;
294
+ }
295
+ const parsed = Number(normalized);
296
+ return Number.isFinite(parsed) ? parsed : undefined;
297
+ }
298
+ function emptyToUndefined(value) {
299
+ return value && value !== "\\N" ? value : undefined;
300
+ }
301
+ function compareNumbers(left, right) {
302
+ return (right ?? 0) - (left ?? 0);
303
+ }
304
+ function compareSearchMatches(left, right) {
305
+ return right.score - left.score || compareNumbers(left.record.startYear, right.record.startYear);
306
+ }
307
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/imdb-dataset/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export * from "./shared/index.js";
2
+ export * from "./kinobd/index.js";
3
+ export * from "./cinemeta/index.js";
4
+ export * from "./shikimori/index.js";
5
+ export * from "./anilist/index.js";
6
+ export * from "./wikidata/index.js";
7
+ export * from "./imdb-dataset/index.js";
8
+ export * from "./experimental-streaming/index.js";
9
+ export * from "./kinobd-streaming/index.js";
10
+ export * from "./flixhq-streaming/index.js";
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from "./shared/index.js";
2
+ export * from "./kinobd/index.js";
3
+ export * from "./cinemeta/index.js";
4
+ export * from "./shikimori/index.js";
5
+ export * from "./anilist/index.js";
6
+ export * from "./wikidata/index.js";
7
+ export * from "./imdb-dataset/index.js";
8
+ export * from "./experimental-streaming/index.js";
9
+ export * from "./kinobd-streaming/index.js";
10
+ export * from "./flixhq-streaming/index.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type MediaProvider } from "@media-engine/core";
2
+ import { type ProviderFetch } from "../shared/index.js";
3
+ export interface KinoBdProviderOptions {
4
+ baseUrl?: string;
5
+ fetch?: ProviderFetch;
6
+ version?: string;
7
+ searchLimit?: number;
8
+ imageLimit?: number;
9
+ personLimit?: number;
10
+ }
11
+ export declare function kinobdProvider(options?: KinoBdProviderOptions): MediaProvider;