skip mcdn on parsing (#281)

This commit is contained in:
My-Responsitories
2025-02-19 06:55:02 +00:00
committed by GitHub
parent 415c68a570
commit cfb6c674ea
2 changed files with 17 additions and 13 deletions

View File

@@ -129,6 +129,14 @@ class Durl {
} }
} }
final _ipRegExp = RegExp(r'^https?://\d{1,3}\.\d{1,3}');
bool _isMCDNorPCDN(String url) {
return url.contains("szbdyd.com") ||
url.contains(".mcdn.bilivideo") ||
_ipRegExp.hasMatch(url);
}
class VideoItem { class VideoItem {
VideoItem({ VideoItem({
this.id, this.id,
@@ -165,8 +173,10 @@ class VideoItem {
VideoItem.fromJson(Map<String, dynamic> json) { VideoItem.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
baseUrl = json['baseUrl']; baseUrl = json['baseUrl'];
backupUrl = var backupUrls = json['backupUrl']?.toList() ?? [];
json['backupUrl'] != null ? json['backupUrl'].toList().first : ''; backupUrl = backupUrls.isNotEmpty
? backupUrls.firstWhere((i) => !_isMCDNorPCDN(i), orElse: () => backupUrls.first)
: '';
bandWidth = json['bandWidth']; bandWidth = json['bandWidth'];
mimeType = json['mime_type']; mimeType = json['mime_type'];
codecs = json['codecs']; codecs = json['codecs'];
@@ -236,8 +246,10 @@ class AudioItem {
AudioItem.fromJson(Map<String, dynamic> json) { AudioItem.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
baseUrl = json['baseUrl']; baseUrl = json['baseUrl'];
backupUrl = var backupUrls = json['backupUrl']?.toList() ?? [];
json['backupUrl'] != null ? json['backupUrl'].toList().first : ''; backupUrl = backupUrls.isNotEmpty
? backupUrls.firstWhere((i) => !_isMCDNorPCDN(i), orElse: () => backupUrls.first)
: '';
bandWidth = json['bandWidth']; bandWidth = json['bandWidth'];
mimeType = json['mime_type']; mimeType = json['mime_type'];
codecs = json['codecs']; codecs = json['codecs'];

View File

@@ -7,12 +7,6 @@ import 'package:flutter/material.dart';
import '../models/live/room_info.dart'; import '../models/live/room_info.dart';
class VideoUtils { class VideoUtils {
static bool isMCDNorPCDN(String url) {
return url.contains("szbdyd.com") ||
url.contains(".mcdn.bilivideo") ||
RegExp(r'^https?://\d{1,3}\.\d{1,3}').hasMatch(url);
}
static String getCdnUrl(dynamic item, [defaultCDNService]) { static String getCdnUrl(dynamic item, [defaultCDNService]) {
String? backupUrl; String? backupUrl;
String? videoUrl; String? videoUrl;
@@ -41,9 +35,7 @@ class VideoUtils {
if (defaultCDNService == CDNService.backupUrl.code) { if (defaultCDNService == CDNService.backupUrl.code) {
return backupUrl.isNullOrEmpty.not ? backupUrl : item.baseUrl ?? ""; return backupUrl.isNullOrEmpty.not ? backupUrl : item.baseUrl ?? "";
} }
videoUrl = (backupUrl.isNullOrEmpty || isMCDNorPCDN(backupUrl!)) videoUrl = backupUrl.isNullOrEmpty ? item.baseUrl : backupUrl;
? item.baseUrl
: backupUrl;
if (videoUrl.isNullOrEmpty) { if (videoUrl.isNullOrEmpty) {
return ""; return "";