修复detailpanel切换tmdb时,没有更新季度信息
This commit is contained in:
@@ -59,6 +59,7 @@ interface DetailData {
|
|||||||
tmdbId?: number;
|
tmdbId?: number;
|
||||||
mediaType?: 'movie' | 'tv';
|
mediaType?: 'movie' | 'tv';
|
||||||
seasonNumber?: number;
|
seasonNumber?: number;
|
||||||
|
seriesTitle?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Episode {
|
interface Episode {
|
||||||
@@ -550,7 +551,7 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
if (extractedSeasonNumber && mediaType === 'tv') {
|
if (extractedSeasonNumber && mediaType === 'tv') {
|
||||||
try {
|
try {
|
||||||
const seasonResponse = await fetch(
|
const seasonResponse = await fetch(
|
||||||
`/api/tmdb/seasons?id=${detailId}&season=${extractedSeasonNumber}`
|
`/api/tmdb/episodes?id=${detailId}&season=${extractedSeasonNumber}`
|
||||||
);
|
);
|
||||||
if (seasonResponse.ok) {
|
if (seasonResponse.ok) {
|
||||||
seasonData = await seasonResponse.json();
|
seasonData = await seasonResponse.json();
|
||||||
@@ -561,15 +562,20 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setDetailData({
|
setDetailData({
|
||||||
title: mediaType === 'movie' ? detailResult.title : detailResult.name,
|
title:
|
||||||
|
mediaType === 'movie'
|
||||||
|
? detailResult.title
|
||||||
|
: seasonData?.name
|
||||||
|
? `${detailResult.name} ${seasonData.name}`
|
||||||
|
: detailResult.name,
|
||||||
originalTitle:
|
originalTitle:
|
||||||
mediaType === 'movie' ? detailResult.original_title : detailResult.original_name,
|
mediaType === 'movie' ? detailResult.original_title : detailResult.original_name,
|
||||||
year:
|
year:
|
||||||
mediaType === 'movie'
|
mediaType === 'movie'
|
||||||
? detailResult.release_date?.substring(0, 4)
|
? detailResult.release_date?.substring(0, 4)
|
||||||
: detailResult.first_air_date?.substring(0, 4),
|
: seasonData?.air_date?.substring(0, 4) || detailResult.first_air_date?.substring(0, 4),
|
||||||
poster: detailResult.poster_path
|
poster: (seasonData?.poster_path || detailResult.poster_path)
|
||||||
? processImageUrl(getTMDBImageUrl(detailResult.poster_path, 'w500'))
|
? processImageUrl(getTMDBImageUrl(seasonData?.poster_path || detailResult.poster_path, 'w500'))
|
||||||
: poster,
|
: poster,
|
||||||
rating: detailResult.vote_average
|
rating: detailResult.vote_average
|
||||||
? {
|
? {
|
||||||
@@ -584,7 +590,9 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
duration: detailResult.runtime ? `${detailResult.runtime}分钟` : undefined,
|
duration: detailResult.runtime ? `${detailResult.runtime}分钟` : undefined,
|
||||||
episodesCount: seasonData?.episodes?.length || detailResult.number_of_episodes,
|
episodesCount: seasonData?.episodes?.length || detailResult.number_of_episodes,
|
||||||
releaseDate:
|
releaseDate:
|
||||||
mediaType === 'movie' ? detailResult.release_date : detailResult.first_air_date,
|
mediaType === 'movie'
|
||||||
|
? detailResult.release_date
|
||||||
|
: seasonData?.air_date || detailResult.first_air_date,
|
||||||
status: detailResult.status,
|
status: detailResult.status,
|
||||||
tagline: detailResult.tagline,
|
tagline: detailResult.tagline,
|
||||||
seasons: detailResult.number_of_seasons,
|
seasons: detailResult.number_of_seasons,
|
||||||
@@ -592,6 +600,7 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
tmdbId: detailId,
|
tmdbId: detailId,
|
||||||
mediaType: mediaType,
|
mediaType: mediaType,
|
||||||
seasonNumber: extractedSeasonNumber,
|
seasonNumber: extractedSeasonNumber,
|
||||||
|
seriesTitle: mediaType === 'tv' ? detailResult.name : undefined,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -689,7 +698,7 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
if (extractedSeasonNumber && mediaType === 'tv') {
|
if (extractedSeasonNumber && mediaType === 'tv') {
|
||||||
try {
|
try {
|
||||||
const seasonResponse = await fetch(
|
const seasonResponse = await fetch(
|
||||||
`/api/tmdb/seasons?id=${detailId}&season=${extractedSeasonNumber}`
|
`/api/tmdb/episodes?id=${detailId}&season=${extractedSeasonNumber}`
|
||||||
);
|
);
|
||||||
if (seasonResponse.ok) {
|
if (seasonResponse.ok) {
|
||||||
seasonData = await seasonResponse.json();
|
seasonData = await seasonResponse.json();
|
||||||
@@ -700,15 +709,20 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
setDetailData({
|
setDetailData({
|
||||||
title: mediaType === 'movie' ? detailResult.title : detailResult.name,
|
title:
|
||||||
|
mediaType === 'movie'
|
||||||
|
? detailResult.title
|
||||||
|
: seasonData?.name
|
||||||
|
? `${detailResult.name} ${seasonData.name}`
|
||||||
|
: detailResult.name,
|
||||||
originalTitle:
|
originalTitle:
|
||||||
mediaType === 'movie' ? detailResult.original_title : detailResult.original_name,
|
mediaType === 'movie' ? detailResult.original_title : detailResult.original_name,
|
||||||
year:
|
year:
|
||||||
mediaType === 'movie'
|
mediaType === 'movie'
|
||||||
? detailResult.release_date?.substring(0, 4)
|
? detailResult.release_date?.substring(0, 4)
|
||||||
: detailResult.first_air_date?.substring(0, 4),
|
: seasonData?.air_date?.substring(0, 4) || detailResult.first_air_date?.substring(0, 4),
|
||||||
poster: detailResult.poster_path
|
poster: (seasonData?.poster_path || detailResult.poster_path)
|
||||||
? processImageUrl(getTMDBImageUrl(detailResult.poster_path, 'w500'))
|
? processImageUrl(getTMDBImageUrl(seasonData?.poster_path || detailResult.poster_path, 'w500'))
|
||||||
: poster,
|
: poster,
|
||||||
rating: detailResult.vote_average
|
rating: detailResult.vote_average
|
||||||
? {
|
? {
|
||||||
@@ -723,7 +737,9 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
duration: detailResult.runtime ? `${detailResult.runtime}分钟` : undefined,
|
duration: detailResult.runtime ? `${detailResult.runtime}分钟` : undefined,
|
||||||
episodesCount: seasonData?.episodes?.length || detailResult.number_of_episodes,
|
episodesCount: seasonData?.episodes?.length || detailResult.number_of_episodes,
|
||||||
releaseDate:
|
releaseDate:
|
||||||
mediaType === 'movie' ? detailResult.release_date : detailResult.first_air_date,
|
mediaType === 'movie'
|
||||||
|
? detailResult.release_date
|
||||||
|
: seasonData?.air_date || detailResult.first_air_date,
|
||||||
status: detailResult.status,
|
status: detailResult.status,
|
||||||
tagline: detailResult.tagline,
|
tagline: detailResult.tagline,
|
||||||
seasons: detailResult.number_of_seasons,
|
seasons: detailResult.number_of_seasons,
|
||||||
@@ -731,6 +747,7 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
tmdbId: detailId,
|
tmdbId: detailId,
|
||||||
mediaType: mediaType,
|
mediaType: mediaType,
|
||||||
seasonNumber: extractedSeasonNumber,
|
seasonNumber: extractedSeasonNumber,
|
||||||
|
seriesTitle: mediaType === 'tv' ? detailResult.name : undefined,
|
||||||
});
|
});
|
||||||
setCurrentSource('tmdb');
|
setCurrentSource('tmdb');
|
||||||
return;
|
return;
|
||||||
@@ -872,7 +889,9 @@ const DetailPanel: React.FC<DetailPanelProps> = ({
|
|||||||
// 更新季度元信息
|
// 更新季度元信息
|
||||||
setDetailData(prev => prev ? {
|
setDetailData(prev => prev ? {
|
||||||
...prev,
|
...prev,
|
||||||
title: episodesData.name || season?.name || prev.title,
|
title: (episodesData.name || season?.name)
|
||||||
|
? `${prev.seriesTitle || prev.title} ${episodesData.name || season?.name}`
|
||||||
|
: prev.title,
|
||||||
intro: episodesData.overview || season?.overview || prev.overview,
|
intro: episodesData.overview || season?.overview || prev.overview,
|
||||||
poster: season?.poster_path ? getTMDBImageUrl(season.poster_path, 'w500') : prev.poster,
|
poster: season?.poster_path ? getTMDBImageUrl(season.poster_path, 'w500') : prev.poster,
|
||||||
releaseDate: episodesData.air_date || season?.air_date || prev.releaseDate,
|
releaseDate: episodesData.air_date || season?.air_date || prev.releaseDate,
|
||||||
|
|||||||
Reference in New Issue
Block a user