mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-27 17:51:20 -08:00
add danmu filter
This commit is contained in:
1 parent
763d5c0788
commit
ef66416389
5 files changed
+83
-25
No files matched your search
+2
-1
@@ -122,10 +122,11 @@
|
|||||||
danmuku: '/assets/sample/danmuku.xml',
|
danmuku: '/assets/sample/danmuku.xml',
|
||||||
speed: 5,
|
speed: 5,
|
||||||
maxlength: 50,
|
maxlength: 50,
|
||||||
margin: [10, 50],
|
margin: ['10%', 60],
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
synchronousPlayback: false,
|
synchronousPlayback: false,
|
||||||
|
filter: (danmu) => danmu.text.length < 20,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
whitelist: ['*'],
|
whitelist: ['*'],
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
this[globalName] = mainExports;
|
this[globalName] = mainExports;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})({"lIf7X":[function(require,module,exports) {
|
})({"gEVO5":[function(require,module,exports) {
|
||||||
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
||||||
parcelHelpers.defineInteropFlag(exports);
|
parcelHelpers.defineInteropFlag(exports);
|
||||||
var _danmuku = require("./danmuku");
|
var _danmuku = require("./danmuku");
|
||||||
@@ -165,7 +165,7 @@ function artplayerPluginDanmuku(option) {
|
|||||||
exports.default = artplayerPluginDanmuku;
|
exports.default = artplayerPluginDanmuku;
|
||||||
window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;
|
window['artplayerPluginDanmuku'] = artplayerPluginDanmuku;
|
||||||
|
|
||||||
},{"./danmuku":"cv7fe","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"cv7fe":[function(require,module,exports) {
|
},{"./danmuku":"igPca","@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}],"igPca":[function(require,module,exports) {
|
||||||
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
||||||
parcelHelpers.defineInteropFlag(exports);
|
parcelHelpers.defineInteropFlag(exports);
|
||||||
var _i18N = require("./i18n");
|
var _i18N = require("./i18n");
|
||||||
@@ -205,6 +205,8 @@ class Danmuku {
|
|||||||
],
|
],
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
fontSize: 25,
|
fontSize: 25,
|
||||||
|
filter: ()=>true
|
||||||
|
,
|
||||||
synchronousPlayback: false
|
synchronousPlayback: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -216,12 +218,35 @@ class Danmuku {
|
|||||||
margin: 'array',
|
margin: 'array',
|
||||||
opacity: 'number',
|
opacity: 'number',
|
||||||
fontSize: 'number',
|
fontSize: 'number',
|
||||||
|
filter: 'function',
|
||||||
synchronousPlayback: 'boolean'
|
synchronousPlayback: 'boolean'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
get isRotate() {
|
get isRotate() {
|
||||||
return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;
|
return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;
|
||||||
}
|
}
|
||||||
|
get marginTop() {
|
||||||
|
const { clamp } = this.utils;
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const value = this.option.margin[0];
|
||||||
|
if (typeof value === 'number') return clamp(value, 0, $player.clientHeight);
|
||||||
|
if (typeof value === 'string' && value.endsWith('%')) {
|
||||||
|
const ratio = parseFloat(value) / 100;
|
||||||
|
return clamp($player.clientHeight * ratio, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
return Danmuku.option.margin[0];
|
||||||
|
}
|
||||||
|
get marginBottom() {
|
||||||
|
const { clamp } = this.utils;
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const value = this.option.margin[1];
|
||||||
|
if (typeof value === 'number') return clamp(value, 0, $player.clientHeight);
|
||||||
|
if (typeof value === 'string' && value.endsWith('%')) {
|
||||||
|
const ratio = parseFloat(value) / 100;
|
||||||
|
return clamp($player.clientHeight * ratio, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
return Danmuku.option.margin[1];
|
||||||
|
}
|
||||||
filter(state, callback) {
|
filter(state, callback) {
|
||||||
return this.queue.filter((danmu)=>danmu.$state === state
|
return this.queue.filter((danmu)=>danmu.$state === state
|
||||||
).map(callback);
|
).map(callback);
|
||||||
@@ -307,8 +332,6 @@ class Danmuku {
|
|||||||
this.validator(this.option, Danmuku.scheme);
|
this.validator(this.option, Danmuku.scheme);
|
||||||
this.option.speed = clamp(this.option.speed, 1, 10);
|
this.option.speed = clamp(this.option.speed, 1, 10);
|
||||||
this.option.maxlength = clamp(this.option.maxlength, 10, 100);
|
this.option.maxlength = clamp(this.option.maxlength, 10, 100);
|
||||||
this.option.margin[0] = clamp(this.option.margin[0], 0, 200);
|
|
||||||
this.option.margin[1] = clamp(this.option.margin[1], 0, 200);
|
|
||||||
this.option.opacity = clamp(this.option.opacity, 0, 1);
|
this.option.opacity = clamp(this.option.opacity, 0, 1);
|
||||||
this.option.fontSize = clamp(this.option.fontSize, 12, 100);
|
this.option.fontSize = clamp(this.option.fontSize, 12, 100);
|
||||||
this.art.emit('artplayerPluginDanmuku:config', this.option);
|
this.art.emit('artplayerPluginDanmuku:config', this.option);
|
||||||
@@ -466,6 +489,7 @@ class Danmuku {
|
|||||||
time: 'number|undefined',
|
time: 'number|undefined',
|
||||||
border: 'boolean|undefined'
|
border: 'boolean|undefined'
|
||||||
});
|
});
|
||||||
|
if (!this.option.filter(danmu)) return this;
|
||||||
if (!danmu.text.trim()) return this;
|
if (!danmu.text.trim()) return this;
|
||||||
if (danmu.text.length > this.option.maxlength) return this;
|
if (danmu.text.length > this.option.maxlength) return this;
|
||||||
if (danmu.time) danmu.time = this.utils.clamp(danmu.time, 0, Infinity);
|
if (danmu.time) danmu.time = this.utils.clamp(danmu.time, 0, Infinity);
|
||||||
@@ -484,7 +508,7 @@ class Danmuku {
|
|||||||
}
|
}
|
||||||
exports.default = Danmuku;
|
exports.default = Danmuku;
|
||||||
|
|
||||||
},{"./i18n":"jX6xP","./bilibili":"95SuC","./getDanmuTop":"2ouQq","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"jX6xP":[function(require,module,exports) {
|
},{"./i18n":"cJKlZ","./bilibili":"6a8GK","./getDanmuTop":"eLxSm","@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}],"cJKlZ":[function(require,module,exports) {
|
||||||
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
||||||
parcelHelpers.defineInteropFlag(exports);
|
parcelHelpers.defineInteropFlag(exports);
|
||||||
exports.default = {
|
exports.default = {
|
||||||
@@ -506,7 +530,7 @@ exports.default = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}],"6SDkN":[function(require,module,exports) {
|
||||||
exports.interopDefault = function(a) {
|
exports.interopDefault = function(a) {
|
||||||
return a && a.__esModule ? a : {
|
return a && a.__esModule ? a : {
|
||||||
default: a
|
default: a
|
||||||
@@ -536,7 +560,7 @@ exports.export = function(dest, destName, get) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
},{}],"95SuC":[function(require,module,exports) {
|
},{}],"6a8GK":[function(require,module,exports) {
|
||||||
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
||||||
parcelHelpers.defineInteropFlag(exports);
|
parcelHelpers.defineInteropFlag(exports);
|
||||||
parcelHelpers.export(exports, "getMode", ()=>getMode
|
parcelHelpers.export(exports, "getMode", ()=>getMode
|
||||||
@@ -583,7 +607,7 @@ function bilibiliDanmuParseFromUrl(url) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"2ouQq":[function(require,module,exports) {
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}],"eLxSm":[function(require,module,exports) {
|
||||||
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
|
||||||
parcelHelpers.defineInteropFlag(exports);
|
parcelHelpers.defineInteropFlag(exports);
|
||||||
function calculatedTop(danmus) {
|
function calculatedTop(danmus) {
|
||||||
@@ -632,10 +656,9 @@ function calculatedTop(danmus) {
|
|||||||
return top;
|
return top;
|
||||||
}
|
}
|
||||||
function getDanmuTop(ins, danmu) {
|
function getDanmuTop(ins, danmu) {
|
||||||
const [marginTop, marginBottom] = ins.option.margin;
|
|
||||||
const { $player } = ins.art.template;
|
const { $player } = ins.art.template;
|
||||||
const danmus = ins.queue.filter((item)=>{
|
const danmus = ins.queue.filter((item)=>{
|
||||||
return item.mode === danmu.mode && item.$state === 'emit' && item.$ref && item.$ref.style.fontSize === danmu.$ref.style.fontSize && item.$ref.offsetTop <= $player.clientHeight - marginBottom;
|
return item.mode === danmu.mode && item.$state === 'emit' && item.$ref && item.$ref.style.fontSize === danmu.$ref.style.fontSize && item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom;
|
||||||
}).map((item)=>{
|
}).map((item)=>{
|
||||||
return {
|
return {
|
||||||
top: item.$ref.offsetTop,
|
top: item.$ref.offsetTop,
|
||||||
@@ -646,25 +669,25 @@ function getDanmuTop(ins, danmu) {
|
|||||||
};
|
};
|
||||||
}).sort((prev, next)=>prev.top - next.top
|
}).sort((prev, next)=>prev.top - next.top
|
||||||
);
|
);
|
||||||
if (danmus.length === 0) return marginTop;
|
if (danmus.length === 0) return ins.marginTop;
|
||||||
danmus.unshift({
|
danmus.unshift({
|
||||||
top: 0,
|
top: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
height: marginTop,
|
height: ins.marginTop,
|
||||||
width: $player.clientWidth
|
width: $player.clientWidth
|
||||||
});
|
});
|
||||||
danmus.push({
|
danmus.push({
|
||||||
top: $player.clientHeight - marginBottom,
|
top: $player.clientHeight - ins.marginBottom,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
height: marginBottom,
|
height: ins.marginBottom,
|
||||||
width: $player.clientWidth
|
width: $player.clientWidth
|
||||||
});
|
});
|
||||||
return calculatedTop(danmus);
|
return calculatedTop(danmus);
|
||||||
}
|
}
|
||||||
exports.default = getDanmuTop;
|
exports.default = getDanmuTop;
|
||||||
|
|
||||||
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}]},["lIf7X"], "lIf7X", "parcelRequire4dc0")
|
},{"@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}]},["gEVO5"], "gEVO5", "parcelRequire93cf")
|
||||||
|
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"mappings":"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 truncated
|
{"mappings":"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 truncated
|
||||||
@@ -35,6 +35,7 @@ export default class Danmuku {
|
|||||||
margin: [10, 100],
|
margin: [10, 100],
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
fontSize: 25,
|
fontSize: 25,
|
||||||
|
filter: () => true,
|
||||||
synchronousPlayback: false,
|
synchronousPlayback: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -47,6 +48,7 @@ export default class Danmuku {
|
|||||||
margin: 'array',
|
margin: 'array',
|
||||||
opacity: 'number',
|
opacity: 'number',
|
||||||
fontSize: 'number',
|
fontSize: 'number',
|
||||||
|
filter: 'function',
|
||||||
synchronousPlayback: 'boolean',
|
synchronousPlayback: 'boolean',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -55,6 +57,40 @@ export default class Danmuku {
|
|||||||
return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;
|
return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get marginTop() {
|
||||||
|
const { clamp } = this.utils;
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const value = this.option.margin[0];
|
||||||
|
|
||||||
|
if (typeof value === 'number') {
|
||||||
|
return clamp(value, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'string' && value.endsWith('%')) {
|
||||||
|
const ratio = parseFloat(value) / 100;
|
||||||
|
return clamp($player.clientHeight * ratio, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Danmuku.option.margin[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
get marginBottom() {
|
||||||
|
const { clamp } = this.utils;
|
||||||
|
const { $player } = this.art.template;
|
||||||
|
const value = this.option.margin[1];
|
||||||
|
|
||||||
|
if (typeof value === 'number') {
|
||||||
|
return clamp(value, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof value === 'string' && value.endsWith('%')) {
|
||||||
|
const ratio = parseFloat(value) / 100;
|
||||||
|
return clamp($player.clientHeight * ratio, 0, $player.clientHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Danmuku.option.margin[1];
|
||||||
|
}
|
||||||
|
|
||||||
filter(state, callback) {
|
filter(state, callback) {
|
||||||
return this.queue.filter((danmu) => danmu.$state === state).map(callback);
|
return this.queue.filter((danmu) => danmu.$state === state).map(callback);
|
||||||
}
|
}
|
||||||
@@ -160,8 +196,6 @@ export default class Danmuku {
|
|||||||
|
|
||||||
this.option.speed = clamp(this.option.speed, 1, 10);
|
this.option.speed = clamp(this.option.speed, 1, 10);
|
||||||
this.option.maxlength = clamp(this.option.maxlength, 10, 100);
|
this.option.maxlength = clamp(this.option.maxlength, 10, 100);
|
||||||
this.option.margin[0] = clamp(this.option.margin[0], 0, 200);
|
|
||||||
this.option.margin[1] = clamp(this.option.margin[1], 0, 200);
|
|
||||||
this.option.opacity = clamp(this.option.opacity, 0, 1);
|
this.option.opacity = clamp(this.option.opacity, 0, 1);
|
||||||
this.option.fontSize = clamp(this.option.fontSize, 12, 100);
|
this.option.fontSize = clamp(this.option.fontSize, 12, 100);
|
||||||
|
|
||||||
@@ -348,6 +382,7 @@ export default class Danmuku {
|
|||||||
border: 'boolean|undefined',
|
border: 'boolean|undefined',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!this.option.filter(danmu)) return this;
|
||||||
if (!danmu.text.trim()) return this;
|
if (!danmu.text.trim()) return this;
|
||||||
if (danmu.text.length > this.option.maxlength) return this;
|
if (danmu.text.length > this.option.maxlength) return this;
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ function calculatedTop(danmus) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function getDanmuTop(ins, danmu) {
|
export default function getDanmuTop(ins, danmu) {
|
||||||
const [marginTop, marginBottom] = ins.option.margin;
|
|
||||||
const { $player } = ins.art.template;
|
const { $player } = ins.art.template;
|
||||||
|
|
||||||
const danmus = ins.queue
|
const danmus = ins.queue
|
||||||
@@ -67,7 +66,7 @@ export default function getDanmuTop(ins, danmu) {
|
|||||||
item.$state === 'emit' &&
|
item.$state === 'emit' &&
|
||||||
item.$ref &&
|
item.$ref &&
|
||||||
item.$ref.style.fontSize === danmu.$ref.style.fontSize &&
|
item.$ref.style.fontSize === danmu.$ref.style.fontSize &&
|
||||||
item.$ref.offsetTop <= $player.clientHeight - marginBottom
|
item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
.map((item) => {
|
.map((item) => {
|
||||||
@@ -82,22 +81,22 @@ export default function getDanmuTop(ins, danmu) {
|
|||||||
.sort((prev, next) => prev.top - next.top);
|
.sort((prev, next) => prev.top - next.top);
|
||||||
|
|
||||||
if (danmus.length === 0) {
|
if (danmus.length === 0) {
|
||||||
return marginTop;
|
return ins.marginTop;
|
||||||
}
|
}
|
||||||
|
|
||||||
danmus.unshift({
|
danmus.unshift({
|
||||||
top: 0,
|
top: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
height: marginTop,
|
height: ins.marginTop,
|
||||||
width: $player.clientWidth,
|
width: $player.clientWidth,
|
||||||
});
|
});
|
||||||
|
|
||||||
danmus.push({
|
danmus.push({
|
||||||
top: $player.clientHeight - marginBottom,
|
top: $player.clientHeight - ins.marginBottom,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
height: marginBottom,
|
height: ins.marginBottom,
|
||||||
width: $player.clientWidth,
|
width: $player.clientWidth,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user