There are 18 previous versions of this script.
// ==UserScript==
// @version 1.1
// @name 구글 블로거 도구(트랙백 보내기, 딜리셔스, 텀블러,관련글 검색)
// @description 단순하지만 강력한 기능을 제공하는 구글 블로거용 그리즈몽키 스크립트입니다. 트랙백 보내기, 딜리셔스 링크, 텀블러 링크,마가린 링크, 다음뷰 전송, 관련글 검색 기능을 제공합니다.(by dorajistyle)
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js
// @license (CC) BY 3.0 ; http://creativecommons.org/licenses/by/3.0/
// @author JoongSeob Vito Kim (dorajissanai@nate.com)
// @copyright JoongSeob Vito Kim (http://userscripts.org/users/dorajistyle)
// @icon http://i786.photobucket.com/albums/yy144/dorajistyle/Blog/favicon.png
// @namespace http://userscripts.org/users/119646/scripts
// @source http://userscripts.org/scripts/show/119646
// @identifier http://userscripts.org/scripts/source/119646.user.js
// @include htt*://*blogger.com/blogger.g?*#editor/target=post*
// @include htt*://*blogger.com/blogger.g?*#allposts*
// @include htt*://*blogger.com/blogger.g?*
// ==/UserScript==
saved_hash = window.location.hash;
var channel_map = {
"다음뷰사용안함":"NO",
"다음뷰자동전송":"AUTO",
"---라이프---":"",
"일상다반사":"http://v.daum.net/tb/ch/lifestory",
"취미":"http://v.daum.net/tb/ch/hobby",
"요리":"http://v.daum.net/tb/ch/recipe",
"맛집":"http://v.daum.net/tb/ch/restaurant",
"여행":"http://v.daum.net/tb/ch/travel",
"연애":"http://v.daum.net/tb/ch/love",
"패션뷰티":"http://v.daum.net/tb/ch/fashion",
"건강":"http://v.daum.net/tb/ch/health",
"육아":"http://v.daum.net/tb/ch/childcare",
"반려동물":"http://v.daum.net/tb/ch/pet",
"군대":"http://v.daum.net/tb/ch/army",
"국외생활":"http://v.daum.net/tb/ch/global",
"재미":"http://v.daum.net/tb/ch/humor",
"---문화연예---":"",
"TV":"http://v.daum.net/tb/ch/tv",
"스타":"http://v.daum.net/tb/ch/star",
"영화":"http://v.daum.net/tb/ch/movie",
"음악":"http://v.daum.net/tb/ch/music",
"책":"http://v.daum.net/tb/ch/book",
"만화":"http://v.daum.net/tb/ch/ani",
"공연전시":"http://v.daum.net/tb/ch/theater",
"창작":"http://v.daum.net/tb/ch/series",
"문화":"http://v.daum.net/tb/ch/culture",
"---IT과학---":"",
"IT":"http://v.daum.net/tb/ch/it",
"과학":"http://v.daum.net/tb/ch/science",
"게임":"http://v.daum.net/tb/ch/game",
"인터넷":"http://v.daum.net/tb/ch/internet",
"카메라":"http://v.daum.net/tb/ch/camera",
"모바일":"http://v.daum.net/tb/ch/mobile",
"---스포츠---":"",
"축구":"http://v.daum.net/tb/ch/soccer",
"해외축구":"http://v.daum.net/tb/ch/worldsoccer",
"야구":"http://v.daum.net/tb/ch/baseball",
"해외야구":"http://v.daum.net/tb/ch/worldbaseball",
"농구":"http://v.daum.net/tb/ch/basketball",
"배구":"http://v.daum.net/tb/ch/vollyball",
"골프":"http://v.daum.net/tb/ch/golf",
"스포츠일반":"http://v.daum.net/tb/ch/sportsgeneral",
"---경제---":"",
"생활경제":"http://v.daum.net/tb/ch/money",
"주식펀드":"http://v.daum.net/tb/ch/stock",
"부동산":"http://v.daum.net/tb/ch/estate",
"자동차":"http://v.daum.net/tb/ch/car",
"비즈니스":"http://v.daum.net/tb/ch/business",
"취업직장":"http://v.daum.net/tb/ch/job",
"---시사---":"",
"사회":"http://v.daum.net/tb/ch/society",
"정치":"http://v.daum.net/tb/ch/politics",
"국제":"http://v.daum.net/tb/ch/world",
"미디어":"http://v.daum.net/tb/ch/media",
"교육":"http://v.daum.net/tb/ch/education"};
contents = [];
contents.push("<select id='channel_select_box'>");
$.each(channel_map,function(k) {contents.push("<option value='"+channel_map[k]+"'>"+k+"</option>");});
contents.push("</select>");
var select_box_contents = contents.join('');
trackback_manager();
setInterval(observe_hash,1000);
function observe_hash() {
if(saved_hash != window.location.hash) {
trackback_manager();
saved_hash = window.location.hash;
//GM_log("Hash Changed : "+saved_hash);
}
}
function trackback_manager(){
$(function() {
var allpost = /#allpost/i.exec(window.location.hash);
//GM_log("mode hash = "+allpost);
if(allpost !=null) {
i=0;
isIntervalRunning = setInterval( function(){
//GM_log("table length"+i+" : "+$('div.blogg-visible-on-select').length);
i++;
visible_on_select_div = $('div.blogg-visible-on-select')
if(visible_on_select_div.length>0) {
links=new Array();
visible_on_select_div.each(function(index){
//GM_log("mode each = "+$(this).find('a').length);
if ($(this).find('a').length > 3) {
$(this).bind('click',function (e) {
GM_setValue('articleURL', $(this).find('a').eq(1).prop('href'));
//GM_log("Finally! "+GM_getValue('articleURL'));
});
}
});
clearInterval(isIntervalRunning);
GM_setValue('loaded', true);
}
}, 500);
}
//GM_log("Loaded! "+GM_getValue('loaded') +" value : "+GM_getValue('articleURL'));
var trackback_box = $("#trackback_box");
if(GM_getValue('articleURL')) {
var $body = $("#blogger-app");
var $optionHolder = $($body.find('div.optionHolder')[0]);
var url = GM_getValue('articleURL');
var title_node = $('input.titleField.textField')[0];
var text_node = $('#postingHtmlBox');
var trackback_form = "<div id='trackback_box'><div><div class='GMUUXGEDPIB selected'><div class='GMUUXGEDOIB blogg-title'> <a href='javascript:;' kind='click'> <span class='GMUUXGEDMIB'></span><span>블로거 도구</span> </a> </div><div class='GMUUXGEDIKB'><span class='GMUUXGEDALB GMUUXGEDNHB'></span>관련글<br/><button type='button' id='link_r_article' class='blogg-button'>가져오기</button><button type='button' id='more_articles' class='blogg-button'>관련글 더보기</button><br/><ul id='r_article'/> </div><div class='GMUUXGEDIKB'><span class='GMUUXGEDALB GMUUXGEDNHB'></span><span>트랙백</span> </div><div class='GMUUXGEDIKB'><button type='button' id='send_trackback' class='blogg-button blogg-primary'>보내기</button> <button type='button' id='link_delicious' class='blogg-button'>딜리셔스</button> <button id='link_tumblr' class='blogg-button' type='button'>텀블러</button><button type='button' id='link_margarin' class='blogg-button'>마가린</button><br/>"+select_box_contents+"<br/><span class='GMUUXGEDALB GMUUXGEDCIB'></span><span id='trackback_result'/><br/><textarea cols='100'rows='10' wrap='soft' style='width:100%' id='trackback_area'/></div></div> </div></div>";
if (trackback_box.length > 0) {
trackback_box.replaceWith(trackback_form);
} else {
$optionHolder.append(trackback_form);
}
var $trackback_area = $('#trackback_area')[0];
$('#send_trackback').click(function () {
var trackback_field = $($trackback_area).prop('value');
var title = $body.find(title_node).prop('value');
var excerpt = $body.find(text_node).prop('value').replace(/\n*<\/?[^>]+>\n*/gi, '').substring(0,200)+"...";
channel_selected = $("#channel_select_box").prop('value');
if(channel_selected != "NO") {
var $tags_node = $($optionHolder.find('div')[7]);
var tags = $tags_node.text().replace(/\s/gi,'').split(/,/);
var channel ="";
if(channel_selected == "AUTO") {
for(i=0,len=tags.length;i<len;i++) {
channelmap = channel_map[tags[i]];
if (channelmap !== undefined && channelmap.length > 0) channel=channelmap;
}
} else if(channel_selected.length > 0){
channel=channel_selected;
}
if(channel.length > 0) {
if(trackback_field.length > 0) trackback_field+="\n";
trackback_field+=channel;
trackback_field+='\n';
}
}
alert("다음의 주소로 트랙백을 보냅니다 : \n"+trackback_field);
var trackbacks = trackback_field.split(/\n/);
doTrackback(title,excerpt,trackbacks,url);
});
$('#link_delicious').click(function () {
var title = $body.find(title_node).prop('value');
var excerpt = $body.find(text_node).prop('value').replace(/\n*<\/?[^>]+>\n*/gi, '').substring(0,200)+"...";
var $tags_node = $($optionHolder.find('div')[7]);
var tags = $tags_node.text().replace(/\s/gi,'');
window.open("http://www.delicious.com/save?v=5&noui&jump=close&url="+encodeURIComponent(url)+"&title="+encodeURIComponent(title)+"¬es="+encodeURIComponent(excerpt)+"&tags="+tags,"_delicious");
});
$('#link_tumblr').click(function () {
var title = $body.find(title_node).prop('value');
var excerpt = $body.find(text_node).prop('value').replace(/\n*<\/?[^>]+>\n*/gi, '').substring(0,200)+"...";
window.open("http://www.tumblr.com/share/link?url="+encodeURIComponent(url)+"&name="+encodeURIComponent(title)+"&description="+encodeURIComponent(excerpt),"_tumblr");
});
$('#link_margarin').click(function () {
var title = $body.find(title_node).prop('value');
window.open("http://mar.gar.in/post/popup_post/&qIsFrame=0&qTitle="+encodeURIComponent(title)+"&qURL="+url,"_margarin");
});
$('#link_r_article').click(function () {
var title = $body.find(title_node).prop('value');
var left = title.indexOf(']') > -1 ? title.indexOf(']')+1 : 0;
var right = title.indexOf('(') > -1 ? title.indexOf('(') : title.length;
title = title.substring(left,right);
search_submit(title);
$(this).hide();
});
$('#more_articles').click(function () {
var title = $body.find(title_node).prop('value');
var left = title.indexOf(']') > -1 ? title.indexOf(']')+1 : 0;
var right = title.indexOf('(') > -1 ? title.indexOf('(') : title.length;
title = title.substring(left,right);
window.open("http://www.google.co.kr/search?num=50&hl=ko&lr=&newwindow=1&tbo=1&as_qdr=all&biw=1291&bih=618&noj=1&tbm=blg&q="+encodeURIComponent(title),"_search");
});
GM_setValue('loaded', false);
GM_setValue('articleURL',false);
}
else {
if (trackback_box.length > 0) {
trackback_box.html('');
}
}
});
}
function doTrackback(title,excerpt,trackbacks,url) {
GM_log("Url :"+url+"\nExcerpt : "+excerpt+"\ntitle : "+title+"\nTrackback total :"+trackbacks.length);
GM_setValue('success',0);
GM_setValue('failed',0);
GM_setValue('progress',0);
GM_setValue('sending_count',0);
GM_setValue('trackback_count',trackbacks.length);
GM_setValue('blogName',unsafeWindow.BloggerClientFlags[54]);
if(!trackbacks || !url)
return;
//for(i in trackbacks) trackback_submit(trackbacks[i],title,excerpt,url);
for(i=0,len=trackbacks.length;i<len;i++) {
//GM_log("trackbacks"+i+" : "+trackbacks[i]);
trackback_submit(trackbacks[i],title,excerpt,url);
}
}
function trackback_submit(trackback,title,excerpt,url) {
var tb = trackback;
header_data = {'User-Agent':'Trackback','Content-Type':'application/x-www-form-urlencoded;charset=utf8;'};
input_data = 'url='+encodeURIComponent(url)
+'&title='+encodeURIComponent(title)
+'&blog_name='+encodeURIComponent(GM_getValue('blogName'))
+'&excerpt='+encodeURIComponent(excerpt);
if(tb.trim().length == 0) {
GM_setValue('trackback_count',GM_getValue('trackback_count')-1);
} else {
tb = tb.toLowerCase();
if(tb.indexOf("http") == -1) tb = "http://"+tb;
GM_setValue('sending_count',GM_getValue('sending_count')+1);
GM_setValue('trackback'+GM_getValue('sending_count'),tb);
window.setTimeout(GM_xmlhttpRequest({'method':'POST',
'url':tb,
'headers':header_data,
'onload':trackback_callback,
'data':input_data
}), 3000);
}
}
function trackback_callback(data) {
GM_setValue('progress',GM_getValue('progress')+1);
var progress = GM_getValue('progress');
var trackback_count =GM_getValue('trackback_count');
var trackback_addr = GM_getValue('trackback'+progress);
try {
$('#trackback_result').html("Sending... "+progress+" / "+trackback_count);
var xmlDoc = $($.parseXML(data.responseText));
var error = parseInt(xmlDoc.find("error").text());
switch(error) {
case 0:
GM_log("트랙백 보내기 성공("+trackback_addr+")");
GM_setValue('success',GM_getValue('success')+1);
break;
default:
var error_message = xmlDoc.find('message').text();
GM_log("트랙백 보내기 실패 ("+trackback_addr+") : "+error_message);
GM_setValue('failed',GM_getValue('failed')+1);
}
} catch(e) {
GM_log("Send Trackback Error : "+e);
GM_setValue('failed',GM_getValue('failed')+1);
}
$('#trackback_result').html("전체 : <b>"+trackback_count+"</b> (<span style='color:blue'>성공 : <b>"+GM_getValue('success')+"</b></span> , <span style='color:red'> 실패 : <b>"+GM_getValue('failed')+"</b></span>)");
}
function search_submit(title) {
var query= encodeURIComponent(title);
var surl = 'http://www.google.co.kr/search?num=10&newwindow=1&tbo=1&as_qdr=all&aq=f&aqi=&aql=&oq=&gs_rfai=&ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&tbm=blg&q='+query;
$("#r_article").replaceWith("<ul id='r_article'><li><b>읽는중...</b></li></ul>");
GM_xmlhttpRequest({'method':'GET',
'url':surl,
'onload':search_callback
});
}
function search_callback(data) {
//var parser = new DOMParser();
//var xmlDoc = parser.parseFromString(data.responseText, "application/xml");
//var xmlDoc = $($.parseXML(data.responseText));
//$xml = $( xmlDoc );
var ol = $("#rso",data.responseText);
var results = ol.find("div.vsc");
//href =ol.find("a.l");
//text = ol.find("span.st");
var links = "<ul id='r_article'>";
var href="";
var text="";
var h3="";
var ra = [];
var $v;
var aho = "<a target='_ra' href='";
var ato = "'>";
var ac = "'</a>";
for(i=0,len=results.length;i<len;i++) {
$v = $(results[i]);
h3 = $($v.find("a.l")[0]).text();
href =$v.find("a.l")[0];
text_node = $v.find("div.st")[0];
if(text_node !== undefined) text = $(text_node).text();
links+="<li><b>";
links+=aho;
links+=href;
links+=ato;
links+=h3;
links+=ac;
links+="</b>";
links+=text;
links+="</li>";
ra.push(h3);
}
links+="</ul>";
$("#r_article").replaceWith(links);
}