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 {
VideoItem({
this.id,
@@ -165,8 +173,10 @@ class VideoItem {
VideoItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
baseUrl = json['baseUrl'];
backupUrl =
json['backupUrl'] != null ? json['backupUrl'].toList().first : '';
var backupUrls = json['backupUrl']?.toList() ?? [];
backupUrl = backupUrls.isNotEmpty
? backupUrls.firstWhere((i) => !_isMCDNorPCDN(i), orElse: () => backupUrls.first)
: '';
bandWidth = json['bandWidth'];
mimeType = json['mime_type'];
codecs = json['codecs'];
@@ -236,8 +246,10 @@ class AudioItem {
AudioItem.fromJson(Map<String, dynamic> json) {
id = json['id'];
baseUrl = json['baseUrl'];
backupUrl =
json['backupUrl'] != null ? json['backupUrl'].toList().first : '';
var backupUrls = json['backupUrl']?.toList() ?? [];
backupUrl = backupUrls.isNotEmpty
? backupUrls.firstWhere((i) => !_isMCDNorPCDN(i), orElse: () => backupUrls.first)
: '';
bandWidth = json['bandWidth'];
mimeType = json['mime_type'];
codecs = json['codecs'];

View File

@@ -7,12 +7,6 @@ import 'package:flutter/material.dart';
import '../models/live/room_info.dart';
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]) {
String? backupUrl;
String? videoUrl;
@@ -41,9 +35,7 @@ class VideoUtils {
if (defaultCDNService == CDNService.backupUrl.code) {
return backupUrl.isNullOrEmpty.not ? backupUrl : item.baseUrl ?? "";
}
videoUrl = (backupUrl.isNullOrEmpty || isMCDNorPCDN(backupUrl!))
? item.baseUrl
: backupUrl;
videoUrl = backupUrl.isNullOrEmpty ? item.baseUrl : backupUrl;
if (videoUrl.isNullOrEmpty) {
return "";