mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +08:00
skip mcdn on parsing (#281)
This commit is contained in:
committed by
GitHub
parent
415c68a570
commit
cfb6c674ea
@@ -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'];
|
||||||
|
|||||||
@@ -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 "";
|
||||||
|
|||||||
Reference in New Issue
Block a user