豁免小雅优选和测速
This commit is contained in:
@@ -128,17 +128,17 @@ export async function GET(request: NextRequest) {
|
|||||||
const qualityOrder: Record<string, number> = {
|
const qualityOrder: Record<string, number> = {
|
||||||
'FHD': 1,
|
'FHD': 1,
|
||||||
'HD': 2,
|
'HD': 2,
|
||||||
'SD': 3,
|
'LD': 3,
|
||||||
'LD': 4,
|
'SD': 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
const qualities = taskList
|
const qualities = taskList
|
||||||
.filter((task: any) => task.status === 'finished')
|
.filter((task: any) => task.status === 'finished')
|
||||||
.map((task: any) => ({
|
.map((task: any) => ({
|
||||||
name: task.template_id,
|
name: task.template_id,
|
||||||
url: task.url,
|
url: task.url,
|
||||||
}))
|
}))
|
||||||
.sort((a, b) => (qualityOrder[a.name] || 999) - (qualityOrder[b.name] || 999));
|
.sort((a: any, b: any) => (qualityOrder[a.name] || 999) - (qualityOrder[b.name] || 999));
|
||||||
|
|
||||||
if (qualities.length === 0) {
|
if (qualities.length === 0) {
|
||||||
throw new Error('未找到已完成的播放链接');
|
throw new Error('未找到已完成的播放链接');
|
||||||
|
|||||||
@@ -2577,7 +2577,7 @@ function PlayPageClient() {
|
|||||||
setLoadingStage('preferring');
|
setLoadingStage('preferring');
|
||||||
setLoadingMessage('⚡ 正在优选最佳播放源...');
|
setLoadingMessage('⚡ 正在优选最佳播放源...');
|
||||||
|
|
||||||
// 过滤掉 openlist 和所有 emby 源,它们不参与测速
|
// 过滤掉 openlist、所有 emby 源和 xiaoya 源,它们不参与测速
|
||||||
const sourcesToTest = sourcesInfo.filter(s => {
|
const sourcesToTest = sourcesInfo.filter(s => {
|
||||||
// 检查是否为 openlist
|
// 检查是否为 openlist
|
||||||
if (s.source === 'openlist') return false;
|
if (s.source === 'openlist') return false;
|
||||||
@@ -2585,19 +2585,23 @@ function PlayPageClient() {
|
|||||||
// 检查是否为 emby 源(包括 emby 和 emby_xxx 格式)
|
// 检查是否为 emby 源(包括 emby 和 emby_xxx 格式)
|
||||||
if (s.source === 'emby' || s.source.startsWith('emby_')) return false;
|
if (s.source === 'emby' || s.source.startsWith('emby_')) return false;
|
||||||
|
|
||||||
|
// 检查是否为 xiaoya 源
|
||||||
|
if (s.source === 'xiaoya') return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
const excludedSources = sourcesInfo.filter(s =>
|
const excludedSources = sourcesInfo.filter(s =>
|
||||||
s.source === 'openlist' ||
|
s.source === 'openlist' ||
|
||||||
s.source === 'emby' ||
|
s.source === 'emby' ||
|
||||||
s.source.startsWith('emby_')
|
s.source.startsWith('emby_') ||
|
||||||
|
s.source === 'xiaoya'
|
||||||
);
|
);
|
||||||
|
|
||||||
if (sourcesToTest.length > 0) {
|
if (sourcesToTest.length > 0) {
|
||||||
detailData = await preferBestSource(sourcesToTest);
|
detailData = await preferBestSource(sourcesToTest);
|
||||||
} else if (excludedSources.length > 0) {
|
} else if (excludedSources.length > 0) {
|
||||||
// 如果只有 openlist/emby 源,直接使用第一个
|
// 如果只有 openlist/emby/xiaoya 源,直接使用第一个
|
||||||
detailData = excludedSources[0];
|
detailData = excludedSources[0];
|
||||||
} else {
|
} else {
|
||||||
detailData = sourcesInfo[0];
|
detailData = sourcesInfo[0];
|
||||||
|
|||||||
@@ -271,16 +271,18 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
|
|||||||
if (
|
if (
|
||||||
!optimizationEnabled || // 若关闭测速则直接退出
|
!optimizationEnabled || // 若关闭测速则直接退出
|
||||||
activeTab !== 'sources' ||
|
activeTab !== 'sources' ||
|
||||||
availableSources.length === 0 ||
|
availableSources.length === 0
|
||||||
currentSource === 'openlist' || // 私人影库不进行测速
|
|
||||||
currentSource === 'emby' // Emby 不进行测速
|
|
||||||
)
|
)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// 筛选出尚未测速的播放源
|
// 筛选出尚未测速的播放源,并排除不需要测速的源(openlist/emby/xiaoya)
|
||||||
const pendingSources = availableSources.filter((source) => {
|
const pendingSources = availableSources.filter((source) => {
|
||||||
const sourceKey = `${source.source}-${source.id}`;
|
const sourceKey = `${source.source}-${source.id}`;
|
||||||
return !attemptedSourcesRef.current.has(sourceKey);
|
// 跳过已测速的源
|
||||||
|
if (attemptedSourcesRef.current.has(sourceKey)) return false;
|
||||||
|
// 跳过不需要测速的源
|
||||||
|
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_') || source.source === 'xiaoya') return false;
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (pendingSources.length === 0) return;
|
if (pendingSources.length === 0) return;
|
||||||
@@ -308,11 +310,15 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
|
|||||||
// 当后台加载从 true 变为 false 时(即加载完成)
|
// 当后台加载从 true 变为 false 时(即加载完成)
|
||||||
if (prevBackgroundLoadingRef.current && !backgroundSourcesLoading) {
|
if (prevBackgroundLoadingRef.current && !backgroundSourcesLoading) {
|
||||||
// 如果当前选项卡在换源位置,触发测速
|
// 如果当前选项卡在换源位置,触发测速
|
||||||
if (activeTab === 'sources' && optimizationEnabled && currentSource !== 'openlist' && currentSource !== 'emby') {
|
if (activeTab === 'sources' && optimizationEnabled) {
|
||||||
// 筛选出尚未测速的播放源
|
// 筛选出尚未测速的播放源,并排除不需要测速的源(openlist/emby/xiaoya)
|
||||||
const pendingSources = availableSources.filter((source) => {
|
const pendingSources = availableSources.filter((source) => {
|
||||||
const sourceKey = `${source.source}-${source.id}`;
|
const sourceKey = `${source.source}-${source.id}`;
|
||||||
return !attemptedSourcesRef.current.has(sourceKey);
|
// 跳过已测速的源
|
||||||
|
if (attemptedSourcesRef.current.has(sourceKey)) return false;
|
||||||
|
// 跳过不需要测速的源
|
||||||
|
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_') || source.source === 'xiaoya') return false;
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (pendingSources.length > 0) {
|
if (pendingSources.length > 0) {
|
||||||
@@ -907,8 +913,8 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
{/* 重新测试按钮 */}
|
{/* 重新测试按钮 */}
|
||||||
{(() => {
|
{(() => {
|
||||||
// 私人影库和 Emby 不显示重新测试按钮
|
// 私人影库、Emby 和小雅不显示重新测试按钮
|
||||||
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_')) {
|
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_') || source.source === 'xiaoya') {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user