@media-engine/core 0.1.1 → 1.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 (92) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +48 -20
  3. package/README.ru.md +46 -19
  4. package/dist/cache/memory.js +10 -8
  5. package/dist/cache/memory.js.map +1 -1
  6. package/dist/details/types.d.ts +6 -0
  7. package/dist/engine/availability.d.ts +1 -0
  8. package/dist/engine/availability.js +8 -0
  9. package/dist/engine/availability.js.map +1 -1
  10. package/dist/engine/circuit-breaker.d.ts +1 -0
  11. package/dist/engine/circuit-breaker.js +11 -0
  12. package/dist/engine/circuit-breaker.js.map +1 -1
  13. package/dist/engine/concurrency-limiter.js +2 -2
  14. package/dist/engine/concurrency-limiter.js.map +1 -1
  15. package/dist/engine/engine.d.ts +9 -4
  16. package/dist/engine/engine.js +294 -104
  17. package/dist/engine/engine.js.map +1 -1
  18. package/dist/engine/in-flight.d.ts +12 -1
  19. package/dist/engine/in-flight.js +69 -14
  20. package/dist/engine/in-flight.js.map +1 -1
  21. package/dist/engine/operation.d.ts +7 -0
  22. package/dist/engine/operation.js +49 -0
  23. package/dist/engine/operation.js.map +1 -0
  24. package/dist/engine/provider-calls.d.ts +11 -0
  25. package/dist/engine/provider-calls.js +63 -12
  26. package/dist/engine/provider-calls.js.map +1 -1
  27. package/dist/engine/query.d.ts +6 -1
  28. package/dist/engine/query.js +228 -36
  29. package/dist/engine/query.js.map +1 -1
  30. package/dist/engine/response-meta.d.ts +3 -1
  31. package/dist/engine/response-meta.js +8 -1
  32. package/dist/engine/response-meta.js.map +1 -1
  33. package/dist/engine/runtime.d.ts +2 -0
  34. package/dist/engine/runtime.js +19 -0
  35. package/dist/engine/runtime.js.map +1 -1
  36. package/dist/engine/search-discovery.d.ts +3 -0
  37. package/dist/engine/search-discovery.js +35 -0
  38. package/dist/engine/search-discovery.js.map +1 -0
  39. package/dist/engine/search-enrichment-shared.d.ts +23 -0
  40. package/dist/engine/search-enrichment-shared.js +68 -0
  41. package/dist/engine/search-enrichment-shared.js.map +1 -0
  42. package/dist/engine/search-enrichment.d.ts +21 -7
  43. package/dist/engine/search-enrichment.js +135 -75
  44. package/dist/engine/search-enrichment.js.map +1 -1
  45. package/dist/engine/search-identity-snapshot.d.ts +15 -0
  46. package/dist/engine/search-identity-snapshot.js +101 -0
  47. package/dist/engine/search-identity-snapshot.js.map +1 -0
  48. package/dist/engine/search-outcomes.d.ts +32 -0
  49. package/dist/engine/search-outcomes.js +118 -0
  50. package/dist/engine/search-outcomes.js.map +1 -0
  51. package/dist/engine/search-poster-enrichment.d.ts +31 -0
  52. package/dist/engine/search-poster-enrichment.js +93 -0
  53. package/dist/engine/search-poster-enrichment.js.map +1 -0
  54. package/dist/engine/search-result-freeze.d.ts +13 -0
  55. package/dist/engine/search-result-freeze.js +155 -0
  56. package/dist/engine/search-result-freeze.js.map +1 -0
  57. package/dist/engine/torrents.d.ts +22 -0
  58. package/dist/engine/torrents.js +188 -0
  59. package/dist/engine/torrents.js.map +1 -0
  60. package/dist/engine/types.d.ts +7 -1
  61. package/dist/errors/types.d.ts +1 -1
  62. package/dist/errors/types.js.map +1 -1
  63. package/dist/index.d.ts +2 -1
  64. package/dist/index.js +1 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/media/types.d.ts +1 -1
  67. package/dist/merge/diversity.d.ts +15 -0
  68. package/dist/merge/diversity.js +52 -0
  69. package/dist/merge/diversity.js.map +1 -0
  70. package/dist/merge/priority.js +3 -1
  71. package/dist/merge/priority.js.map +1 -1
  72. package/dist/merge/scoring.d.ts +10 -0
  73. package/dist/merge/scoring.js +132 -28
  74. package/dist/merge/scoring.js.map +1 -1
  75. package/dist/merge/strategy.js +53 -13
  76. package/dist/merge/strategy.js.map +1 -1
  77. package/dist/providers/registry.d.ts +4 -2
  78. package/dist/providers/registry.js +11 -2
  79. package/dist/providers/registry.js.map +1 -1
  80. package/dist/providers/types.d.ts +4 -0
  81. package/dist/response/types.d.ts +20 -0
  82. package/dist/search/types.d.ts +34 -0
  83. package/dist/streaming/types.d.ts +1 -0
  84. package/dist/testing/providers.js +2 -0
  85. package/dist/testing/providers.js.map +1 -1
  86. package/dist/torrent/index.d.ts +1 -0
  87. package/dist/torrent/index.js +2 -0
  88. package/dist/torrent/index.js.map +1 -0
  89. package/dist/torrent/types.d.ts +132 -0
  90. package/dist/torrent/types.js +2 -0
  91. package/dist/torrent/types.js.map +1 -0
  92. package/package.json +8 -3
@@ -0,0 +1,52 @@
1
+ import { normalizeTitle } from "./title.js";
2
+ const DIVERSITY_WINDOW_SIZE = 10;
3
+ const MAX_RESULTS_PER_FAMILY = 2;
4
+ const SCORE_TOLERANCE = 0.03;
5
+ const TITLE_SCORE_TOLERANCE = 0.05;
6
+ // Interleaves only similarly ranked title/type families inside a bounded leading window.
7
+ // Чередует только близкие по ranking title/type families внутри ограниченного верхнего окна.
8
+ export function diversifySearchCandidates(candidates, enabled) {
9
+ const positioned = candidates.map((candidate, index) => ({
10
+ ...candidate,
11
+ scorePosition: index + 1,
12
+ diversityFamily: createDiversityFamily(candidate),
13
+ }));
14
+ if (!enabled || positioned.length < MAX_RESULTS_PER_FAMILY + 1) {
15
+ return positioned.map((candidate, index) => ({
16
+ ...candidate,
17
+ diversityPosition: index + 1,
18
+ }));
19
+ }
20
+ const pending = positioned.slice(0, DIVERSITY_WINDOW_SIZE);
21
+ const diversified = [];
22
+ const familyCounts = new Map();
23
+ while (pending.length > 0) {
24
+ const crowded = pending[0];
25
+ const crowdedCount = familyCounts.get(crowded.diversityFamily) ?? 0;
26
+ const alternativeIndex = crowdedCount >= MAX_RESULTS_PER_FAMILY
27
+ ? pending.findIndex((candidate, index) => index > 0 &&
28
+ candidate.diversityFamily !== crowded.diversityFamily &&
29
+ (familyCounts.get(candidate.diversityFamily) ?? 0) < MAX_RESULTS_PER_FAMILY &&
30
+ isComparableCandidate(candidate, crowded))
31
+ : -1;
32
+ const [selected] = pending.splice(alternativeIndex > 0 ? alternativeIndex : 0, 1);
33
+ if (!selected) {
34
+ break;
35
+ }
36
+ diversified.push(selected);
37
+ familyCounts.set(selected.diversityFamily, (familyCounts.get(selected.diversityFamily) ?? 0) + 1);
38
+ }
39
+ return [...diversified, ...positioned.slice(DIVERSITY_WINDOW_SIZE)].map((candidate, index) => ({
40
+ ...candidate,
41
+ diversityPosition: index + 1,
42
+ }));
43
+ }
44
+ function createDiversityFamily(candidate) {
45
+ const matchedTitle = candidate.ranking.titleMatch.matchedTitle ?? candidate.title;
46
+ return `${candidate.mediaType}:${normalizeTitle(matchedTitle)}`;
47
+ }
48
+ function isComparableCandidate(candidate, crowded) {
49
+ return (candidate.score >= crowded.score - SCORE_TOLERANCE &&
50
+ candidate.ranking.titleMatch.score >= crowded.ranking.titleMatch.score - TITLE_SCORE_TOLERANCE);
51
+ }
52
+ //# sourceMappingURL=diversity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diversity.js","sourceRoot":"","sources":["../../src/merge/diversity.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // Default provider priority for movies and series.
2
2
  // Приоритет провайдеров по умолчанию для фильмов и сериалов.
3
- const DEFAULT_PRIORITY = ["tmdb", "kinobd", "cinemeta", "imdb", "wikidata", "kinopoisk"];
3
+ const DEFAULT_PRIORITY = ["tmdb", "kinobd", "cinemeta", "tvmaze", "imdb", "wikidata", "kinopoisk"];
4
4
  // Default provider priority for anime results.
5
5
  // Приоритет провайдеров по умолчанию для аниме.
6
6
  const ANIME_PRIORITY = [
@@ -9,6 +9,7 @@ const ANIME_PRIORITY = [
9
9
  "tmdb",
10
10
  "kinobd",
11
11
  "cinemeta",
12
+ "tvmaze",
12
13
  "imdb",
13
14
  "wikidata",
14
15
  "kinopoisk",
@@ -19,6 +20,7 @@ export const SEARCH_RESULT_PRIORITY = [
19
20
  "tmdb",
20
21
  "kinobd",
21
22
  "cinemeta",
23
+ "tvmaze",
22
24
  "imdb",
23
25
  "wikidata",
24
26
  "kinopoisk",
@@ -1 +1 @@
1
- {"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/merge/priority.ts"],"names":[],"mappings":"AAGA,mDAAmD;AACnD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEzF,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,SAAS;IACT,MAAM;IACN,QAAQ;IACR,UAAU;IACV,MAAM;IACN,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,QAAQ;IACR,UAAU;IACV,MAAM;IACN,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAEF,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CACnC,OAAY,EACZ,OAAqB,EACrB,SAAqB;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,YAAY,GAChB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE/F,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,QAAkB;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AAED,0DAA0D;AAC1D,gEAAgE;AAChE,SAAS,eAAe,CAAC,SAAqB;IAC5C,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAED,oDAAoD;AACpD,sDAAsD;AACtD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/merge/priority.ts"],"names":[],"mappings":"AAGA,mDAAmD;AACnD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAEnG,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,SAAS;IACT,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,MAAM;IACN,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAEF,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CACnC,OAAY,EACZ,OAAqB,EACrB,SAAqB;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IAExE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,YAAY,GAChB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE/F,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,QAAkB;IAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AAED,0DAA0D;AAC1D,gEAAgE;AAChE,SAAS,eAAe,CAAC,SAAqB;IAC5C,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAED,oDAAoD;AACpD,sDAAsD;AACtD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -1,5 +1,15 @@
1
+ import type { SearchRankEvidence, SearchTitleMatchKind } from "../search/index.js";
1
2
  import type { SearchEntry, SearchGroup } from "./internal.js";
2
3
  import type { MergeContext } from "./types.js";
3
4
  export declare function scoreGroup(group: SearchGroup, entries: SearchEntry[], context: MergeContext): number;
5
+ export declare function rankSearchGroup(group: SearchGroup, entries: SearchEntry[], context: MergeContext): {
6
+ score: number;
7
+ evidence: Omit<SearchRankEvidence, "scorePosition" | "diversityPosition" | "finalPosition" | "diversity">;
8
+ };
4
9
  export declare function hasExactPrimaryTitle(entries: SearchEntry[], queryTitle: string): boolean;
5
10
  export declare function titleRelevanceScore(entries: SearchEntry[], queryTitle: string): number;
11
+ export declare function titleRelevanceEvidence(entries: SearchEntry[], queryTitle: string): {
12
+ kind: SearchTitleMatchKind;
13
+ score: number;
14
+ matchedTitle?: string;
15
+ };
@@ -1,36 +1,50 @@
1
1
  import { hasSharedStrongId } from "./identity.js";
2
- import { STRONG_ID_KEYS } from "./internal.js";
3
2
  import { normalizeTitle, titleCandidates } from "./title.js";
4
3
  // Calculates a public score from match strength, query relevance, and popularity signals.
5
4
  // Вычисляет публичную оценку по силе совпадения, релевантности запросу и популярности.
6
5
  export function scoreGroup(group, entries, context) {
6
+ return rankSearchGroup(group, entries, context).score;
7
+ }
8
+ // Calculates the public score and its debug explanation from the same normalized signals.
9
+ // Вычисляет публичный score и его debug-объяснение из одних и тех же сигналов.
10
+ export function rankSearchGroup(group, entries, context) {
7
11
  const query = context.query;
8
12
  const queryIds = "ids" in (query ?? {}) ? query?.ids : undefined;
9
13
  const queryTitle = "title" in (query ?? {}) ? query?.title : undefined;
10
14
  if (queryIds && entries.some((entry) => hasSharedStrongId(queryIds, entry.result.item.ids))) {
11
- return 1;
15
+ return createRankResult("external_id", group, 1, emptyTitleMatch(), {
16
+ base: signal(1, 1),
17
+ });
12
18
  }
13
19
  if (!queryTitle?.trim()) {
14
- return baseGroupScore(group, entries);
20
+ const baseScore = baseGroupScore(group, entries);
21
+ return createRankResult("non_text", group, baseScore, emptyTitleMatch(), {
22
+ base: signal(baseScore, 1),
23
+ });
15
24
  }
16
25
  const baseScore = baseTextSearchScore(group, entries);
17
- const titleScore = titleRelevanceScore(entries, queryTitle);
26
+ const titleMatch = titleRelevanceEvidence(entries, queryTitle);
27
+ const titleScore = titleMatch.score;
18
28
  const exactPrimaryTitleScore = hasExactPrimaryTitle(entries, queryTitle) ? 1 : 0;
19
29
  const popularityScore = ratingVotesScore(entries);
20
30
  const ratingScore = normalizedRatingScore(entries);
21
31
  const idScore = externalIdCompletenessScore(entries);
22
32
  const sourceScore = sourceCoverageScore(entries);
23
33
  const authorityScore = sourceAuthorityScore(entries);
24
- return boundedTextScore(baseScore +
25
- titleScore * 0.2 +
34
+ const signals = {
35
+ base: signal(baseScore, 1),
36
+ title: signal(titleScore, 0.2),
26
37
  // Prefer exact primary/original intent over prefix and incidental-alias noise while
27
38
  // still allowing overwhelmingly corroborated canonical results for broad short queries.
28
- exactPrimaryTitleScore * 0.3 +
29
- popularityScore * 0.15 +
30
- ratingScore * 0.05 +
31
- idScore * 0.01 +
32
- sourceScore * 0.02 +
33
- authorityScore * 0.15);
39
+ exactPrimaryTitle: signal(exactPrimaryTitleScore, 0.3),
40
+ popularity: signal(popularityScore, 0.15),
41
+ rating: signal(ratingScore, 0.03),
42
+ externalIds: signal(idScore, 0.2),
43
+ sourceCoverage: signal(sourceScore, 0.02),
44
+ sourceAuthority: signal(authorityScore, 0.1),
45
+ };
46
+ const preBoundedScore = Object.values(signals).reduce((total, rankingSignal) => total + rankingSignal.contribution, 0);
47
+ return createRankResult("text", group, boundedTextScore(preBoundedScore), titleMatch, signals);
34
48
  }
35
49
  // Distinguishes exact primary/original titles from incidental alternative aliases.
36
50
  // Отличает точные основные/оригинальные названия от случайных alternative aliases.
@@ -43,11 +57,36 @@ export function hasExactPrimaryTitle(entries, queryTitle) {
43
57
  // Scores how well result titles match the user's text query.
44
58
  // Оценивает, насколько названия результатов совпадают с текстовым запросом пользователя.
45
59
  export function titleRelevanceScore(entries, queryTitle) {
60
+ return titleRelevanceEvidence(entries, queryTitle).score;
61
+ }
62
+ // Returns the strongest deterministic title match used by ranking and debug evidence.
63
+ // Возвращает сильнейшее детерминированное title match для ranking и debug evidence.
64
+ export function titleRelevanceEvidence(entries, queryTitle) {
46
65
  const normalizedQuery = normalizeTitle(queryTitle);
47
66
  if (!normalizedQuery) {
48
- return 0;
67
+ return emptyTitleMatch();
68
+ }
69
+ let best = { kind: "none", score: 0 };
70
+ for (const entry of entries) {
71
+ const primaryTitles = new Set([entry.result.item.title, entry.result.item.originalTitle]
72
+ .filter((title) => Boolean(title))
73
+ .map(normalizeTitle));
74
+ for (const title of titleCandidates(entry.result.item)) {
75
+ const match = scoreNormalizedTitle(normalizeTitle(title), normalizedQuery);
76
+ if (match.score > best.score) {
77
+ best = {
78
+ kind: match.kind === "exact"
79
+ ? primaryTitles.has(normalizeTitle(title))
80
+ ? "exact_primary"
81
+ : "exact_alias"
82
+ : match.kind,
83
+ score: match.score,
84
+ matchedTitle: title,
85
+ };
86
+ }
87
+ }
49
88
  }
50
- return Math.max(...entries.flatMap((entry) => titleCandidates(entry.result.item).map((title) => scoreNormalizedTitle(normalizeTitle(title), normalizedQuery))));
89
+ return best;
51
90
  }
52
91
  // Keeps legacy scores for non-title searches where no relevance ranking is possible.
53
92
  // Сохраняет прежние оценки для поиска без title, где нельзя посчитать релевантность.
@@ -90,32 +129,75 @@ function bestProviderConfidence(entries) {
90
129
  // Оценивает одно нормализованное название против одного нормализованного запроса.
91
130
  function scoreNormalizedTitle(title, query) {
92
131
  if (!title) {
93
- return 0;
132
+ return { kind: "none", score: 0 };
94
133
  }
95
134
  if (title === query) {
96
- return 1;
135
+ return { kind: "exact", score: 1 };
97
136
  }
98
137
  if (title.replace(/\s+/g, "") === query.replace(/\s+/g, "")) {
99
- return 0.98;
138
+ return { kind: "joined", score: 0.98 };
100
139
  }
101
140
  if (title.startsWith(`${query} `)) {
102
- return 0.92;
141
+ return { kind: "prefix", score: adjustPartialTitleScore(0.92, title, query) };
103
142
  }
104
143
  if (title.includes(` ${query} `) || title.endsWith(` ${query}`)) {
105
- return 0.75;
144
+ return { kind: "contains", score: adjustPartialTitleScore(0.75, title, query) };
106
145
  }
107
146
  const queryTokens = query.split(" ").filter(Boolean);
108
147
  if (queryTokens.length > 0 && queryTokens.every((token) => title.includes(token))) {
109
- return 0.55;
148
+ return { kind: "all_tokens", score: adjustPartialTitleScore(0.55, title, query) };
110
149
  }
111
150
  const titleTokens = title.split(" ").filter(Boolean);
112
151
  const fuzzyTokenScores = queryTokens.map((queryToken) => Math.max(...titleTokens.map((titleToken) => fuzzyTokenSimilarity(queryToken, titleToken)), 0));
113
152
  const minimumFuzzyScore = queryTokens.length >= 3 ? 0.7 : 0.75;
114
153
  if (fuzzyTokenScores.length > 0 &&
115
154
  fuzzyTokenScores.every((score) => score >= minimumFuzzyScore)) {
116
- return ((fuzzyTokenScores.reduce((sum, score) => sum + score, 0) / fuzzyTokenScores.length) * 0.7);
155
+ return {
156
+ kind: "fuzzy",
157
+ score: adjustPartialTitleScore((fuzzyTokenScores.reduce((sum, score) => sum + score, 0) / fuzzyTokenScores.length) * 0.7, title, query),
158
+ };
117
159
  }
118
- return 0;
160
+ return { kind: "none", score: 0 };
161
+ }
162
+ function createRankResult(formula, group, score, titleMatch, partialSignals) {
163
+ const zero = signal(0, 0);
164
+ const signals = {
165
+ base: partialSignals.base ?? zero,
166
+ title: partialSignals.title ?? zero,
167
+ exactPrimaryTitle: partialSignals.exactPrimaryTitle ?? zero,
168
+ popularity: partialSignals.popularity ?? zero,
169
+ rating: partialSignals.rating ?? zero,
170
+ externalIds: partialSignals.externalIds ?? zero,
171
+ sourceCoverage: partialSignals.sourceCoverage ?? zero,
172
+ sourceAuthority: partialSignals.sourceAuthority ?? zero,
173
+ };
174
+ return {
175
+ score,
176
+ evidence: {
177
+ formula,
178
+ matchStrength: group.matchStrength,
179
+ titleMatch,
180
+ signals,
181
+ preBoundedScore: Object.values(signals).reduce((total, rankingSignal) => total + rankingSignal.contribution, 0),
182
+ },
183
+ };
184
+ }
185
+ function signal(value, weight) {
186
+ return { value, weight, contribution: value * weight };
187
+ }
188
+ function emptyTitleMatch() {
189
+ return { kind: "not_applicable", score: 0 };
190
+ }
191
+ // Prefers the closest title completion for multi-word prefix and fuzzy matches.
192
+ // Предпочитает ближайшее продолжение title для multi-word prefix и fuzzy matches.
193
+ function adjustPartialTitleScore(score, title, query) {
194
+ const queryTokenCount = query.split(" ").filter(Boolean).length;
195
+ if (queryTokenCount < 2) {
196
+ return score;
197
+ }
198
+ const titleTokenCount = title.split(" ").filter(Boolean).length;
199
+ const tokenRatio = Math.min(queryTokenCount, titleTokenCount) / Math.max(queryTokenCount, titleTokenCount);
200
+ return score * (0.5 + tokenRatio * 0.5);
119
201
  }
120
202
  // Allows one small typo in meaningful words while keeping short tokens exact.
121
203
  // Допускает одну небольшую опечатку в значимых словах, сохраняя короткие токены точными.
@@ -194,22 +276,42 @@ function levenshteinDistance(left, right, maxDistance) {
194
276
  // Scores popularity from the largest available vote count.
195
277
  // Оценивает популярность по самому большому доступному числу голосов.
196
278
  function ratingVotesScore(entries) {
197
- const maxVotes = Math.max(0, ...entries.flatMap((entry) => entry.result.item.ratings?.map((rating) => rating.votes ?? 0) ?? []));
198
- return Math.min(1, Math.log10(maxVotes + 1) / 7);
279
+ const maxVotes = maxRatingVotes(entries);
280
+ return Math.min(1, Math.max(0, (Math.log10(maxVotes + 1) - 3) / 4));
199
281
  }
200
282
  // Scores normalized rating values across providers.
201
283
  // Оценивает нормализованные значения рейтингов от провайдеров.
202
284
  function normalizedRatingScore(entries) {
203
285
  const values = entries.flatMap((entry) => entry.result.item.ratings
204
- ?.map((rating) => rating.value / rating.max)
286
+ ?.map((rating) => {
287
+ const value = rating.value / rating.max;
288
+ return value * ratingVoteConfidence(rating.votes);
289
+ })
205
290
  .filter((value) => Number.isFinite(value)) ?? []);
206
291
  return values.length === 0 ? 0 : Math.max(...values.map((value) => clampScore(value)));
207
292
  }
208
293
  // Rewards results that carry strong external IDs for better follow-up details lookup.
209
294
  // Поощряет результаты с сильными внешними ID для более надежной загрузки деталей.
210
295
  function externalIdCompletenessScore(entries) {
211
- const idCount = Math.max(0, ...entries.map((entry) => STRONG_ID_KEYS.filter((key) => Boolean(entry.result.item.ids?.[key])).length));
212
- return Math.min(1, idCount / 3);
296
+ const ids = entries.map((entry) => entry.result.item.ids);
297
+ const hasCatalogAnimeId = ids.some((value) => value?.shikimori || value?.myAnimeList || value?.aniList);
298
+ const animeCatalogScore = hasCatalogAnimeId ? (maxRatingVotes(entries) >= 100_000 ? 1 : 0.5) : 0;
299
+ return Math.max(0, ids.some((value) => value?.imdb) ? 1 : 0, ids.some((value) => value?.kinopoisk) ? 0.9 : 0, ids.some((value) => value?.tmdb) ? 0.8 : 0, animeCatalogScore, ids.some((value) => value?.worldArt) ? 0.3 : 0);
300
+ }
301
+ function maxRatingVotes(entries) {
302
+ return Math.max(0, ...entries.flatMap((entry) => entry.result.item.ratings?.map((rating) => rating.votes ?? 0) ?? []));
303
+ }
304
+ function ratingVoteConfidence(votes) {
305
+ if (votes === undefined) {
306
+ return 0.2;
307
+ }
308
+ if (votes < 1_000) {
309
+ return 0.3;
310
+ }
311
+ if (votes < 100_000) {
312
+ return 0.6;
313
+ }
314
+ return 1;
213
315
  }
214
316
  // Rewards results confirmed by multiple providers.
215
317
  // Поощряет результаты, подтвержденные несколькими провайдерами.
@@ -228,11 +330,13 @@ function sourceAuthorityScore(entries) {
228
330
  function providerAuthority(provider) {
229
331
  switch (provider) {
230
332
  case "wikidata":
231
- return 0.7;
333
+ return 0.9;
232
334
  case "tmdb":
233
335
  return 0.95;
234
336
  case "cinemeta":
235
337
  return 0.75;
338
+ case "tvmaze":
339
+ return 0.75;
236
340
  case "kinobd":
237
341
  return 0.75;
238
342
  case "imdb":
@@ -1 +1 @@
1
- {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/merge/scoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/merge/scoring.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
+ import { diversifySearchCandidates } from "./diversity.js";
1
2
  import { filterDetailsEntriesByIdentity, warnDetailsTypeConflicts } from "./details-identity.js";
2
3
  import { firstDefined, firstMeaningfulDetailsStatus, mergeAlternativeTitles, mergeDetailsAlternativeTitles, mergeDetailsGenres, mergeDetailsImages, mergeDetailsRatings, mergeDetailsSources, mergeGenres, mergeRatings, mergeSources, selectBestDetailsImage, selectBestImage, selectDescription, selectDetailsDescription, selectDetailsReleaseDate, selectDetailsTitle, selectDetailsYear, selectReleaseDate, selectShortDescription, selectTitle, selectYear, } from "./fields.js";
3
4
  import { groupSearchResults } from "./grouping.js";
4
5
  import { EXTERNAL_ID_KEYS } from "./internal.js";
5
6
  import { selectMergedMediaType, selectMergedSearchType, selectMetadataPriorityType, } from "./media-type.js";
6
7
  import { providerRank, SEARCH_RESULT_PRIORITY, sortEntriesByPriority } from "./priority.js";
7
- import { hasExactPrimaryTitle, scoreGroup, titleRelevanceScore } from "./scoring.js";
8
+ import { hasExactPrimaryTitle, rankSearchGroup, titleRelevanceScore } from "./scoring.js";
8
9
  // Built-in merge strategy used by core when no custom strategy is provided.
9
10
  // Встроенная стратегия объединения, используемая core без пользовательской стратегии.
10
11
  export class DefaultMergeStrategy {
@@ -12,13 +13,16 @@ export class DefaultMergeStrategy {
12
13
  // Объединяет результаты поиска провайдеров в нормализованные результаты с оценкой.
13
14
  mergeSearchResults(results, context = {}) {
14
15
  const groups = groupSearchResults(results);
15
- return groups
16
+ const ranked = groups
16
17
  .filter((group) => isSearchGroupRelevant(group, context))
17
- .map((group, groupIndex) => ({
18
- groupIndex,
19
- exactPrimaryTitleMatch: hasExactPrimaryQueryTitle(group.entries, context),
20
- result: mergeSearchGroup(group, context),
21
- }))
18
+ .map((group, groupIndex) => {
19
+ const merged = mergeSearchGroup(group, context);
20
+ return {
21
+ groupIndex,
22
+ exactPrimaryTitleMatch: hasExactPrimaryQueryTitle(group.entries, context),
23
+ ...merged,
24
+ };
25
+ })
22
26
  .sort((left, right) => {
23
27
  // The engine's preliminary broad merge feeds a bounded enrichment window. Keep exact
24
28
  // canonical candidates in that window even when their initial provider card is sparse.
@@ -39,19 +43,51 @@ export class DefaultMergeStrategy {
39
43
  return titleDiff;
40
44
  }
41
45
  return left.groupIndex - right.groupIndex;
42
- })
43
- .map(({ result }) => result);
46
+ });
47
+ const query = context.query;
48
+ const diversified = diversifySearchCandidates(ranked.map((candidate) => ({
49
+ value: candidate.result,
50
+ score: candidate.result.score,
51
+ mediaType: candidate.result.item.type,
52
+ title: candidate.result.item.title,
53
+ ranking: candidate.ranking,
54
+ })), Boolean(query?.title?.trim()) && !context.includeIrrelevantSearchResults);
55
+ return diversified.map((candidate) => ({
56
+ ...candidate.value,
57
+ ...(context.debug
58
+ ? {
59
+ ranking: {
60
+ ...candidate.ranking,
61
+ scorePosition: candidate.scorePosition,
62
+ diversityPosition: candidate.diversityPosition,
63
+ finalPosition: candidate.diversityPosition,
64
+ diversity: {
65
+ family: candidate.diversityFamily,
66
+ adjusted: candidate.scorePosition !== candidate.diversityPosition,
67
+ },
68
+ },
69
+ }
70
+ : {}),
71
+ }));
44
72
  }
45
73
  // Merges provider details results around a primary provider result.
46
74
  // Объединяет details-результаты провайдеров вокруг основного результата.
47
75
  mergeDetails(results, context = {}) {
48
76
  const priorityType = selectMetadataPriorityType(results.map((result) => result.details));
49
77
  const sortedEntries = filterDetailsEntriesByIdentity(sortEntriesByPriority(results.map((result, index) => ({ result, index })), context, priorityType), context);
50
- const mediaType = selectMergedMediaType(sortedEntries.map((entry) => entry.result.details));
78
+ const mediaType = selectMergedDetailsType(sortedEntries.map((entry) => entry.result.details), context);
51
79
  const finalEntries = sortEntriesByPriority(sortedEntries, context, selectMetadataPriorityType(sortedEntries.map((entry) => entry.result.details)));
52
80
  return mergeDetailsEntries(finalEntries, context, mediaType);
53
81
  }
54
82
  }
83
+ const ANIME_ID_KEYS = ["shikimori", "myAnimeList", "aniList"];
84
+ // Keeps explicit anime identity when only compatible generic catalogs survive an upstream outage.
85
+ // Сохраняет явную anime-идентичность, когда при upstream outage отвечают лишь общие каталоги.
86
+ function selectMergedDetailsType(items, context) {
87
+ const query = context.query;
88
+ const hasAnimeId = ANIME_ID_KEYS.some((key) => Boolean(query?.ids?.[key] ?? query?.[key]));
89
+ return query?.type === "anime" && hasAnimeId ? "anime" : selectMergedMediaType(items);
90
+ }
55
91
  // Checks exact primary/original query intent for preliminary search enrichment ordering.
56
92
  // Проверяет точное основное/original соответствие для предварительного enrichment-порядка.
57
93
  function hasExactPrimaryQueryTitle(entries, context) {
@@ -106,10 +142,14 @@ function mergeSearchGroup(group, context) {
106
142
  ratings: mergeRatings(sortedEntries),
107
143
  ids,
108
144
  };
145
+ const ranking = rankSearchGroup(group, sortedEntries, context);
109
146
  return {
110
- item,
111
- score: scoreGroup(group, sortedEntries, context),
112
- sources: mergeSources(sortedEntries),
147
+ result: {
148
+ item,
149
+ score: ranking.score,
150
+ sources: mergeSources(sortedEntries),
151
+ },
152
+ ranking: ranking.evidence,
113
153
  };
114
154
  }
115
155
  // Merges sorted details entries while keeping unsafe nested fields from primary.
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/merge/strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/merge/strategy.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
- import type { MediaProvider, ProviderDetailsQuery, ProviderInfo, ProviderSearchQuery } from "./types.js";
1
+ import type { MediaProvider, ProviderDetailsQuery, ProviderInfo, ProviderSearchQuery, TitleDiscoveryRole } from "./types.js";
2
2
  export declare class ProviderRegistry {
3
3
  private readonly providers;
4
4
  constructor(providers?: MediaProvider[]);
5
5
  register(provider: MediaProvider): void;
6
6
  getProviders(): ProviderInfo[];
7
- selectSearchProviders(query: ProviderSearchQuery): MediaProvider[];
7
+ selectSearchProviders(query: ProviderSearchQuery, options?: {
8
+ titleDiscovery?: TitleDiscoveryRole;
9
+ }): MediaProvider[];
8
10
  selectDetailsProviders(query: ProviderDetailsQuery): MediaProvider[];
9
11
  }
@@ -40,9 +40,15 @@ export class ProviderRegistry {
40
40
  kind: provider.kind,
41
41
  capabilities: {
42
42
  mediaTypes: [...provider.capabilities.mediaTypes],
43
+ ...(provider.capabilities.searchEnrichment !== undefined
44
+ ? { searchEnrichment: provider.capabilities.searchEnrichment }
45
+ : {}),
43
46
  search: {
44
47
  byTitle: provider.capabilities.search.byTitle,
45
48
  byExternalIds: [...provider.capabilities.search.byExternalIds],
49
+ ...(provider.capabilities.search.titleDiscovery
50
+ ? { titleDiscovery: provider.capabilities.search.titleDiscovery }
51
+ : {}),
46
52
  },
47
53
  details: {
48
54
  byExternalIds: [...provider.capabilities.details.byExternalIds],
@@ -53,13 +59,16 @@ export class ProviderRegistry {
53
59
  }
54
60
  // Selects providers that can handle a normalized search query.
55
61
  // Выбирает провайдеров, которые могут обработать нормализованный поисковый запрос.
56
- selectSearchProviders(query) {
62
+ selectSearchProviders(query, options = {}) {
57
63
  const queryIdSources = getExternalIdSources(query.ids);
58
64
  return Array.from(this.providers.values()).filter((provider) => {
59
65
  if (query.type && !provider.capabilities.mediaTypes.includes(query.type)) {
60
66
  return false;
61
67
  }
62
- const supportsTitleSearch = Boolean(query.title?.trim()) && provider.capabilities.search.byTitle;
68
+ const providerTitleDiscovery = provider.capabilities.search.titleDiscovery ?? "primary";
69
+ const supportsTitleSearch = Boolean(query.title?.trim()) &&
70
+ provider.capabilities.search.byTitle &&
71
+ (!options.titleDiscovery || options.titleDiscovery === providerTitleDiscovery);
63
72
  const supportsIdSearch = queryIdSources.some((source) => provider.capabilities.search.byExternalIds.includes(source));
64
73
  return supportsTitleSearch || supportsIdSearch;
65
74
  });