2026-03-10 20:47:14 +08:00
|
|
|
|
import { Platform } from 'react-native';
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Web 端将 B站图片 CDN URL 转为本地代理地址,注入正确 Referer 绕过防盗链。
|
|
|
|
|
|
* Native 端直接返回原 URL(App 请求头由 axios 拦截器统一设置)。
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function proxyImageUrl(url: string): string {
|
2026-03-12 21:21:01 +08:00
|
|
|
|
if (!url) return url;
|
|
|
|
|
|
if (Platform.OS === 'web') {
|
|
|
|
|
|
return url.replace(
|
|
|
|
|
|
/^https?:\/\/([a-z0-9]+\.hdslb\.com)/,
|
|
|
|
|
|
'http://localhost:3001/bilibili-img/$1',
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
// Native: force HTTPS so Release APK doesn't block cleartext HTTP
|
|
|
|
|
|
return url.replace(/^http:\/\//, 'https://');
|
2026-03-10 20:47:14 +08:00
|
|
|
|
}
|
2026-03-19 16:34:56 +08:00
|
|
|
|
|
|
|
|
|
|
export function coverImageUrl(url: string, quality: 'hd' | 'normal'): string {
|
|
|
|
|
|
const base = proxyImageUrl(url);
|
|
|
|
|
|
if (quality === 'normal' && base) {
|
|
|
|
|
|
return base.replace(/(@[\w]+)?$/, '@320w_180h_1c.webp');
|
|
|
|
|
|
}
|
|
|
|
|
|
return base;
|
|
|
|
|
|
}
|