新增在任务列表的海报视图下点击任务名称打开 TMDB 季页面的功能

- 为任务列表海报视图中的任务名称添加点击事件处理器
- 新增 getTaskTmdbId() 方法,智能获取任务的 TMDB ID
- 新增 getTaskSeasonNumber() 方法,获取任务的季数信息
- 新增 openTaskTmdbPage() 方法,优先打开特定季的 TMDB 页面
- 只有当任务有匹配项目时才显示为可点击状态
- 当有季数信息时打开 /tv/{tmdb_id}/season/{season_number} 页面
- 当无季数信息时回退到打开整个节目页面
- 提升了用户访问 TMDB 页面的便捷性和精确性
This commit is contained in:
x1ao4 2025-09-14 18:36:25 +08:00
parent 46b07fcdac
commit 922c47848b
2 changed files with 73 additions and 2 deletions

View File

@ -8179,4 +8179,14 @@ div:has(> .collapse:not(.show)):has(+ .row.title[title^="资源搜索"]) {
/* 模态框面包屑导航滚动条隐藏 */
#fileSelectModal .breadcrumb::-webkit-scrollbar {
display: none; /* 隐藏滚动条 */
}
/* 任务列表海报视图 - 可点击的任务名称样式 */
.discovery-title[style*="cursor: pointer"] {
color: var(--dark-text-color);
transition: color 0.2s ease;
}
.discovery-title[style*="cursor: pointer"]:hover {
color: var(--focus-border-color);
}

View File

@ -1312,7 +1312,10 @@
</div>
</div>
<div class="discovery-info">
<div class="discovery-title" :title="getTasklistPosterTitle(task, index)" style="cursor: default;">
<div class="discovery-title"
:title="getTasklistPosterTitle(task, index)"
:style="{ cursor: getTaskTmdbId(task) ? 'pointer' : 'default' }"
@click="openTaskTmdbPage(task)">
{{ task.taskname }}
<span v-if="getTaskShowStatus(task.taskname)"> · {{ getTaskShowStatus(task.taskname) }}</span>
<span v-if="isTaskUpdatedToday(task.taskname) && shouldShowTodayIndicator()"
@ -5812,7 +5815,7 @@
}
},
// 打开“内容管理”任务匹配到的节目的 TMDB 页面
// 打开"内容管理"任务匹配到的节目的 TMDB 页面
openTaskMatchedTmdbPage(task) {
try {
if (!task) return;
@ -5825,6 +5828,64 @@
console.warn('打开任务匹配TMDB页面失败', e);
}
},
// 获取任务的 TMDB ID用于任务列表海报视图
getTaskTmdbId(task) {
try {
if (!task) return null;
// 优先从 calendar.tasks 中获取匹配的任务信息
const calendarTask = this.getCalendarTaskByName(task.taskname);
if (calendarTask) {
return (calendarTask.match && calendarTask.match.tmdb_id) || calendarTask.match_tmdb_id || calendarTask.tmdb_id;
}
// 如果 calendar.tasks 中没有,则从任务配置中获取
const cal = (task.calendar_info) || {};
const match = cal.match || {};
return match.tmdb_id || task.tmdb_id;
} catch (e) {
return null;
}
},
// 获取任务的季数(用于任务列表海报视图)
getTaskSeasonNumber(task) {
try {
if (!task) return null;
// 优先从 calendar.tasks 中获取匹配的任务信息
const calendarTask = this.getCalendarTaskByName(task.taskname);
if (calendarTask) {
return (calendarTask.match && calendarTask.match.latest_season_number) ||
calendarTask.matched_latest_season_number ||
calendarTask.season_number;
}
// 如果 calendar.tasks 中没有,则从任务配置中获取
const cal = (task.calendar_info) || {};
const match = cal.match || {};
return match.latest_season_number || task.season_number;
} catch (e) {
return null;
}
},
// 打开任务列表海报视图中任务的 TMDB 页面
openTaskTmdbPage(task) {
try {
if (!task) return;
const tmdbId = this.getTaskTmdbId(task);
if (tmdbId) {
// 获取匹配的季数
const seasonNumber = this.getTaskSeasonNumber(task);
if (seasonNumber) {
// 打开特定季的页面
const url = `https://www.themoviedb.org/tv/${tmdbId}/season/${seasonNumber}`;
window.open(url, '_blank');
} else {
// 如果没有季数信息,则打开整个节目的页面
const url = `https://www.themoviedb.org/tv/${tmdbId}`;
window.open(url, '_blank');
}
}
} catch (e) {
console.warn('打开任务TMDB页面失败', e);
}
},
// 打开集的TMDB页面合并集打开最后一集
openEpisodeTmdbPage(episode) {