豁免小雅优选和测速

This commit is contained in:
mtvpls
2026-01-11 20:10:12 +08:00
parent 8b74ddc73f
commit 8c2db37d45
3 changed files with 27 additions and 17 deletions

View File

@@ -128,17 +128,17 @@ export async function GET(request: NextRequest) {
const qualityOrder: Record<string, number> = {
'FHD': 1,
'HD': 2,
'SD': 3,
'LD': 4,
'LD': 3,
'SD': 4,
};
const qualities = taskList
.filter((task: any) => task.status === 'finished')
.filter((task: any) => task.status === 'finished')
.map((task: any) => ({
name: task.template_id,
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) {
throw new Error('未找到已完成的播放链接');

View File

@@ -2577,7 +2577,7 @@ function PlayPageClient() {
setLoadingStage('preferring');
setLoadingMessage('⚡ 正在优选最佳播放源...');
// 过滤掉 openlist所有 emby 源,它们不参与测速
// 过滤掉 openlist所有 emby 源和 xiaoya 源,它们不参与测速
const sourcesToTest = sourcesInfo.filter(s => {
// 检查是否为 openlist
if (s.source === 'openlist') return false;
@@ -2585,19 +2585,23 @@ function PlayPageClient() {
// 检查是否为 emby 源(包括 emby 和 emby_xxx 格式)
if (s.source === 'emby' || s.source.startsWith('emby_')) return false;
// 检查是否为 xiaoya 源
if (s.source === 'xiaoya') return false;
return true;
});
const excludedSources = sourcesInfo.filter(s =>
s.source === 'openlist' ||
s.source === 'emby' ||
s.source.startsWith('emby_')
s.source.startsWith('emby_') ||
s.source === 'xiaoya'
);
if (sourcesToTest.length > 0) {
detailData = await preferBestSource(sourcesToTest);
} else if (excludedSources.length > 0) {
// 如果只有 openlist/emby 源,直接使用第一个
// 如果只有 openlist/emby/xiaoya 源,直接使用第一个
detailData = excludedSources[0];
} else {
detailData = sourcesInfo[0];

View File

@@ -271,16 +271,18 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
if (
!optimizationEnabled || // 若关闭测速则直接退出
activeTab !== 'sources' ||
availableSources.length === 0 ||
currentSource === 'openlist' || // 私人影库不进行测速
currentSource === 'emby' // Emby 不进行测速
availableSources.length === 0
)
return;
// 筛选出尚未测速的播放源
// 筛选出尚未测速的播放源并排除不需要测速的源openlist/emby/xiaoya
const pendingSources = availableSources.filter((source) => {
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;
@@ -308,11 +310,15 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
// 当后台加载从 true 变为 false 时(即加载完成)
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 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) {
@@ -907,8 +913,8 @@ const EpisodeSelector: React.FC<EpisodeSelectorProps> = ({
</div>
{/* 重新测试按钮 */}
{(() => {
// 私人影库Emby 不显示重新测试按钮
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_')) {
// 私人影库Emby 和小雅不显示重新测试按钮
if (source.source === 'openlist' || source.source === 'emby' || source.source.startsWith('emby_') || source.source === 'xiaoya') {
return null;
}