热搜榜单

热搜榜单
This commit is contained in:
yangyaoxiang666
2025-09-06 09:54:49 +08:00
parent b8456c437a
commit bd4c7439be
20 changed files with 1591 additions and 7940 deletions

View File

@@ -156,18 +156,6 @@ function renderRanking(payload) {
// 渲染列表
const html = `
<section class="stats-container">
<div class="stats-grid">
<div class="stat-item">
<div class="stat-value" id="stats-total">${list.length}</div>
<div class="stat-label">入榜影片数量</div>
</div>
<div class="stat-item">
<div class="stat-value" id="stats-top10">${Math.min(10, list.length)}</div>
<div class="stat-label">TOP10 数量</div>
</div>
</div>
</section>
<section class="ranking-container">
<h2 class="ranking-title">全球电影总票房排行榜</h2>
<div class="movie-list">
@@ -182,37 +170,56 @@ function renderRanking(payload) {
elements.container.classList.add('fade-in');
}
// 格式化票房数据,将数字转换为更易读的形式
function formatBoxOffice(value) {
if (!value) return '未知';
// 将字符串转换为数字
const num = typeof value === 'string' ? parseFloat(value.replace(/[^0-9.]/g, '')) : value;
if (isNaN(num)) return value;
if (num >= 100000000) {
return (num / 100000000).toFixed(2) + ' 亿';
} else if (num >= 10000) {
return (num / 10000).toFixed(2) + ' 万';
} else {
return num.toLocaleString();
}
}
function renderMovieItem(item) {
const rank = item.rank;
const cls = rank === 1 ? 'top-1' : rank === 2 ? 'top-2' : rank === 3 ? 'top-3' : '';
const badgeCls = rank === 1 ? 'gold' : rank === 2 ? 'silver' : rank === 3 ? 'bronze' : 'regular';
// 使用猫眼ID获取电影海报图片 - 使用更可靠的图片源
const posterUrl = `https://img.maoyan.com/movie/poster/1${item.maoyan_id}.jpg`;
// 备用图片源
const backupPosterUrl = `https://p0.pipi.cn/mmdb/fb738633ac80c2f8a7a48e5b465128${item.maoyan_id % 10}/${item.maoyan_id}.jpg?imageView2/1/w/160/h/220`;
// 格式化票房数据
const boxOffice = formatBoxOffice(item.boxoffice || item.box_office);
// 美化排名显示
let rankDisplay;
if (rank === 1) {
rankDisplay = '🏆 1';
} else if (rank === 2) {
rankDisplay = '🥈 2';
} else if (rank === 3) {
rankDisplay = '🥉 3';
} else {
rankDisplay = `NO.${rank}`;
}
return `
<div class="movie-item ${cls}">
<div class="rank-badge ${badgeCls}">${rank}</div>
<div class="movie-poster">
<img src="${posterUrl}" alt="${escapeHtml(item.movie_name)}" onerror="this.onerror=null; this.src='${backupPosterUrl}'; this.onerror=function(){this.src='data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%22160%22 height%3D%22220%22 viewBox%3D%220 0 160 220%22%3E%3Crect fill%3D%22%23f0f0f0%22 width%3D%22160%22 height%3D%22220%22%2F%3E%3Ctext fill%3D%22%23999%22 font-family%3D%22Arial%2CSans-serif%22 font-size%3D%2216%22 x%3D%2250%25%22 y%3D%2250%25%22 text-anchor%3D%22middle%22 dominant-baseline%3D%22middle%22%3E无图片%3C%2Ftext%3E%3C%2Fsvg%3E';}">
</div>
<div class="rank-badge ${badgeCls}">${rankDisplay}</div>
<div class="movie-info">
<div class="rank-number">#${rank}</div>
<div class="movie-details">
<div class="movie-name">${escapeHtml(item.movie_name)}</div>
<div class="movie-year">上映年份:${escapeHtml(item.release_year || '')}</div>
</div>
<div class="box-office">
<div class="box-office-amount">${formatCurrencyDesc(item.box_office_desc, item.box_office)}</div>
<div class="box-office-desc">总票房</div>
</div>
<div class="movie-name">${escapeHtml(item.movie_name)}</div>
<div class="movie-detail"><span class="label">上映:</span> ${escapeHtml(item.release_year || '未知')}</div>
<div class="movie-boxoffice"><span class="currency">¥</span> ${boxOffice}</div>
</div>
</div>
`;
</div>`;
}
function formatCurrencyDesc(desc, num) {
if (desc && typeof desc === 'string' && desc.trim()) return desc;
if (typeof num === 'number') {