This commit is contained in:
make
2025-12-31 00:49:32 +08:00
parent ae57b68f99
commit eb8c097777
709 changed files with 39727 additions and 1041 deletions

View File

@@ -0,0 +1,154 @@
;(function () {
/**
* =====================================================
* DPlayer Initializer (Scoped by dom_prefix)
* -----------------------------------------------------
* - 不使用全局变量
* - 支持一个页面多个播放器
* - 只初始化 data-engine="dplayer" 的模块
* =====================================================
*/
function initDPlayer(strPlayUrl) {
// if (!root) return;
// var root = document.querySelector('[data-engine="dplayer"]');
// console.log(root)
// if (!root) return;
// var domPrefix = document.body.dataset.class;
// // 防御
// if (!domPrefix) {
// console.error('[Player] dom_prefix missing on body');
// return;
// }
// var core = root.querySelector('.' + domPrefix + '-player-core');
// if (!core) return;
// console.log(core)
console.log('strPlayUrl')
let DomDPlayer = document.getElementById('dplayer')
// ---- 创建 DPlayer 实例 ----
try {
videoPlayer = new DPlayer({
container: DomDPlayer,
autoplay: true,
screenshot: false,
//logo: dplayerLogo,
video: {
url: strPlayUrl,
type: 'hls',
},
pluginOptions: {
hls: {
maxBufferLength: 600,
},
},
});
videoPlayer.play()
// ---- 错误处理(兜底)----
videoPlayer.on('error', function () {
showError(root, '播放失败,请尝试切换线路');
});
} catch (e) {
console.log(e)
showError(root, '播放器初始化失败');
}
}
function showError(root, msg) {
var err = root.querySelector('.' + root.dataset.prefix + '-player-status');
if (!err) {
err = document.createElement('div');
err.className = root.dataset.prefix + '-player-status is-error';
root.appendChild(err);
}
err.innerText = msg;
}
function boot() {
var players = document.querySelectorAll('[data-engine="dplayer"]');
if (!players.length) return;
players.forEach(function (root) {
// dom_prefix 注入(防串)
if (!root.dataset.prefix) {
var cls = root.className || '';
var m = cls.match(/([a-z0-9]{4,8})-player/);
if (m) {
root.dataset.prefix = m[1];
}
}
console.log(root)
initDPlayer(root);
});
}
// 获取第一个线路 key带容错
function getDefaultLine() {
if (typeof arrPlayUrl === "undefined" || !arrPlayUrl || typeof arrPlayUrl !== "object" ) {
console.warn("arrPlayUrl 无效:");
return null;
}
const keys = Object.keys(arrPlayUrl);
if (keys.length === 0) {
console.warn("没有任何播放线路");
return null;
}
return keys[0]; // 后端排序,第一位为默认
}
// 获取某个线路的第一个 url
function getFirstPlayUrl(playLine) {
if (!arrPlayUrl || !arrPlayUrl[playLine] || !arrPlayUrl[playLine][0]) {
console.warn("播放线路不存在:", playLine, arrPlayUrl);
return null;
}
return arrPlayUrl[playLine][0].url || null;
}
// DOM Ready
document.addEventListener("DOMContentLoaded", function () {
// boot();
console.log(strPlayType)
console.log(boolIsPlayPage)
if (typeof strPlayType !== "undefined" && boolIsPlayPage) {
// 用户指定线路
if (strPlayType !== "default") {
const activeUrl = arrPlayUrl[strPlayType][intPlayUrlIndex - 1];
strPlayUrl = activeUrl.url;
// checkLine(strPlayType);
// 默认播放第一个线路的第一个 URL
} else {
const defaultLine = getDefaultLine();
strPlayUrl = getFirstPlayUrl(defaultLine);
// checkLine(defaultLine);
}
console.log('strPlayUrlstrPlayUrl')
initDPlayer(strPlayUrl);
} else if (strPlayType == "default" && !boolIsPlayPage) {
const defaultLine = getDefaultLine();
strPlayUrl = getFirstPlayUrl(defaultLine);
// checkLine(defaultLine);
initDPlayer(strPlayUrl);
}
})
// if (document.readyState === 'loading') {
// document.addEventListener('DOMContentLoaded', boot);
// } else {
// boot();
// }
})();