File size: 1,996 Bytes
4bea261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
import TopTenSection from './TopTenSection.jsx';
import { getSeriesMovies } from '../lib/api.js';
import { txasupabase } from '../lib/txasupabase.js';

const data = await getSeriesMovies(1);
let rawMovies = data?.items || [];

if (rawMovies.length < 4) {
  try {
    const res = await fetch('https://phimapi.com/v1/api/danh-sach/phim-bo?page=1');
    if (res.ok) {
      const d = await res.json();
      const items = d.data?.items || [];
      const mapped = items.map(item => ({
        _id: item._id,
        name: item.name,
        slug: item.slug,
        origin_name: item.origin_name,
        thumb_url: item.thumb_url,
        poster_url: item.poster_url,
        year: item.year,
        quality: item.quality || 'FHD',
        lang: item.lang || 'Vietsub',
        episode_current: item.episode_current || 'Tập 1',
        type: item.type || 'series',
        isLocal: false
      }));
      rawMovies = [...rawMovies, ...mapped.filter(m => !rawMovies.some(x => x.slug === m.slug))];
    }
  } catch (e) {
    console.error('TopTen fallback error:', e);
  }
}

// Smart Deduplicate by base name (to avoid multiple seasons of the same show)
const uniqueMovies = [];
const seenBaseNames = new Set();

for (const m of rawMovies) {
  const baseName = m.name.split(' (Phần')[0].trim().toLowerCase();
  
  if (!seenBaseNames.has(baseName)) {
    seenBaseNames.add(baseName);
    uniqueMovies.push(m);
  }
}

const seriesMovies = uniqueMovies.slice(0, 10);

// Fetch Top Rated & Most Favorited
const topRated = await txasupabase.getTopRatedMovies(10).catch(() => []);
const mostFavorited = await txasupabase.getMostFavoritedMovies(10).catch(() => []);

// Intelligent Fallbacks
const finalSeries = seriesMovies;
const finalRated = topRated.length >= 3 ? topRated : seriesMovies;
const finalFavorited = mostFavorited.length >= 3 ? mostFavorited : seriesMovies;
---

<TopTenSection 
  series={finalSeries} 
  rated={finalRated} 
  favorited={finalFavorited} 
  client:only="react" 
/>