diff --git a/src/seeker_pandatv.js b/src/seeker_pandatv.js index eecb477..21e9774 100644 --- a/src/seeker_pandatv.js +++ b/src/seeker_pandatv.js @@ -8,7 +8,17 @@ var ajax = require('./ajax') var httpProxy = require('./httpProxy') exports.match = function () { - return /^http\:\/\/www\.panda\.tv\/[0-9]+$/.test(location.href) + // 调整url匹配 by @monotone + return /^http\:\/\/www\.panda\.tv\/.*/.test(location.href) +} + +function GetQueryString(name) +{ + var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); + var r = window.location.search.substr(1).match(reg); + if(r!=null) + return unescape(r[2]); + return null; } exports.getVideos = function (url, callback) { @@ -19,6 +29,35 @@ exports.getVideos = function (url, callback) { } var room_id = url.attr('path').match(/^\/([0-9]+)$/)[1] + + /* 其他 URL 格式获取房间 ID 号 + * + * 2017年05月13日 by @monotone + */ + + // query参数中获取 + if(room_id == null){ + room_id = GetQueryString('roomid'); + } + + // 从源码中获取 + if(room_id == null){ + var roomContainer = document.getElementById('dva-room-container'); + if(roomContainer == null){ + log('找不到视频容器。') + return; + } + var room_id = null; + var divs = roomContainer.getElementsByTagName('DIV'); + for (var i = divs.length - 1; i >= 0; i--) { + room_id = divs[i].getAttribute('data-room-id'); + if(room_id != null){ + break; + } + } + } + + var m3u8_api = 'http://room.api.m.panda.tv/index.php?method=room.shareapi&roomid=' httpProxy( m3u8_api + room_id,