Tieba_Insert_MusicLink

贴吧自定义插入mp3链接

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        Tieba_Insert_MusicLink
// @namespace   tieba
// @description 贴吧自定义插入mp3链接
// @include     http://tieba.baidu.com/*
// @require     http://libs.baidu.com/jquery/1.9.0/jquery.js
// @grant       GM_addStyle
// @version     3.0.2
// @author	  初代作者为校长之怒/修复(绯色)
// ==/UserScript==

/***
2014年之前版本信息丢失,且本脚本真正的作者早已无更新
2014/6/1 修复火狐吧友说该脚本在chrome的浮动回帖框会出现两个插入框的问题(在此吐槽,狐吧基佬跑去使用chrome闹哪样)
*/
//JQuery支持

//音乐链接面板 GUI界面
var musicUrl = '<span class="label">歌名</span><input style="width:100px" id="musicUrlTitle" placeholder="输入歌曲名" value="">';
musicUrl += '&nbsp;<span class="label">链接</span><input style="width:300px" id="musicUrl" placeholder="输入链接" value="">';
musicUrl += '&nbsp;<span id="convertLinks" class="btn" >插入音乐链接</span><span id="Check_status" style="color:red;display:none">歌名和链接不能为空</span>';
//css
var css = '.label{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}\
.btn{font-size: 12px;height: 25.6px;line-height: 25.6px;padding: 0px 2px;transition-property: #000, color;\
transition-duration: 0.3s;\
box-shadow: none;\
background: none repeat scroll 0% 0% #00A1CB;\
color: #FFF;\
text-shadow: none;\
border: medium none;}';
GM_addStyle(css);

//调用控制
addNodeInsertedListener('#tb_rich_poster_container', function() {
	$("#tb_rich_poster").append(musicUrl);
	$('#convertLinks').click(check);
});

//函数 检查表单

function check() {
	if (($('#musicUrlTitle').val() == '') || ($('#musicUrl').val() == '')) {
		$('#Check_status').css('display', 'block');
		setTimeout(function() {
			$('#Check_status').hide();
		}, 2000);
	} else {
		location.href = "javascript:rewriteGetContent();void(0);";
		convertLinks();
	}
}
//插入函数 插入音乐

function convertLinks() {
	var url = $('#musicUrl').val();
	$('#musicUrl').val('');
	var title = $('#musicUrlTitle').val();
	if (url.indexOf('http://') == -1 && url.indexOf('https://') == -1 && url.indexOf('ftp://') == -1)
		url = 'http://' + url;
	var temp = '<img data-height="95" data-width="400"';
	temp += ' title="http://box.baidu.com/widget/flash/bdspacesong.swf?from=tiebasongwidget&amp;url=';
	temp += url;
	temp += '&amp;name=' + encodeURIComponent(title) + '&amp;artist=';
	temp += '&amp;extra=&amp;autoPlay=false&amp;loop=true"';
	temp += 'src="http://tieba.baidu.com/tb/editor/v2/music.png" class="BDE_Music">';
	$("#ueditor_replace").html($('#ueditor_replace').html() + temp);
	$('.dialogJ,.dialogJmodal').remove();
}

//函数 元素精确定位

function addNodeInsertedListener(elCssPath, handler, executeOnce, noStyle) {
	var animName = "anilanim",
		prefixList = ["-o-", "-ms-", "-khtml-", "-moz-", "-webkit-", ""],
		eventTypeList = ["animationstart", "webkitAnimationStart", "MSAnimationStart", "oAnimationStart"],
		forEach = function(array, func) {
			for (var i = 0, l = array.length; i < l; i++) {
				func(array[i]);
			}
		};
	if (!noStyle) {
		var css = elCssPath + "{",
			css2 = "";
		forEach(prefixList, function(prefix) {
			css += prefix + "animation-duration:.001s;" + prefix + "animation-name:" + animName + ";";
			css2 += "@" + prefix + "keyframes " + animName + "{from{opacity:.9;}to{opacity:1;}}";
		});
		css += "}" + css2;
		GM_addStyle(css);
	}
	if (handler) {
		var bindedFunc = function(e) {
			var els = document.querySelectorAll(elCssPath),
				tar = e.target,
				match = false;
			if (els.length !== 0) {
				forEach(els, function(el) {
					if (tar === el) {
						if (executeOnce) {
							removeNodeInsertedListener(bindedFunc);
						}
						handler.call(tar, e);
						return;
					}
				});
			}
		};
		forEach(eventTypeList, function(eventType) {
			document.addEventListener(eventType, bindedFunc, false);
		});
		return bindedFunc;
	}
}
//函数 元素精确定位取消绑定

function removeNodeInsertedListener(bindedFunc) {
	var eventTypeList = ["animationstart", "webkitAnimationStart", "MSAnimationStart", "oAnimationStart"],
		forEach = function(array, func) {
			for (var i = 0, l = array.length; i < l; i++) {
				func(array[i]);
			}
		};
	forEach(eventTypeList, function(eventType) {
		document.removeEventListener(eventType, bindedFunc, false);
	});
}

//度娘处理函数改写(来自猫酱和小鹿姐)

function rewriteGetContent() {
	var b = test_editor.getContent;
	test_editor.getContent = function() {
		cr_flash = [];
		var d = b.call(test_editor);
		d = d.replace(/&#39;/g, "'").replace(/&quot;/g, '"').replace(/(^(<br\/>)+)|((<br\/>)+$)/g, "");
		var embeds = d.match(/<embed[^>]*>/g);
		if (embeds) {
			var f = '<embed allowfullscreen="true" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" scale="noborder" src="#{url}" class="BDE_Music" width="400" height="95"/>';
			$('#ueditor_replace .BDE_Music').each(function() {
				var g = $.tb.format(f, {
					url: $(this).attr('title')
				});
				cr_flash.push(g);
			});
			for (var i = 0; i < embeds.length; i++)
				d = d.replace(embeds[i], cr_flash[i]);
		}
		return d;
	};
}
location.href = "javascript:"+String(rewriteGetContent) + ";void(0)";