nodebb-plugin-bilibili
Version: 
NodeBB Plugin that allows users to embed BiliBili videos inline in their posts.
34 lines (32 loc) • 1.28 kB
JavaScript
; (function (bili) {
	"use strict";
	var converts = [
		{ // Video
			from: /<a href="(?:https?:\/\/)?(?:www\.)?bilibili\.(?:tv|com)\/video\/av(\d+).*?">.+<\/a>/g,
			to: '<div class="embed-responsive embed-responsive-16by9">' +
				'<iframe allowfullscreen="" scrolling="no" src="//player.bilibili.com/player.html?aid=$1&as_wide=1" ' +
				'style="border:0;height:100%;left:0;position:absolute;width:100%"></iframe></div>'
		},
		{
			// b23 video (short url)
			// eg: https://b23.tv/av*****
			from: /<a href="(?:https?:\/\/)?(?:www\.)?b23\.(?:tv|com)\/av(\d+).*?">.+<\/a>/g,
			to: '<div class="embed-responsive embed-responsive-16by9">' +
				'<iframe allowfullscreen="" scrolling="no" src="//player.bilibili.com/player.html?aid=$1&as_wide=1" ' +
				'style="border:0;height:100%;left:0;position:absolute;width:100%"></iframe></div>'
		}
	];
	bili.parse = function (data, callback) {
		try {
			for (var i = 0; i < converts.length; i++)
				data.postData.content = data.postData.content.replace(converts[i].from, converts[i].to);
			callback(null, data);
		} catch (ex) {
			callback(ex, data);
		}
	};
	bili.addScripts = function (scripts, callback) {
		scripts.push('/assets/src/bilibili.js');
		callback(null, scripts);
	}
})(module.exports);