Add 4K option

This commit is contained in:
the1812 2020-04-23 21:24:15 +08:00
parent b4247125b0
commit 25e14e68ee
10 changed files with 90 additions and 102 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

@ -54,11 +54,10 @@
"custom-navbar-watchlater-list.min.js": "57EA2C62F7442750BB177B9898CF07BA61C45F0FD99737516ED609051699B054",
"danmaku-converter.min.js": "6C844406F060DCF2483F9CC4C7329911ED77BC77097F2BC5B925B6F12C990820",
"dark.min.css": "87197C4B8C71279C9EF315A473E12082AB77A6824CCDD8E5C1BB4E8025447DC1",
"dark.user.css": "6635E5C410EC08BE89D20EB53E1F52B2F2E276DBE4948DEE2FF7EA685F5E1AAD",
"dark.user.css": "B218ED92B144F0EBE9A04C9F0B139298A19703A913161FA420A15036FC70E4B4",
"dark-important.min.css": "9381B563726BCA701DD77C7AD572793538A45CB839F56008A55EE46821EA1B05",
"dark-navbar.min.css": "A2D91F11127D165571ACCC53004EDDB118CEE110F9B020D7E0541E1C8FAEA478",
"dark-schedule.min.js": "853C446547603F4F0425F19F09F73335C9EC451A790C1C07E5E5B88A09E9B453",
"dark-slice-12.min.css": "67DECF7390D1BBEFCE95D4F65ABAFE12400F777CF0110550FE151559C08B8389",
"dark-styles.min.js": "74E6D655F88E50A27D60F189554F6656CCD2A6EA2686FD9946CA9A89EABF7719",
"debounce.min.js": "54D33E1273C1F3FE19550BF1844339C3D54D6B01DF8A39C3162D95B93B079CFA",
"default-danmaku-settings.min.css": "D9942B184FEDA7B08CFA0C34920E97D7A83B81762DCBF757642EBB60F95FF25D",
@ -66,7 +65,7 @@
"default-live-quality.min.js": "5FF7CA53B85CF11B66E26F1AED5E6BCB7A55D348D08193FEE3D9D52716424234",
"default-player-layout.min.js": "C6CE64216569A006566ADD7FC69451897612F46CC9641B8B15E0A13D5B1F2455",
"default-player-mode.min.js": "244264CF975A8266ABB239C24E5CFEE0E3C918340267571244EE2CDC893D7167",
"default-video-quality.min.js": "D423D80B3151ACA49D8F769054E0F839DA2367E7F7C0590EFD60F71B4A6BEADB",
"default-video-quality.min.js": "A24225E0F72D5BCA7DFE529E5B90B03F494C8720ADEF91D466A923FD767EB907",
"default-video-speed.min.js": "EBBF43D8013E32AC13C3E9396480574DDC549BA8BC7CCF15FE4EEF2DFEF64F33",
"double-click-fullscreen.min.js": "C6D95B92ECDE67F2C0A3C6B6E4DC655C524F6A98CE0D48733ADCE4ABA780A47B",
"download-audio.min.js": "1F4536DE4FF302BFD026CA17E028AF8EB037FB6D0CB355692549DECAEAE0E8C9",

Binary file not shown.

View File

@ -1 +1 @@
(()=>{return(e,a)=>{const t=[{name:"1080P60",value:116},{name:"1080P+",value:112},{name:"1080P",value:80},{name:"720P60",value:74},{name:"720P",value:64},{name:"480P",value:32},{name:"360P",value:15},{name:"自动",value:0}];async function i(){const a=await SpinQuery.any(()=>$(".bilibili-player-video-quality-menu .bui-select-list>li.bui-select-item"));if(!a){return}const i=(e,a)=>a-e;const[n]=a.toArray().map(e=>parseInt(e.getAttribute("data-value"))).sort(i);const[l]=t.filter(a=>a.name===e.defaultVideoQuality).map(e=>e.value).sort(i);const[r]=t.map(e=>e.value).filter(e=>e<=Math.min(l,n)).sort(i);const u=await SpinQuery.select(()=>document.querySelector("video"));function s(){a.each((e,a)=>{if(parseInt(a.getAttribute("data-value"))===r){a.click()}});this.removeEventListener("play",s)}u.addEventListener("play",s)}if(Observer.videoChange){Observer.videoChange(i)}else{Observer.childList("#bofqi",()=>i())}}})();
(()=>{return(e,a)=>{const t=[{name:"4K",value:120},{name:"1080P60",value:116},{name:"1080P+",value:112},{name:"1080P",value:80},{name:"720P60",value:74},{name:"720P",value:64},{name:"480P",value:32},{name:"360P",value:15},{name:"自动",value:0}];async function n(){const a=".bilibili-player-video-quality-menu .bui-select-list>li.bui-select-item";await SpinQuery.select(a);const n=dqa(a);if(!n){return}const[i]=n.map(e=>parseInt(e.getAttribute("data-value"))).sort(descendingSort(e=>e));const[l]=t.filter(a=>a.name===e.defaultVideoQuality).map(e=>e.value).sort(descendingSort(e=>e));const[u]=t.map(e=>e.value).filter(e=>e<=Math.min(l,i)).sort(descendingSort(e=>e));const r=await SpinQuery.select("video");function s(){n.forEach(e=>{if(parseInt(e.getAttribute("data-value"))===u){e.click()}});this.removeEventListener("play",s)}r.addEventListener("play",s)}Observer.videoChange(n)}})();

View File

@ -365,7 +365,7 @@ Resource.manifest = {
},
dropdown: {
key: 'defaultVideoQuality',
items: ['1080P60', '1080P+', '1080P', '720P60', '720P', '480P', '360P', '自动']
items: ['4K', '1080P60', '1080P+', '1080P', '720P60', '720P', '480P', '360P', '自动']
}
},
comboLike: {

View File

@ -1,75 +0,0 @@
const qualities = [
{
name: "1080P60",
value: 116,
},
{
name: "1080P+",
value: 112,
},
{
name: "1080P",
value: 80,
},
{
name: "720P60",
value: 74,
},
{
name: "720P",
value: 64,
},
{
name: "480P",
value: 32,
},
{
name: "360P",
value: 15,
},
{
name: "自动",
value: 0,
},
];
async function applyQuality()
{
const qualityItems = await SpinQuery.any(
() => $(".bilibili-player-video-quality-menu .bui-select-list>li.bui-select-item"),
);
if (!qualityItems)
{
return;
}
const descendingOrder = (a, b) => b - a;
const [availableHighestQualities] = qualityItems.toArray()
.map(it => parseInt(it.getAttribute("data-value")))
.sort(descendingOrder);
const [targetQuality] = qualities
.filter(it => it.name === settings.defaultVideoQuality)
.map(it => it.value)
.sort(descendingOrder);
const [finalQuality] = qualities
.map(it => it.value)
.filter(it => it <= Math.min(targetQuality, availableHighestQualities))
.sort(descendingOrder);
const video = await SpinQuery.select(() => document.querySelector("video"));
function onplay()
{
qualityItems.each((_, it) =>
{
if (parseInt(it.getAttribute("data-value")) === finalQuality)
{
it.click();
}
});
this.removeEventListener("play", onplay);
}
video.addEventListener("play", onplay);
}
if (Observer.videoChange)
{
Observer.videoChange(applyQuality);
}
else
{ Observer.childList("#bofqi", () => applyQuality()); }

View File

@ -0,0 +1,68 @@
const qualities = [
{
name: '4K',
value: 120,
},
{
name: '1080P60',
value: 116,
},
{
name: '1080P+',
value: 112,
},
{
name: '1080P',
value: 80,
},
{
name: '720P60',
value: 74,
},
{
name: '720P',
value: 64,
},
{
name: '480P',
value: 32,
},
{
name: '360P',
value: 15,
},
{
name: '自动',
value: 0,
},
]
async function applyQuality() {
const selector = '.bilibili-player-video-quality-menu .bui-select-list>li.bui-select-item'
await SpinQuery.select(selector)
const qualityItems = dqa(selector) as HTMLElement[]
if (!qualityItems) {
return
}
const [highestQualities] = qualityItems
.map(it => parseInt(it.getAttribute('data-value')!))
.sort(descendingSort(i => i))
const [targetQuality] = qualities
.filter(it => it.name === settings.defaultVideoQuality)
.map(it => it.value)
.sort(descendingSort(i => i))
const [finalQuality] = qualities
.map(it => it.value)
.filter(it => it <= Math.min(targetQuality, highestQualities))
.sort(descendingSort(i => i))
const video = await SpinQuery.select('video') as HTMLVideoElement
function onplay() {
qualityItems.forEach(it => {
if (parseInt(it.getAttribute('data-value')!) === finalQuality) {
it.click()
}
})
this.removeEventListener('play', onplay)
}
video.addEventListener('play', onplay)
}
Observer.videoChange(applyQuality)