Merge pull request #520 from shugen002/preview

使大部分直播功能在blanc原本页面也能使用
This commit is contained in:
Grant Howard 2020-05-11 21:56:50 +08:00 committed by GitHub
commit 222a0806f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 13025 additions and 13030 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{return(t,n)=>{(async()=>{if(!/^https:\/\/live\.bilibili\.com\/[\d]+/.test(document.URL)){return}const t=await SpinQuery.condition(()=>dq(".chat-popups-section"),t=>t.querySelector("chat-draw-area")===null);if(!t){console.warn("[自动领奖] 未能找到弹窗容器");return}Observer.childListSubtree(t,()=>{let t;console.log("draw button = ",dq(".chat-popups-section .draw>span:nth-child(3)"));t=dq(".chat-popups-section .draw>span:nth-child(3)");if(t===null){const t=dq(".chat-popups-section .function-bar>span:nth-child(3)");if(t!==null){const n=Observer.attributes(t,()=>{if(t.style.display!=="none"){n.forEach(t=>t.stop());t.click()}})}}if(t!==null){t.click()}})})()}})();
(()=>{return(t,n)=>{(async()=>{if(!/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/.test(document.URL)){return}const t=await SpinQuery.condition(()=>dq(".chat-popups-section"),t=>t.querySelector("chat-draw-area")===null);if(!t){console.warn("[自动领奖] 未能找到弹窗容器");return}Observer.childListSubtree(t,()=>{let t;console.log("draw button = ",dq(".chat-popups-section .draw>span:nth-child(3)"));t=dq(".chat-popups-section .draw>span:nth-child(3)");if(t===null){const t=dq(".chat-popups-section .function-bar>span:nth-child(3)");if(t!==null){const n=Observer.attributes(t,()=>{if(t.style.display!=="none"){n.forEach(t=>t.stop());t.click()}})}}if(t!==null){t.click()}})})()}})();

View File

@ -9,7 +9,7 @@
"aria2-rpc-profiles.vue.min.js": "CBF3D159566A694BC543EAB5B9E743A13B571743EBDDB8C558AE036483E3AF5A",
"ass-utils.min.js": "1F9E2EAA096B8DC400514627237F0536437BF857BE8CA4D32888AB65476DF124",
"auto-continue.min.js": "96CD47C367D7397CE1467A69764409BAEFF16E8F535BC8E15523CD0B8A86687E",
"auto-draw.min.js": "AE72CF2623DF2D15AD4AF82D125FFAF7EF5B1E6B36D9E9AC646AC98AA6AA8698",
"auto-draw.min.js": "46C82E8F0E1E6149FA6884A81BBF00C7DABABB3D80423F23711B7DB9ECB5B5EC",
"auto-play.min.js": "DC9938AC15DADDC9D88DCA0C9BE64BE142C37D32CB85E42E23DAB2A7378531E5",
"bangumi-timeline.vue.min.js": "753B8C96AFB3E6AC4C9507576D12B6CBB207BC1CC3FE5885C419E99C65BCD547",
"batch-download.min.js": "F54FD3AF5DDDD5DE87B3D40C060197BF22744F4118459C4A70E69C955F9DBC6D",
@ -34,7 +34,7 @@
"custom-control-background.min.js": "B9F366B251D1572ACE801FF6ECF15D4D1AAB3EA5A5B04B961B6F4310E2AB1A84",
"custom-navbar.min.css": "FFA9C1FBF1889F0C7CD73B9C74952D7F3324AFC0F8669EF1E339EBAEF6F37CFD",
"custom-navbar.min.html": "77F05109E85D21240E2936AA3DEEAB8F5A42E20EFB30D42441EF02831535A958",
"custom-navbar.min.js": "E8503CFB15A540B1500055AD826CCC861CC0DBB289D3697AA9FC47336B0322AC",
"custom-navbar.min.js": "56FBB835C99D8E8031AE7811F07224D6B9023CFD9926C0094E80423F59745F38",
"custom-navbar-activities.min.js": "802226FE2C24D56379A6EAD13D3697A4D5A46109D0C63EDACAE8E667ED267EA1",
"custom-navbar-blank.min.js": "DC2B75D5760EECD3A257785FDFBB7E5DEBF61CD9083C68DD5BCE468B093F54F3",
"custom-navbar-category.min.js": "4C9BC4659F7DA0ED97CD7B99175F3D0494C5D575CB14C82776F0C5CB2D31C56A",
@ -53,18 +53,17 @@
"custom-navbar-video-list.min.js": "08D6713144E910C1303CB610A5890A5663B92BE82630BDA3C8E6299FB4A429E2",
"custom-navbar-watchlater-list.min.js": "57EA2C62F7442750BB177B9898CF07BA61C45F0FD99737516ED609051699B054",
"danmaku-converter.min.js": "6C844406F060DCF2483F9CC4C7329911ED77BC77097F2BC5B925B6F12C990820",
"dark.min.css": "B60030574E23A47944D352AF6441BF4701D98D3C67E10C02BF8A9F4A095A1E8D",
"dark.user.css": "C929577C0F19B6543EB7A7267A53BBD485ECDA96DB073A4713A59F2E4D535292",
"dark.min.css": "DF6AF75FE9ACF38CD3DC8F0EE873EF431625DF986C28478118979A7C7151D0AA",
"dark.user.css": "85577802DBE431C84FBE949DA6F3C2907F1AAB92F9576D7F4C5700C4495A305D",
"dark-color-scheme.min.js": "6D353AC738180317ACF9D2E046BFFBA0ACC0FA7A8D22B8E16C51127CDE4FE96B",
"dark-important.min.css": "9381B563726BCA701DD77C7AD572793538A45CB839F56008A55EE46821EA1B05",
"dark-navbar.min.css": "7FAD547E326B768904B3739C978DF86FFDDD5E5064FB8F490710D197CCC3018B",
"dark-schedule.min.js": "853C446547603F4F0425F19F09F73335C9EC451A790C1C07E5E5B88A09E9B453",
"dark-slice-9.min.css": "42D17E9128B8E3B01C435613B68ED7D2950E7C2AD010D8205C569DCBCD2B05A6",
"dark-styles.min.js": "74E6D655F88E50A27D60F189554F6656CCD2A6EA2686FD9946CA9A89EABF7719",
"debounce.min.js": "54D33E1273C1F3FE19550BF1844339C3D54D6B01DF8A39C3162D95B93B079CFA",
"default-danmaku-settings.min.css": "D9942B184FEDA7B08CFA0C34920E97D7A83B81762DCBF757642EBB60F95FF25D",
"default-danmaku-settings.min.js": "9DBC9AC9B5A3B59EBCC6F04D36527B523D66203AC5FE7C2AD5DB46FFB84F9382",
"default-live-quality.min.js": "5FF7CA53B85CF11B66E26F1AED5E6BCB7A55D348D08193FEE3D9D52716424234",
"default-live-quality.min.js": "60975363D8175FE1747982A9B749DBF31E1EB48CE469B840A12F3B333A72FD6F",
"default-player-layout.min.js": "C6CE64216569A006566ADD7FC69451897612F46CC9641B8B15E0A13D5B1F2455",
"default-player-mode.min.js": "AF51F03AD53506A3324EFFCDA6E060F18A06D6FF4A0E8B40C2A82E507699C566",
"default-video-quality.min.js": "A24225E0F72D5BCA7DFE529E5B90B03F494C8720ADEF91D466A923FD767EB907",
@ -135,13 +134,13 @@
"image-viewer.min.html": "763742E79923A7918F281AEBB3CEE76FE2A0AE94CACE325AE4BEE1AED451DAEA",
"index.min.html": "94B83D9EBB9005C1286A7E0759A7683932F8DADA20D07E5E9D8FF867B04D4B95",
"keymap.min.js": "7645CAC3AD71EB78349619C3513FCC70CDDCD6C389D7F91FD4E5B3D9C925366A",
"live-pip.min.js": "65BF8A82C0BD6069B6CD792EC163893CE18137DCF565DFB18BCD8447B2B620F8",
"live-pip.min.js": "04169E2F2E7462846D82EA119D740B18A59A3BF009DA5A4BAB70293AEF9C0E26",
"live-socket.min.js": "8C59B0458D14FBA9233847F18D82F3DAA558A0DA432B63409050C1A27D871C51",
"magic-grid.min.js": "30BA27115FAC84B018A5A8C64031939DF1E324AE199F2F3675925ECF427CBFFC",
"mdi.min.js": "8A22F2F37F88F74FC07CE2FECA7CE135182058BE24409BAF3DEF0D5845B0BE1A",
"medal-helper.min.css": "6AF13675048FEBFB7E56ABE7462346BB53D22DE21DC31A34211872FCF6FA2A3B",
"medal-helper.min.html": "5D7057259368BE97DED3375DD904695B245AA2BF338C5E18CB3CF61DD913617C",
"medal-helper.min.js": "A18800B09EFE9B7A82D0CBC2F74621BBE616E9C8D366145073B6FFB47255425F",
"medal-helper.min.js": "D64188771C2095D1B2B6C1515B04B6C6EA142BC9E3F82CEF622E5D5DB2523563",
"minimal-home.vue.min.js": "59D2CDA4F67F919252722ED02657EDA712ADAD04363BB71C5E5381DB7FA61B2B",
"minimal-home-search.vue.min.js": "1E6198679DB8FBF6DE9CBCD41E9FF55BA44C743A6CFE1BF74822CFD1F70DA252",
"mini-player-touch-move.min.css": "028540E4F40EFD23403CB3D8A654372D7CE65FFC1F95B9793C207179C7C3A9A2",
@ -165,7 +164,7 @@
"player-shadow.min.js": "918D2127907BC2C164CB86BF7F9C2501CF3B9CD236FEEDE5155B9B5D932F3415",
"quality-errors.min.js": "3B5710AEE0B0E0B2A21AABE747EF092CA8FEE4BEC1309AD860884D7DDB21E3C0",
"rank-list.vue.min.js": "EA112025FE267F33FEA4320754C665A1694104FE6AE280AA171B8B0409BBDCCF",
"record-live-danmaku.min.js": "64DC9C8F49971B3C846749E4BE343C9185310DA157996450667FE9C5C62525F6",
"record-live-danmaku.min.js": "2590A564ADD42BBB34E957B92728EBBE85A644A8E0F94ACDE69B55E3FF1C3889",
"record-live-danmaku.vue.min.js": "740784A24CD5326095C269FD33A5B498ADAAF03FE31B136060888D7E7B616BD3",
"remove-promotions.min.css": "9B9A4CB79531B02BE0A0D6E19FEF5B51CC396131EEA826407013BB1EE4A06FCF",
"remove-promotions.min.js": "ADAC6D96409BA013D21D97D83E8C5DE4DCEA1A590ED916F7122ABC678E3A8FB3",

Binary file not shown.

File diff suppressed because one or more lines are too long

2
min/dark.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{return(t,i)=>{(async()=>{if(!document.URL.match(/^https:\/\/live.bilibili.com\/(\d+)/)){return}const i=Resource.all.useDefaultLiveQuality.dropdown;const e=i.items;const l=t.defaultLiveQuality;const o=await SpinQuery.select(".bilibili-live-player-video-controller-switch-quality-btn");if(o===null){console.warn("qualitySettings null");return}const n=async()=>{const t=o.children[0].getAttribute("data-title");const i=dqa(o,".bilibili-live-player-video-controller-html-tooltip-option .text-btn");const n=i.map(t=>t.getAttribute("data-title"));console.log(t,n,l);if(t!==l){let t=l;while(!n.includes(t)){const i=e.indexOf(t);if(i>=e.length-1){console.log("reached lowest quality");return}t=e[i+1]}const o=i[n.indexOf(t)];console.log(o);while(!(o.classList.contains("active")||dq(".bilibili-live-player-video-controller-switch-quality-info"))){await(()=>new Promise(t=>setTimeout(()=>t(),3e3)))();o.click();console.log("click")}}};const c=Observer.childList(o,()=>{console.log(o.childElementCount);if(o.childElementCount>0){n()}})})()}})();
(()=>{return(t,i)=>{(async()=>{if(!document.URL.match(/^https:\/\/live.bilibili.com\/(blanc\/)?(\d+)/)){return}const i=Resource.all.useDefaultLiveQuality.dropdown;const l=i.items;const e=t.defaultLiveQuality;const o=await SpinQuery.select(".bilibili-live-player-video-controller-switch-quality-btn");if(o===null){console.warn("qualitySettings null");return}const n=async()=>{const t=o.children[0].getAttribute("data-title");const i=dqa(o,".bilibili-live-player-video-controller-html-tooltip-option .text-btn");const n=i.map(t=>t.getAttribute("data-title"));console.log(t,n,e);if(t!==e){let t=e;while(!n.includes(t)){const i=l.indexOf(t);if(i>=l.length-1){console.log("reached lowest quality");return}t=l[i+1]}const o=i[n.indexOf(t)];console.log(o);while(!(o.classList.contains("active")||dq(".bilibili-live-player-video-controller-switch-quality-info"))){await(()=>new Promise(t=>setTimeout(()=>t(),3e3)))();o.click();console.log("click")}}};const c=Observer.childList(o,()=>{console.log(o.childElementCount);if(o.childElementCount>0){n()}})})()}})();

2
min/live-pip.min.js vendored
View File

@ -1 +1 @@
(()=>{return(t,e)=>{return{widget:{content:`\n<button class="gui-settings-flat-button" id="live-pip">\n<i class="mdi mdi-24px mdi-picture-in-picture-bottom-right" style="transform: scale(0.9);"></i>\n<span>画中画</span>\n</button>\n`,condition:()=>{return document.URL.match(/https:\/\/live.bilibili.com\/([\d]+)/)&&"requestPictureInPicture"in HTMLVideoElement.prototype},success:()=>{dq("#live-pip").addEventListener("click",()=>{if(document.pictureInPictureElement===dq("video")){document.exitPictureInPicture()}else{dq("video").requestPictureInPicture()}})}}}}})();
(()=>{return(t,e)=>{return{widget:{content:`\n<button class="gui-settings-flat-button" id="live-pip">\n<i class="mdi mdi-24px mdi-picture-in-picture-bottom-right" style="transform: scale(0.9);"></i>\n<span>画中画</span>\n</button>\n`,condition:()=>{return document.URL.match(/https:\/\/live.bilibili.com\/(blanc\/)?([\d]+)/)&&"requestPictureInPicture"in HTMLVideoElement.prototype},success:()=>{dq("#live-pip").addEventListener("click",()=>{if(document.pictureInPictureElement===dq("video")){document.exitPictureInPicture()}else{dq("video").requestPictureInPicture()}})}}}}})();

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
(()=>{return(e,n)=>{const t=()=>{return Boolean(document.URL.match(/live\.bilibili\.com\/(\d)+/))};const d=()=>{const e=dq(`#record-live-danmaku`);let t;e.addEventListener("click",async()=>{if(!dq(".live-danmaku-recorder")){const e=await n.importAsync("record-live-danmaku.vue");t=(new(Vue.extend(e))).$mount();const d=t.$el;document.body.insertAdjacentElement("beforeend",d);t.opened=true}else{t.opened=!t.opened}dq(".gui-settings-mask").click()})};return{widget:{content:`\n<button class="gui-settings-flat-button" id="record-live-danmaku">\n<i class="mdi mdi-24px mdi-record-rec" style="transform: scale(1.3)"></i>\n<span>记录弹幕</span>\n</button>\n`,condition:t,success:d}}}})();
(()=>{return(e,n)=>{const t=()=>{return Boolean(document.URL.match(/live\.bilibili\.com\/(blanc\/)?(\d)+/))};const c=()=>{const e=dq(`#record-live-danmaku`);let t;e.addEventListener("click",async()=>{if(!dq(".live-danmaku-recorder")){const e=await n.importAsync("record-live-danmaku.vue");t=(new(Vue.extend(e))).$mount();const c=t.$el;document.body.insertAdjacentElement("beforeend",c);t.opened=true}else{t.opened=!t.opened}dq(".gui-settings-mask").click()})};return{widget:{content:`\n<button class="gui-settings-flat-button" id="record-live-danmaku">\n<i class="mdi mdi-24px mdi-record-rec" style="transform: scale(1.3)"></i>\n<span>记录弹幕</span>\n</button>\n`,condition:t,success:c}}}})();

View File

@ -1,5 +1,5 @@
(async () => {
if (!/^https:\/\/live\.bilibili\.com\/[\d]+/.test(document.URL)) {
if (!/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/.test(document.URL)) {
return
}
const popupContainer = await SpinQuery.condition(

View File

@ -1,5 +1,5 @@
(async () => {
if (!document.URL.match(/^https:\/\/live.bilibili.com\/(\d+)/)) {
if (!document.URL.match(/^https:\/\/live.bilibili.com\/(blanc\/)?(\d+)/)) {
return
}
const dropdown = Resource.all.useDefaultLiveQuality.dropdown as Dropdown

View File

@ -7,12 +7,12 @@ export default {
</button>
`,
condition: () => {
return document.URL.match(/https:\/\/live.bilibili.com\/([\d]+)/)
return document.URL.match(/https:\/\/live.bilibili.com\/(blanc\/)?([\d]+)/)
&& 'requestPictureInPicture' in HTMLVideoElement.prototype
},
success: () => {
(dq('#live-pip') as HTMLButtonElement).addEventListener('click', () => {
if (document.pictureInPictureElement === dq('video')){
if (document.pictureInPictureElement === dq('video')) {
document.exitPictureInPicture()
} else {
(dq('video') as HTMLVideoElement).requestPictureInPicture()

View File

@ -1,9 +1,9 @@
const getRoomID = () => {
const match = document.URL.match(/live\.bilibili\.com\/(\d+)/)
const match = document.URL.match(/live\.bilibili\.com\/(blanc\/)?(\d+)/)
if (!match) {
return
}
const roomID = parseInt(match[1])
const roomID = parseInt(match[2])
if (isNaN(roomID)) {
console.warn(`roomID not found`)
return
@ -99,7 +99,7 @@ class Medal extends Badge {
}
}
class Title extends Badge {
static imageMap: {[id: string]: string}
static imageMap: { [id: string]: string }
tid: number
cid: number
name: string

View File

@ -1,5 +1,5 @@
const condition = () => {
return Boolean(document.URL.match(/live\.bilibili\.com\/(\d)+/))
return Boolean(document.URL.match(/live\.bilibili\.com\/(blanc\/)?(\d)+/))
}
const init = () => {
const button = dq(`#record-live-danmaku`) as HTMLButtonElement