IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

AutoPagerize の SITEINFO を JSON 化するブックマークレット

実際に使われている XPath のデータを大量に欲しかったので

どうしよーって悩んでたら


。。。!!!AutoPagerize があるじゃん!!!
ってことで SITEINFO を JSON 化するブックマークレット作った。(既出?

ブックマークレット

javascript:(function(){var result = document.evaluate('//textarea[@class="autopagerize_data"]',document, null, 7, null); var array = [];for (var i = 0, l = result.snapshotLength; i < l; i ++) {var data = result.snapshotItem(i).value;var json = '({' + data.replace(/\s*$/, '').replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/$/mg, '\'').replace(/(^\w+:)\s*/mg, '$1\'').split(/\n/).join(',') + '})';array.push(json);}/*try { eval('[' + array.join(',') + ']'); alert('ok'); } catch(e) { alert('ng') }*/var t=document.createElement('textarea');document.body.insertBefore(t, document.body.firstChild);var s=t.style;s.padding='0';s.margin='auto 0';s.border='solid 1em gray';s.width='90%';s.height='20em';t.value='[' + array.join(',') + ']';})();

このページ → http://swdyh.infogami.com/autopagerize で実行してください

実行した状態


中身はだいたいこんな感じになってます。

// XPath で textarea 取得
var result = document.evaluate('//textarea[@class="autopagerize_data"]', document, null, 7, null);

// それぞれをJSON 化
var array = [];
for (var i = 0, l = result.snapshotLength; i < l; i ++) {
  var data = result.snapshotItem(i).value;
  var json = '({' + data.replace(/\s*$/, '').replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/$/mg, '\'').replace(/(^\w+:)\s*/mg, '$1\'').split(/\n/).join(',') + '})';
  array.push(json);
}

/*try { eval('[' + array.join(',') + ']'); alert('ok'); } catch(e) { alert('ng') }*/ // DEBUG

// 結合
console.log('[' + array.join(',') + ']'); // JSON

解説

XPath で textarea を取ってきて正規表現でごりごり JSON にしてます。
Firefox でしか確認してません><
XPath が使えれば動きそうです。

まとめ

AutoPagerize 最高です><!
使ってください