Skip to content

Instantly share code, notes, and snippets.

@Qofar
Last active December 24, 2015 07:48
Show Gist options
  • Save Qofar/6765794 to your computer and use it in GitHub Desktop.
Save Qofar/6765794 to your computer and use it in GitHub Desktop.
livedoor ReaderのピンをGoogle Bookmarksに保存するGreasemonkeyスクリプト http://la.ma.la/blog/diary_200605070200.htmをとりあえず動くようした
// ==UserScript==
// @name LDR_gbsaver
// @description Save pins into Google Bookmarks
// @namespace http://ma.la/
// @include http://reader.livedoor.com/reader/*
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @version 1.0.3
// ==/UserScript==
// http://la.ma.la/blog/diary_200605070200.htm
(function(w){
var enable_p = true;
var enable_v = true;
var regex = /<smh:signature>(.+)<\/smh:signature>/;
var sig = "";
// customize your label
function make_label(){
// yyyy-mm
var dt = new Date;
var year = dt.getFullYear();
var month = dt.getMonth() + 1;
var day = dt.getDate();
function zerofill(num){
return num < 10 ? "0"+num : num;
}
month = zerofill(month);
day = zerofill(day);
var ym = [year, month].join("-");
// folder
var folder = w.subs_item(w.State.now_reading).folder;
return ["LDR",folder,ym].join(",");
}
// get sig
function get_Sig(){
window.setTimeout(function() {
GM_xmlhttpRequest({
method: "get",
url: "https://www.google.com/bookmarks/lookup?output=rss&num=10",
onload: function(res){
if(res.status === 200 &&
res.finalUrl.indexOf("https://www.google.com/bookmarks/") === 0 &&
res.responseText.match(regex)){
sig = new String(RegExp.$1);
}else{
w.message("Google Bookmarks - not login...");
}
}
})
}, 0);
}
get_Sig();
// init
function add_link(){
var buttons = document.getElementById("control_buttons").getElementsByTagName("ul")[0];
var li = document.createElement("li");
li.className = "button icon";
li.innerHTML = [
'<a href="http://www.google.com/bookmarks/" target="_blank">',
'<img src="http://www.google.com/favicon.ico" border="none" style="width: 16px; height: 16; padding-top: 3px;">',
'</a>'
].join("");
buttons.appendChild(li)
}
add_link();
document.addEventListener("keydown", function(e){
if((enable_p && e.keyCode === 80 || enable_v && e.keyCode === 86) &&
!e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey &&
!/^input|^textarea/i.test(e.target.tagName)){
var item = w.get_active_item(true);
if(!item) return;
var url = item.link;
var title = item.title;
// url = url.replace(/#.*$/, '');
gb.save(url, title, make_label());
}
},true);
function GBSaver(logger){
// this.action = 'https://www.google.com/bookmarks/mark';
logger = logger || function(){};
function form_encode(param){
var buf = [];
for(var key in param){
var value = param[key];
buf.push(
encodeURIComponent(key)+"="+
encodeURIComponent(value)
)
}
return buf.join("&");
}
this.save = function(url,title,label){
logger("sending private data to Google ... ");
var postdata = form_encode({
sig: sig,
bkmk: url,
title: title,
labels: label,
prev: "/lookup"
});
window.setTimeout(function() {
GM_xmlhttpRequest({
method: "post",
headers: {"Content-type": "application/x-www-form-urlencoded"},
url: "https://www.google.com/bookmarks/mark",
data: postdata,
onload: function(res){
if(res.status === 200 &&
res.finalUrl.indexOf("https://www.google.com/bookmarks/") === 0 &&
res.responseText.indexOf(url) > -1){
logger("Google Bookmarks - " + title);
}else{
logger("Google Bookmarks... Failed - please retry later.");
get_Sig();
}
}
})
}, 0);
}
}
var gb = new GBSaver(w.message);
})(unsafeWindow);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment