JSer.info stat library
npm install jser-statJSer.info stat library
npm install jser-stat
- http://jser.info/source-data/items.json
- jser/source-data
- jser/jser.infoの記事元となるサイトのデータを一つのJSONとして固めたもの
- http://jser.info/posts.json
- jser.infoの投稿した記事のデータ
API Document: http://jser.info/stat-js/
#### new JSerStat([rawItems, rawPosts]);
Automatically load rawItems and rawPosts in Node.js.
``js`
var DefaultData = require("jser-stat").DefaultData;
var JSerStat = require("jser-stat").JSerStat;
var stat = new JSerStat(DefaultData.items, DefaultData.posts);
var startTime = Date.now();
var firstWeek = stat.findJSerWeek(1);
var weeks = stat.findJSerWeeksBetween(new Date("2013-01-31T15:00:00.000Z"), new Date("2015-06-01T13:22:37.167Z"));
var theItem = stat.findItemWithURL("http://d.hatena.ne.jp/brazil/20110131/1296419283");
console.log(theItem);
/*
JSerItem {
title: '実行間隔を調整する - はてなダイアリー - 無料で簡単。広告のないシンプルなブログをはじめよう!',
url: 'http://d.hatena.ne.jp/brazil/20110131/1296419283',
content: '一定間隔内で一度のみ実行する throttle、\n一定間隔に呼び出され無ければ実行する debounce についての解説。\nそれぞれ用途や図解も付いていて大変わかりやすい。',
tags: [],
date: Sat Jan 01 2011 00:00:00 GMT+0900 (JST),
relatedLinks: [] }
*/
Manually load rawItems and rawPosts in Browser.
`js`
function fetchURL(URL) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', URL);
req.onload = function () {
if (req.status == 200) {
resolve(req.response);
} else {
reject(Error(req.statusText));
}
};
req.onerror = function () {
reject(Error(req.statusText));
};
req.send();
});
}
function getStat() {
return Promise.all([
fetchURL("http://jser.info/posts.json"),
fetchURL("http://jser.info/source-data/items.json")
]).then(([postString. itemsString]) => {
var posts = JSON.parse(postString).reverse();
var items = JSON.parse(itemsString);
var jSerStat = new JSerStat(items, posts);
return jSerStat;
});
}
jser-stat has these model.
- src/models/JSerItem.js from jser/source-data
- src/models/JSerItemRelatedLink.js is sub model of JSerItem.
- src/models/JSerPost.js from jser/jser.github.io
- src/models/JSerWeek.js is JSerItem + JSerPost
return JSerItems between two dates
return all JSerWeeks
return JSerWeeks between two dates
number start with 1.
return JSerWeek at the number.
return JSerWeek contain the itemObject.
return JSerItem match the URL.
return JSerItems that related the argument item.
Install jser-stat and add update-jser-stat command
$(npm bin)/update-jser-stat
Update data/items.json adn data/posts.json
npm test
1. Fork it!
2. Create your feature branch: git checkout -b my-new-featuregit commit -am 'Add some feature'
3. Commit your changes: git push origin my-new-feature`
4. Push to the branch:
5. Submit a pull request :D
MIT