From 2fd67039829b55b7cd6d508384e27bc523644b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=95=E8=B0=83?= Date: Sat, 13 May 2017 22:47:41 +0800 Subject: [PATCH 1/2] Update seeker_pandatv.js --- src/seeker_pandatv.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/seeker_pandatv.js b/src/seeker_pandatv.js index eecb477..31e5924 100644 --- a/src/seeker_pandatv.js +++ b/src/seeker_pandatv.js @@ -8,7 +8,8 @@ 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) } exports.getVideos = function (url, callback) { @@ -18,7 +19,24 @@ exports.getVideos = function (url, callback) { return; } - var room_id = url.attr('path').match(/^\/([0-9]+)$/)[1] + /* 获取房间 ID 号 + * + * 2017年05月13日 by @monotone + */ + 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, From dbc273f92a7a06165f7d099398c620a414250654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=95=E8=B0=83?= Date: Sat, 13 May 2017 23:41:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=20room?= =?UTF-8?q?=5Fid=E7=9A=84=E6=96=B9=E5=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/seeker_pandatv.js | 45 +++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/seeker_pandatv.js b/src/seeker_pandatv.js index 31e5924..21e9774 100644 --- a/src/seeker_pandatv.js +++ b/src/seeker_pandatv.js @@ -12,6 +12,15 @@ exports.match = function () { 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) { if(!canPlayM3U8){ log('use safari please') @@ -19,24 +28,36 @@ exports.getVideos = function (url, callback) { return; } - /* 获取房间 ID 号 + var room_id = url.attr('path').match(/^\/([0-9]+)$/)[1] + + /* 其他 URL 格式获取房间 ID 号 * * 2017年05月13日 by @monotone */ - 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; + + // 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,