cxxの日記

2008-12-02

[]TomblooTumblrのquote/videoをreblogするとき、クロスポスト先には引用元のURLをpostする 11:09 はてなブックマーク - TomblooでTumblrのquote/videoをreblogするとき、クロスポスト先には引用元のURLをpostする - cxxの日記

仕組み上、たまに間違ったURLを送ってしまいます。

ファイルをダウンロードしてFirefoxのプロファイルフォルダ内のtombloo/scriptフォルダに置き、Firefoxを再起動してください。Tomblooでquoteをpostするときにダブルクオートでくくるは意味もなくreblogを除外していたので、あわせて更新しました。

LDR + TomblooDashboard + Tomblooとも併用できます。

誤マッチを減らすために少し変更しました。(2008-12-03 20:21)

URLのunescape(2008-12-05)

誤マッチを減らすため安全寄りにしました。(2008-12-07)

addAround(
	Tombloo.Service.extractors.ReBlog, 'convertToParams',
	function(proceed, args) {
		var ps = proceed(args);
		var form = args[0];
		var reVia = /<p><a [^>]*>[^<]*<\/a>:<\/p>\s*<blockquote>\s*/g;
		var reA = /^(?:<p>)?<a href="([^"]+)">([^<]*)<\/a>/;
		
		switch (form['post[type]']) {
		case 'quote':
			var source = form['post[two]'];
			if (source.match(reA)) {
				ps.itemUrl = unescapeHTML(RegExp.$1);
				ps.item = unescapeHTML(RegExp.$2);
			}
			break;
		case 'video':
			var embed = form['post[one]'];
			var caption = form['post[two]'].replace(reVia, '');
			if (embed.match(/<a href="([^"]+)">([^<]*)<\/a>/)) {
				ps.itemUrl = unescapeHTML(RegExp.$1);
				ps.item = unescapeHTML(RegExp.$2);
			}
			else if (caption.match(reA)) {
				ps.itemUrl = unescapeHTML(RegExp.$1);
				ps.item = unescapeHTML(RegExp.$2);
			}
			if (embed.indexOf('http') == 0) {
				ps.itemUrl = unescapeHTML(embed);
				if (!ps.item)
					ps.item = unescapeHTML(
						caption.replace(/<[^>]*>/g, '').replace(/[\n\r]{2,}/g, '\n').trim()
					);
			}
			break;
		}
		return ps;
	}
);