豁免小雅优选和测速
This commit is contained in:
@@ -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('未找到已完成的播放链接');
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user