/* * @title はてなハイクの投稿をまとめてダイアリーに * @description はてなハイクの一日分の投稿をまとめてはてなダイアリーに投稿します。はてなにログインした状態で、はてなハイクで実行してください。 (事前にコメント中に示したスタイルシートを設定しておくと、ハイクっぽく表示されます。) * @license MIT License */ javascript: /* Use this style sheet to format Haiku entries appropriately in Diary/Group: >< */ var header = document.getElementById ('header-username'); var hatenaId = header ? header.getAttribute ('data-name') : null; hatenaId = hatenaId || 'my'; // hatenaId = prompt ('hatenaId', hatenaId); var date = new Date (); date.setTime (date.getTime () - 12 * 60 * 60 * 1000); var m = date.getMonth () + 1; if (m < 10) m = '0' + m; var d = date.getDate (); if (d < 10) d = '0' + d; date = date.getFullYear () + '-' + m + '-' + d; var xhr = new XMLHttpRequest (); xhr.open ('GET', '/' + hatenaId + '/activities.json?per_page=100&date=' + date, true); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status < 300) { processData (JSON.parse (xhr.responseText)); } } }; xhr.send (null); void (0); function processData (data) { var entries = []; var haikuDomain = location.hostname; for (var i = 0; i < data.items.length; i++) { var item = data.items[i]; var container = document.createElement ('div'); // Use "a" in "h3" to enable Hatena Star in Hatena Diary/Group container.innerHTML = '
'; var haikuEntry = container.firstChild; var haikuTarget = haikuEntry.firstChild; haikuTarget.firstChild.href = item.star_url; haikuTarget.lastChild.href = 'http://' + haikuDomain + '/' + item.target.url_name + '/'; haikuTarget.lastChild.title = item.target.url_name; haikuTarget.lastChild.firstChild.data = item.target.display_name; var haikuBody = haikuEntry.childNodes[1]; if (item.reply_to_eid) { haikuBody.firstChild.href = 'http://' + haikuDomain + '/' + item.reply_to_author.url_name + '/' + item.reply_to_eid; haikuBody.firstChild.firstChild.data = item.reply_to_author.display_name; } else { haikuBody.removeChild (haikuBody.firstChild); } haikuBody.lastChild.firstChild.data = item.body_haiku_text.replace (/\bhttps?:\/\/[\x21-\x7E]+\.(?:jpe?g|png|gif)\b/gi, function (u) { return '[' + u + ':image]'; }).replace (/\[\[([^\[\]]+)\]\]/g, function (_, k) { return '[h:keyword:' + k + ']' }); var haikuInfo = haikuEntry.lastChild; var date = new Date (item.created_on * 1000); haikuInfo.firstChild.firstChild.data = date.toLocaleString (); haikuInfo.firstChild.href = item.star_url; haikuInfo.childNodes[2].firstChild.data = item.source_target.display_name; haikuInfo.childNodes[2].href = 'http://' + haikuDomain + '/' + item.source_target.url_name + '/'; haikuInfo.childNodes[4].href = item.star_url; entries.push (container.innerHTML); } var string = '