以前にblogger.comのgdata APIで作ったブックマークレットが、一昨日突然何もしてないのに動かなくなったが、昨日突然動くようになった。なんだったんだろう?
で、使っているうちに、Tunblrみたいな引用機能がほしくなったので、ちょっと改良してみた。テキストの引用しかできないけど。
これ↓をブックマークに登録し、(Firefox限定。IEは知らん、というか、ちょっと直すだけでいいはず。)
javascript:void%20window.open('https://www.example.com/blogthis.html?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&selection='+encodeURIComponent(document.getSelection()),'blogthis');
これ↓をどこかのサーバに置く。(localhostでも可)
で、使っているうちに、Tunblrみたいな引用機能がほしくなったので、ちょっと改良してみた。テキストの引用しかできないけど。
これ↓をブックマークに登録し、(Firefox限定。IEは知らん、というか、ちょっと直すだけでいいはず。)
javascript:void%20window.open('https://www.example.com/blogthis.html?url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&selection='+encodeURIComponent(document.getSelection()),'blogthis');
これ↓をどこかのサーバに置く。(localhostでも可)
<html> <head> <title>blog this page</title> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("gdata", "1.x"); google.setOnLoadCallback(init); var BLOGGER_AUTH_URL = 'http://www.blogger.com/feeds'; var BLOGGER_LIST_URL = 'http://www.blogger.com/feeds/default/blogs'; var BlogPress = { service: null, blogs: [], cuurrentBlogNum: 0 // modify this according your blog settings. }; function el(id) { return document.getElementById(id); } function changeStatus(status) { el('status').innerHTML = 'Status: ' + status; }; function loginOrOut() { var token = google.accounts.user.checkLogin(BLOGGER_AUTH_URL); if(token) { google.accounts.user.logout(); init(); } else { google.accounts.user.login(BLOGGER_AUTH_URL); } } function init() { var param = new Array(); var query = window.location.search.substring(1); var params = query.split('&'); for(var i = 0; i < params.length; i++) { var pos = params[i].indexOf('='); if(pos > 0) { param[params[i].substring(0, pos)] = params[i].substring(pos + 1); } } el('title').value = decodeURIComponent(param['title']); el('url').value = decodeURIComponent(param['url']); if(undefined != param['selection'] && '' != param['selection']) { el('comment').value = '『' + decodeURIComponent(param['selection']) + '』'; } var token = google.accounts.user.checkLogin(BLOGGER_AUTH_URL); if(token) { el('login').value = "logout"; BlogPress.service = new google.gdata.blogger.BloggerService('GoogleInc-bloggerOffline-1'); getBlogs(); el('submit').disabled = false; } else { el('login').value = "login"; el('submit').disabled = true; } } function getBlogs() { var query = new google.gdata.blogger.BlogQuery(BLOGGER_LIST_URL); BlogPress.service.getBlogFeed(query, handleBlogsFeed, handleError); } function handleBlogsFeed(resultsFeedRoot) { var blogsFeed = resultsFeedRoot.feed; BlogPress.blogs = blogsFeed.getEntries(); var blog = BlogPress.blogs[BlogPress.cuurrentBlogNum]; var title = blog.getTitle().getText(); el('postTo').innerHTML = 'Post to ' + title; } function handleError(error) { changeStatus(error.cause ? error.cause.statusText : error.message); }; function submit() { var title = el('title').value; var link = '<a href="'+el('url').value+'">'+el('url').value+'</a>'; var content = link + "</br>\n" + el('comment').value; var blogPostEntry = new google.gdata.blogger.PostEntry(); blogPostEntry.setTitle(google.gdata.atom.Text.create(title)); blogPostEntry.setContent(google.gdata.atom.Text.create(content, 'html')); var blog = BlogPress.blogs[BlogPress.cuurrentBlogNum]; var blogPostHref = blog.getEntryPostLink().getHref(); BlogPress.service.insertEntry(blogPostHref, blogPostEntry, handleEntryPost, handleError); } function handleEntryPost(entryRoot) { changeStatus('Successfully added.'); } </script> </head> <body> <img src="pumpkin_64.png" alt="An image of the same domain is needed somehow." /> <div><input id="login" type="button" value="login" onClick="loginOrOut()" /></div> <hr> <div id="postTo"></div> <div>Title: <input type="text" id="title" size=70 /></div> <div>URL: <input type="text" id="url" size=70/></div> <div>Commnet: <br/><textarea id="comment" rows=20 cols=50></textarea></div> <div><input id="submit" type="button" value="submit" onClick="submit()" /></div> <div id="status">Not posted yet.</div> </body> </html>